通常,类似的数据点往往属于相似的组或簇,由它们与局部簇心的距离决定。正常数据距离簇中心的距离要进,而异常数据要远离簇的中心点。聚类属于无监督学习领域中最受欢迎的算法之一,关于聚类异常检测可分为两步:
①利用聚类算法聚类;
②计算各个样本点的异常程度:每个点的异常程度等于到最近类中心点的距离。
方法一:丢弃远离其他簇的小簇。
这种方法可以与任何聚类方法一起使用,但是需要最小簇大小和小簇与其他簇之间距离的國值。通常,该过程可以简化为丢弃小于某个最小尺寸的所有簇。这种方案对簇个数的选择高度敏感。此外,这一方案很难将离群点得分附加在对象上。注意,把一组对像看作离群点,将离群点的概念从个体对象扩展到对象组,但是本质上没有任何改变。
方法二:聚类所有对象,然后评估对象属于簇的程度。
对于基于原型的聚类,可以用对象到它的簇中心的距离来度量对象属于簇的程度。
对于基于目标函数的聚类方法,可以使用该目标函数来评估对象属于任意簇的程度。
特殊情况下,如果删除一个对象导致该目标的显著改进,则我们可以将对象分类为离群点。比如,对于K均值,删除远离其相关簇中心的对象能够显著地改进簇的误差的平方和(SSE)。
总而言之,聚类创建数据的模型,而非异常扭曲模型。
K-Means聚类
创建了k个类似的数据点群体,不属于这些簇(远离簇心)的数据样例则有可能被标记为异常数据。
DBSCAN
通过聚类时可以找出异常点
1个核心思想:基于密度
DBSCAN算法可以找到样本点的全部密集区域,并把这些密集区域当做一个一个的聚类簇。
2个算法参数:邻域半径R和最少点数目minpoints
刻画密集 —> 当邻域半径R内的点的个数大于最少点数目minpoints时,就是密集。
判断异常与 k-means 算法一致,在聚类时可以找出异常点。但不需要输入簇数 k 而且可以发现任意形状的聚类簇。