异常检查(Anomaly Detection)
异常检测 (anomaly detection
背景
异常检测 (anomaly detection),或者又被称为“离群点检测” (outlier detection)。这是机器学习算法的一个常见应用。这种算法的一个有趣之处在于:它虽然主要用于非监督学习问题,但从某些角度看,它又类似于一些监督学习问题。
什么叫做异常
- 异常数据跟样本中大多数数据不太一样。
- 异常数据在整体数据样本中占比比较小。
异常检测主要用来识别欺骗。例如在线采集而来的有关用户的数据,一个特征向量中可能会包含如:用户多久登录一次,访问过的页面,在论坛发布的帖子数量,甚至是打字速度等。尝试根据这些特征构建一个模型,可以用这个模型来识别那些不符合该模式的用户。
算法
高斯分布开发异常检测算法
求出每一个特征的期望和方差
我们假设每个特征都服从参数不同的正态分布,同时也假设了每个特征变量互相独立
于是
这个模型就是用来监测异常值,选一个临界值
评价模型
评价一个异常检测系统,如果有一些带标签的数据,指出哪些样本是正常的,哪些样本是异常的。那么我们在训练集中放入正常的无标签的数据,在交叉验证集合测试集中放入带标签的异常数据,用训练集的数据拟合p(x)。接下来把正常的一些数据也放入交叉验证集和测试集中,然后使用p(x)进行判断。
训练集:验证集:测试集=6:2:2
然后在验证集和测试集中计算p(x),计算准确率,召回率,F1
具体的评价方法如下:
- 根据测试集数据,我们估计特征的平均值和方差并构建函数
- 对交叉检验集,我们尝试使用不同的值作为阀值,并预测数据是否异常,
- 根据F1值或者查准率与查全率的比例来选择, 选出后,针对测试集进行预测,计算异常检验系统值,或者查准率与查全率之比
与监督学习的区别
关于feature的选择
异常检测假设特征符合高斯分布,如果数据的分布不是高斯分布,异常检测算法也能够工作,但是最好还是将数据转换成高斯分布,
也可以对数据分组,求平均值,利用中心极限定理。
误差分析:
一个常见的问题是一些异常的数据可能也会有较高的值,因而被算法认为是正常的。这种情况下误差分析能够帮助我们,我们可以分析那些被算法错误预测为正常的数据,观察能否找出一些问题。我们可能能从问题中发现我们需要增加一些新的特征,增加这些新特征后获得的新算法能够帮助我们更好地进行异常检测。
我们通常可以通过将一些相关的特征进行组合,来获得一些新的更好的特征(异常数据的该特征值异常地大或小),例如,在检测数据中心的计算机状况的例子中,我们可以用CPU负载与网络通信量的比例作为一个新的特征,如果该值异常地大,便有可能意味着该服务器是陷入了一些问题中。
多元高斯分布
存在这样一种情况:每个特征变量都在高斯分布正常范围内,但是合起来看就不是了,为了在此时也能正确判断异常,需要用到多元高斯分布。
此时σ叫做协方差矩阵
如果变量互相独立,那么协方差矩阵非对角元都是0
Isolation Forest
未完待续