如何用K Means做异常检测(outlier anomaly detection)?

  统计/机器学习 无监督学习    浏览次数:7660        分享
0

如何用K Means做非监督的异常检测(outlier anomaly detection)?有什么思路吗?谢谢!


 

ggg818   2018-05-05 13:00



   3个回答 
8

类似于one-class SVM,先用干净的数据(没有异常点)得到一个K Means。然后把测试集(包含异常点)根据之前KMeans的结果进行聚类,如果一个点距离它最近的中心超过之前训练集里的最大距离的话,就判断它为异常点。


SofaSofa数据科学社区DS面试题库 DS面经

matt   2018-10-06 14:39

3

可以考虑离每簇的centroid最远的点,它们就是异常点。

SofaSofa数据科学社区DS面试题库 DS面经

数据痴汉   2018-05-27 00:07

补充下:可能用基于概率密度的聚类方法更好点。 - 数据痴汉   2018-06-07 13:34
2

如果没有训练数据,可以考虑人为设定一定比例(比如0.1%)为异常点,或把距离的histogram画出来,找个拐点设定距离的阈值,大于这个阈值的是异常点。

SofaSofa数据科学社区DS面试题库 DS面经

Zealing   2018-10-07 05:17



  相关讨论

单一变量下的异常检测该怎么做?

kNN用来做异常点检测?

离群点、孤立点、异常点有什么区别吗?

如果数据不是正态分布,能用3sigma原则剔除异常值吗?

在训练前数据处理的时候,怎么剔除异常值?

学习曲线异常分析

如果不去掉异常值(outlier),会对线性回归模型有什么影响?

KMeans++是怎么选初始点的?

K-Means实现mini-batch online learning的原理是什么?

kernal kmeans是什么意思?和一般的kmeans的区别是什么?

  随便看看

统计学中的自变量和因变量分别是什么意思?

怎么对pandas dataframe做转置?

随机森林会发生过拟合(overfitting)吗?

pandas DataFrame中经常出现SettingWithCopyWarning

sklearn中的predict_proba方法的返回值的意义