Machine Learning(Andrew) ex8-Anomaly Detection and Recommender Systems
椰汁笔记
Anomaly detection
这是也是一个非监督学习算法
- 异常检测做什么?
从一组数据中找到那些“异常”的数据,基于高斯分布(正太分布)。生活中的很多事情都是符合高斯分布的,对于数据也是如此。我们通过参数估计,估计出数据符合的高斯分布参数,当其中的数据分布在高斯分布中概率很小的地方,就认为这是异常数据。 - 具体怎么做?
选择可以描述异常状态的特征作为输入
x ( 1 ) , x ( 2 ) , … , x ( m ) x^{(1)},x^{(2)},\dots,x^{(m)} x(1),x(2),…,x(m)
根据以往的数据估计高斯分布的参数(对每一个特征)
μ j = 1 m ∑ i = 0 m x j ( i ) σ j 2 = 1 m ∑ i = 0 m ( x j ( i ) − μ j ) 2 \mu_j=\frac{1}{m}\sum_{i=0}^{m}x_j^{(i)} \\\sigma_j^2=\frac{1}{m}\sum_{i=0}^{m}(x_j^{(i)}-\mu_j)^2 μj=m1i=0∑mxj(i)σj2=m1i=0∑m(xj(i)−μj)2
对于一个新的数据,预测其发生概率
P ( x ) = ∏ j = 1 n P ( x j ; μ j ; σ j 2 ) = ∏ j = 1 n 1 2 π σ j e − ( x j − μ ) 2 j 2 σ j 2 P(x)=\prod_{j=1}^nP(x_j;\mu_j;\sigma_j^2)=\prod_{j=1}^n\frac{1}{\sqrt{2\pi}\sigma_j}e^{-\frac{(x_j-\mu_)^2j}{2\sigma_j^2}} P(x)=j=1∏nP(xj;μj;σj2)=j=1∏n2πσj1e−2σj2(xj−μ)2j
当概率小于一定阈值后认定为异常。 - 这个算法有什么缺点?
可以看到,之前的模型中对每个特征都是独立地处理,最后的组合只是简单的相乘。这样就是存在一些问题,特征之间的关联没有捕捉到。
升级的方式就是多元高斯分布,将不再单独考虑特征,而是将特征一起考虑,自动捕捉之间的关联。
参数的估计变为,其中的sigma为协方差矩阵
μ = 1 m ∑ i = 1 m x ( i ) Σ = 1 m ∑ i = 1 m ( x ( i ) − μ ) ( x ( i ) − μ ) T \mu=\frac{1}{m}\sum_{i=1}^{m}x^{(i)} \\\Sigma=\frac{1}{m}\sum_{i=1}^{m}(x^{(i)}-\mu)(x^{(i)}-\mu)^T μ=m1i=1∑mx(i)Σ=m1