机器学习(7)- 异常检测

根据Andrew Ng在斯坦福的《机器学习》视频做笔记,已经通过李航《统计学习方法》获得的知识不赘述,仅列出提纲。

1 异常检测

对数据建模,形成概率分布函数(p(x));检查(p(x_{test}))的值

e.g.

  • 欺诈检测:可以找出行为异常的用户
  • 工业领域
  • 数据中心的计算机监控

1.1 高斯分布/正态分布(x ~ N(mu,sigma^2))

(mu):平均值,控制钟形曲线的中心位置

(sigma^2):方差,控制钟形曲线的宽度

(p(x;mu,sigma^2)=frac{1}{sqrt{2pi}}exp(-frac{(x-mu)^2}{2sigma^2}))

参数估计

(mu=frac{1}{m}sum_{i=1}^mx^{(i)})

(sigma^2=frac{1}{m}sum_{i=1}^m(x^{(i)}-mu)^2)

密度估计

(p(x)=p(x_1;mu_1,sigma_1^2)p(x_2;mu_2,sigma_2^2)p(x_3;mu_3,sigma_3^2)cdots p(x_n;mu_n,sigma_n^2)=prod_{j=1}^np(x_j;mu_j,sigma_j^2))

1.2 异常检测算法

  1. 选择特征<见[1.4](#1.4 选择特征)>
  2. 参数估计(mu_j,sigma_j^2)或者(mu,Sigma)<见[1.5](#1.5 多元高斯分布)>
  3. 给定新样本,进行密度估计,如果比(epsilon)小,则异常

开发和评估

训练集:60%无异常的样本,估计特征的平均值和方差并构建(p(x))函数

交叉验证集:20%无异常的样本+50%异常的样本,使用交叉验证集选择(epsilon),根据(F_1)值来选择

测试集:20%无异常的样本+50%异常的样本

度量标准:

  • TP,FN,FP,TN
  • 精确率/召回率
  • (F_1-score)

1.3 异常检测 vs. 监督学习

异常检测 监督学习
非常少量的正向类(异常数据 (y=1)), 大量的负向类((y=0) 同时有大量的正向类和负向类
许多不同种类的异常。根据非常少量的正向类数据来训练算法非常难。 有足够多的正向类实例,足够用于训练算法。
未来遇到的异常可能与已掌握的异常、非常的不同。 未来遇到的正向类实例可能与训练集中的非常近似

1.4 选择特征

非高斯分布的特征:通过对数函数、开方等方法对特征进行修改,使其图形接近高斯分布

正常和异常样本相近:找出问题,创建新特征

1.5 多元高斯分布

不是对(p(x_i))建模,而是一次性对(p(x))建模;参数(mu)就是一个(n)维向量,(Sigma)是一个(n×n)的协方差矩阵

(p(x;mu,sigma^2)=frac{1}{(2pi)^{frac{n}{2}}|Sigma|^{frac{1}{2}}}exp(-frac{(x-mu)^TSigma^{-1}(x-mu)}{2}))

参数估计

(mu=frac{1}{m}sum_{i=1}^mx^{(i)})

(Sigma=frac{1}{m}sum_{i=1}^n(x^{(i)}-mu)(x^{(i)}-mu)^T)

可以发现,之前的高斯分布,它是这里的多元高斯分布的一种特殊情况,即(Sigma)矩阵的非对角线元素都为0

优点:可以自动捕获特征之间的关系→而原始模型就需要手动创建新特征

缺点:计算花费大;(m>n),否则协方差矩阵不可逆((mge 10n)

原文地址:https://www.cnblogs.com/angelica-duhurica/p/10962078.html