异常检测(Anomaly detection): 异常检测算法(应用高斯分布)

估计P(x)的分布--密度估计

我们有m个样本,每个样本有n个特征值,每个特征都分别服从不同的高斯分布,上图中的公式是在假设每个特征都独立的情况下,实际无论每个特征是否独立,这个公式的效果都不错。连乘的公式表达如上图所示。

估计p(x)的分布问题被称为密度估计问题(density estimation)

异常检测算法

1>找出一些能观察出异常行为的特征,尽可能尝试选择能够描述数据相关属性的特征。

2> 根据样本估计出参数的值,有n个特征每个特征都服从不同的正态分布,有不同的u和σ2,分别对这些u和σ2进行参数估计。

3> 检测新样本是否为异常值,需要计算出它的概率p(x),在上一步我们已经各个不同features的概率分布,通过联合概率来计算p(x),如果p(x)<ε,则它为异常值。

例子

我们根据我们的样本点(红色的点)估计出参数值(u1,u2,σ1,σ2)

对于给定的点,x(1)test和x(2)test计算它的p(x)=p(x1)*p(x2),给定ε为一个较小的值(0.02,对于ε如何取值将在后面讲到),判定p(x)是否小于ε来判断它是否为异常点。

从上图所示的三维图上来看,粉红色圈里面的点的高度(即p(x)的值)较外面的高,里面的点为正常点,外面的点为异常点。

总结

1>如何计算出p(x)来开发一种异常检测算法

2>通过给出的数据集进行参数估计,得到参数u和σ,然后检测新的样本,确定新样本是否异常,

异常检测(Anomaly detection): 异常检测算法(应用高斯分布)的相关教程结束。

相关推荐:

如何在Python中通过计算欧氏距离实现基础的最近邻分类算法?

欧氏距离计算函数怎么写才不出错? 直接用math.sqrt和sum手动算平方和开方最稳妥,避免依赖未安装的库。常见错误是传入维度不一致的向量,比如训练样本是4维,测试样本只给了3个值——运行时会报IndexError或得到错误结果。 实操建议: 在计算前用len(vec1)==len(vec2)做校...

如何使用Python中的Isolation Forest算法实现生产环境的异常检测?

IsolationForest在生产环境不适合直接用于高吞吐、低延迟的实时流式场景,因其为无监督批处理算法,需完整训练集且无法在线更新模型,实际应采用周期性离线打分或结合轻量代理模型实现近实时响应。 IsolationForest在生产环境是否适合实时异常检测? 不适合直接用于高吞吐、低延迟的实时流...

如何在Python中捕获并处理所有未知的异常?

正确捕获所有常规异常应使用exceptException:,而非except:或exceptBaseException:,因前者会吞掉KeyboardInterrupt、SystemExit等系统级信号,破坏程序中断语义与退出机制。 捕获所有异常的正确写法是exceptException:,不是ex...

PyAutoGUI 中 locateAllOnScreen 异常捕获的正确实践

locateAllOnScreen在未找到图像时会抛出pyscreeze.ImageNotFoundException,而直接exceptImageNotFoundException:无法捕获——必须显式导入并指定完整异常路径,否则异常将中断程序。本文详解标准捕获方式、安全遍历策略及实用规避技巧。 ...