如何用K Means做非监督的异常检测(outlier anomaly detection)?有什么思路吗?谢谢!
3个回答
类似于one-class SVM,先用干净的数据(没有异常点)得到一个K Means。然后把测试集(包含异常点)根据之前KMeans的结果进行聚类,如果一个点距离它最近的中心超过之前训练集里的最大距离的话,就判断它为异常点。
可以考虑离每簇的centroid最远的点,它们就是异常点。
SofaSofa数据科学社区DS面试题库 DS面经
补充下:可能用基于概率密度的聚类方法更好点。
-
数据痴汉
2018-06-07 13:34
如果没有训练数据,可以考虑人为设定一定比例(比如0.1%)为异常点,或把距离的histogram画出来,找个拐点设定距离的阈值,大于这个阈值的是异常点。
SofaSofa数据科学社区DS面试题库 DS面经