Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 584|回复: 0

机器学习之异常检测

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-7-20 10:52:11 | 显示全部楼层 |阅读模式

    前言

               以下内容是个人学习之后的感悟,转载请注明出处~ 

     

     

    简介

      在生活中,经常会遇到这样一个对象集,有个别的对象是与大部分对象不一样的,且前者是比较罕见的。我们通常

    需要去发现它,这就用到了非监督学习的异常检测算法,下面来举一些异常检测的应用:

    • 欺骗检测
    • 制造业质检
    • 动力环境监测
    • .........

      异常检测算法一般有以下几种:

    • 基于模型的技术:

        许多异常检测技术首先建立一个数据模型,异常是那些同模型不能完美拟合的对象。例如,数据分布的模型可以

      通过估计概率分布的参数来创建。如果一个对象不服从该分布,则认为他是一个异常。

    • 基于邻近度的技术:

        通常可以在对象之间定义邻近性度量,异常对象是那些远离大部分其他对象的对象。当数据能够以二维或者三维散

      布图呈现时,可以从视觉上检测出基于距离的离群点。

    • 基于密度的技术:

        对象的密度估计可以相对直接计算,特别是当对象之间存在邻近性度量。低密度区域中的对象相对远离近邻,可能

      被看做为异常。

     

    异常检测算法分析

      本文以基于模型的高斯分布异常检测算法为例,讲解异常检测的实现。

      高斯分布,又名正态分布,其均值为μ、 方差为σ2的概率密度函数如下公式所示,如果一个随机变量X服从这个分布,我们写

    作 X ~ N(μ,σ2)。此外,改变μ和σ,会使高斯分布曲线发生变化,其规律如下图所示:

                                                                                    
                                                                                

       首先,我们假设有一个数据集{x(1),x(2),x(3),.........,x(m)},其数据符合高斯分布,即 x(i)N(μ,σ2),那么我们可以得到如下公式:

                     

      根据数据集,可得出训练集:

                     

      利用上述训练集,求出每个特征对应的μj和σj,即可得到每个特征的概率密度函数p(xjjj),然后建立出异常检测模型:

                                                                                

      最后取需要进行异常检测的数据,代入上述的模型公式,若p(x)<ε,则为异常值。

      这里对异常检测算法的实现步骤做一下总结:

                                                             

     

     

    评估异常检测算法

      我们采用的是查准率/召回率结合F-Score的评估方法,数据集分为训练集、验证集和测试集,这些都在之前学过的

    机器学习之模型选择与改进中讲过,这里就不再赘述。

      注意:ε值的选择一般来说得靠经验,或者可以选择不同的ε值,通过评估方法来选择最合适的值。

     

    异常检测VS监督学习

      异常检测的思想就是选出异类,其本质是分类,那么和监督学习相比,有什么区别呢?其区别如下图所示,总结的来说,

    无非是当异常检测时,往往是异常点非常少的时候,根本无法用于监督学习,这也是使用异常检测的原因所在。

                                               

     

    设计特征

      上面提到的高斯分布异常检测算法,之所以能够达到我们想要的效果,是因为在数据集的特征都符合高斯分布的前提下,

    一旦分布规律偏差很大,效果就会很差。所以我们需要对不满足高斯分布的特征进行重新设计,让其符合高斯分布,一般可以

    通过对数转(log(x))进行转换。例如:

                     
      有时候我们还需要根据实际应用情况设计新的特征变量来帮助异常检测算法更好的检测离群点。举个检测网络系统的例子来
    看看怎样设计出更合理的特征:
                                                                

     

    多元高斯分布

      多元高斯分布有其优点也有其局限性,我们先来看看其优点。其优点是能够捕捉到上面模型捕捉不到的异常样本,
    来看一个例子:
    (1)我们的原始数据为下图所示(图左为二维的数据,图右为把两个特征分别当做高斯分布来建模)
                                                   
     
    (2)假如有个异常点(绿色样本点)如下图左中所示,其在下图右中的检测情况为:
                                                  
     
      从上图能够看出,这个绿色的异常样本在单独建模的模型中并不能检测出来。因此这就需要通过多元高斯分布构
    建模型来检测。 多元高斯分布的概率密度函数为:
                                                
      其中为n*n维协方差矩阵,为矩阵的行列式。
      下面我们来看一些例子,来说明向量和矩阵对概率密度函数的影响。 先来看的影响:
                                                    
                                                                                                         图一
                                                        
                                                                                                          图二
                                                             
                                                                                                          图三
      从上面三个图中可以看出当矩阵的副对角线都为0时,主对角线上的元素大小控制着概率密度函数俯瞰图的形状
    大小,至于具体到数字大小对应的形状,大家自己观察便知。
      再来看看主对角线不变,变化副对角线是如何影响的例子:
                                                           
                                                                                                        图四
                                                              
                                                                                                          图五  
      能够看出,副对角线控制的是倾斜程度。
      下面来看看对概率密度函数的影响:
                                                              
      从上图能够看出控制着图形的位置变化。
     
     
    多元高斯分布在异常检测上的应用
      介绍完多元高斯分布,下面我们来介绍下通过多元高斯分布推导出来的异常检测算法:
                                                                
      下面我们来看下多元高斯分布模型与多个一元高斯模型之间的关系:
                                                                   
      其实就是当多元高斯分布模型的协方差矩阵为对角矩阵,且对角线上的元素为各自一元高斯分布模型的方差时,
    二者是等价的。 下面来总结比较下多元高斯分布模型和多个一元高斯分布模型:
                                                                  
     
     

     

    以上是全部内容,如果有什么地方不对,请在下面留言,谢谢~

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-4-23 21:14 , Processed in 0.085705 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表