划分方法聚类(二)K-MEANS算法的改进

   本文将主要针对K-MEANS算法主要缺点的改进进行讲述。

(1)离群点,噪声点的改进:针对离群点、噪声点,通过离群点检测算法,去掉离群点与噪声点。数据挖掘方面,经常需要在做特征工程和模型训练之前对数据进行清洗,剔除无效数据和异常数据。异常检测也是数据挖掘的一个方向,用于反作弊、伪基站、金融诈骗等领域。常用的离群点检测算法有:

  A:基于统计的离群点检测:设定数据的分布模型,不和谐检验,发现离群点。前提条件:数据必须要十分充分。

  B: 局部离群点:一个对象相对于它的局部邻域,特别是关于局部密度,它是远离的。

局部离群因子检测方法LOF。该算法会给数据集中的每个点计算一个离群因子LOF,通过判断LOF是否接近于1来判定是否是离群因子。若LOF远大于1,则认为是离群因子,接近于1,则是正常点。

 LOF算法原理:

                (1)  计算每个对象与其他对象的欧氏距离

               (2)  对欧氏距离进行排序,计算第K距离以及第K邻域

               (3)  计算每个对象的可达密度。

               (4)  计算每个对象的局部离群点因子

               (5)对每个点的局部离群点因子进行排序,输出。

     LOF算法这里简单阐述一下,有兴趣的同学可以自行百度一下具体算法细节。

    

(2)K值选择的改进:  

        这方面的改进比较多,这里主要列举一下几种。

         A: 对于K值的选择,目前主要的方法是采用不同的K值进行聚类,然后根据评判函数,然后选择最佳的K值。这样做付出的时间较多,而且也不能保证结果的全局最优性。

        B:K值的自适应优化算法。主要思想就是选取适当的K值,在每一次迭代完之后(不是运行完整个聚类程序,而是迭代一次),进行K值的缩减,通过评价指标评价K值变化前后的评价值变化,以此来指导K值的变化。

  C:对数据集首先运行canopy算法,可以达到一个K值,以及大致的K个初始化聚类中心。这个算法后续再讲。

(3)初始聚类中心的选择

  A:对于初始聚类中心,选择距离尽可能远的K个点。先随机选择一个点作为第一个初始类簇中心点,然后选择距离该点最远的那个点作为第二个初始类簇中心点,然后再选择距离前两个点的最近距离最大的点作为第三个初始类簇的中心点,以此类推,直至选出K个初始类簇中心点。

B:选用层次聚类(Agnes等)或者Canopy算法进行初始聚类,然后利用这些类簇的中心点作为KMeans算法初始类簇中心点。

(4只能发现球状簇的改进:因为K-MEANS使用距离作为样本间的相似性的度量,所以只能发现球状簇。K-均值算法对于各类样本的边界是线性不可分以及类分布为非高斯分布以及类分布为非球形时,聚类效果较差。参照支持向量机SVM的核函数,将样本映射到另一个高维特征空间,原先的线性不可分可以变为线性可分或者近似线性可分,然后再进行聚类,即K。

   (5)标称属性 。K-众数算法。

(6局部收敛性。第一种方法就是改变初始簇中心,多次调试。第二种方法就是二分K-均值聚类算法。

    二分K-均值聚类算法:

(1) 将所有点看成一个簇

(2) 当簇数目小于K

对于每一个簇

计算总误差

在给定的簇上进行2-均值聚类

计算将该簇一分为二的总误差

            选择使得误差最小的那个簇进行划分操作。


其他划分方法聚类算法

      (1) K-众数聚类算法(K-modes):当属性为标称属性时,均值可能没有定义,因此引入了K-Modes算法。用簇众数代替簇均值来聚类标称数据。采用相异性度量来处理标称对象(K-均值是数值属性之间的距离),采用基于频率的方法来更新簇的众数。(标称属性问题)

       (2)K-原型方法(K-prototype):将K-均值与K-众数算法结合起来,分别应用于数值属性与标称属性。(K-MEANS+K-MODES

   (3)K-中心点聚类算法:K-均值算法对离群点敏感,因为离群点远离大多数数据,因此分配到一个簇时,严重扭曲簇的均值。因此K-中心点进行质心选择时,不再依靠中心点的选择,而是考虑用一个非代表对象替换代表对象,看是否能够提高聚类质量。尝试所有的替换,直到结果聚类的质量不可能被任何替换提高。这就是K-中心点一种流行的实现算法-PAM。质量用对象与其代表对象的平均相异度来衡量。当存在噪声与异常点时,K-中心点鲁棒性更好。因为中心点不容易受到异常点的影响。K-中心点每次迭代的复杂度为O(K(n-k)),当n和k都很大时,计算开销相当大。远高于K-均值。因此K-中心点算法适合在小型数据集上运行。

   (4)CLARA(Clustering LARgeApplication,大型应用聚类),基于抽样的方法,不考虑整个数据集,而是使用数据集的一个随机样本,然后使用PAM方法计算最佳中心点。CLARA由多个随机样本建立聚类。在一个随机样本上计算中心点的复杂度为O(ks^2+k(n-k))。CLARA依赖于样本的大小。PAM是在给定的数据集上选取K个最佳中心点,而CLARA目的是在整个数据集上选取K个最佳中心点,如果最佳的抽样中心点远离最佳的K个中心点,那么CLARA不能发现好的聚类。

     (5) CLARANS(Clustering large Application basedupon RANdomized Search,基于随机搜索的聚类大型应用):在数据集中随机选取K个对象作为当前中心点,随机选择一个当前中心点x和一个不是当前中心点的y进行替换,看看是否能够改善绝对误差。CLARANS进行这样的随机搜索L次。L步之后的中心点的集合被看做一个局部最优解。重复上述过程M次,返回最佳局部最优解作为最终的结果。


 以上几种算法基本都是针对K-MEANS算法的不足的来改进出来的形式。


    原文作者:聚类算法
    原文地址: https://blog.csdn.net/WOJIAOSUSU/article/details/56960103
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞