根据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.4](#1.4 选择特征)>
- 参数估计(mu_j,sigma_j^2)或者(mu,Sigma)<见[1.5](#1.5 多元高斯分布)>
- 给定新样本,进行密度估计,如果比(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))