异常检测与推荐系统

Anomaly detection
这是也是一个非监督学习算法
异常检测做什么?
从一组数据中找到那些“异常”的数据,基于高斯分布(正太分布)。生活中的很多事情都是符合高斯分布的,对于数据也是如此。我们通过参数估计,估计出数据符合的高斯分布参数,当其中的数据分布在高斯分布中概率很小的地方,就认为这是异常数据。
具体怎么做?
选择可以描述异常状态的特征作为输入
x ( 1 ) , x ( 2 ) , … , x ( m ) x^{(1)},x^{(2)},\dots,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
对于一个新的数据,预测其发生概率
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}}
当概率小于一定阈值后认定为异常。
这个算法有什么缺点?
可以看到,之前的模型中对每个特征都是独立地处理,最后的组合只是简单的相乘。这样就是存在一些问题,特征之间的关联没有捕捉到。
升级的方式就是多元高斯分布,将不再单独考虑特征,而是将特征一起考虑,自动捕捉之间的关联。
参数的估计变为,其中的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
μ=
m
1
i=1
m
x
(i)
Σ=
m
1
i=1
m
(x
(i)
−μ)(x
(i)
−μ)
T
预测变为
P ( x ; μ ; Σ ) = 1 ( 2 π ) n 2 ∣ Σ ∣ 1 2 e − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) P(x;\mu;\Sigma)=\frac{1}{(2\pi)^{\frac{n}{2}}|\Sigma|^{\frac{1}{2}}}e^{-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)}
P(x;μ;Σ)=
(2π)
2
n
∣Σ∣
2
1
1
e
2
1
(x−μ)
T
Σ
−1
(x−μ)
这个模型有个前提就是m>n,而且协方差矩阵是非奇异矩阵。另外这个计算也是复杂的。
怎么评估算法的效果?
使用标签化的数据,计算F1score
怎么感觉异常检测可以用监督学习做呢?
总结一下异常检测和监督学习的适合场景
异常检测
(1)异常数据很少,y=1的数据很少
(2)正常数据很多,y=0的数据很多
(3)异常的类型太多
(4)未来异常的类型是未知的
典型应用:欺骗检测,监测机器
监督学习
(1)y=0和y=1的数据都很多
(2)异常的例子够多,且未来的异常与以往相同
典型应用:垃圾邮件分类,天气预测
————————————————
版权声明:本文为CSDN博主「生榨的椰汁」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44027820/article/details/104616231