机器学习算法-------聚类算法(一)--划分的聚类:(k-means,k-means++)

3、详细解释

3.1基于划分的聚类方法

基本思想:给定N个对象的数据集,根据聚类方法,划分为          K个划分,每个划分表示一个聚类,每一个对象划分到一个簇中,  K<=N,       聚类将数据划分为K个簇,且K个划分满足:

                             每个簇至少包含一个对象         每个对象属于且仅属于一个簇

给定划分的数目K,基于划分的方法,首先构建一个初始划分,后采用迭代的重定位的方法尝试在划分间移动对象来改进划分的质量。 

一个好的划分一般准则是 :在同一聚类中的对象之间尽可能‘接近’或者相关,不同聚类对象之间尽可能‘远离’,或不相关。   

 

Kmeans   (K平均,K均值)    Kmeans  对初始值是敏感的

      随机选择K个对象,作为初始的聚类中心,对剩余的对象根据其与各个簇中心的距离,将其赋予给距离最近的簇,然后计算每个簇的平均值,将这个平均值再作为聚类中心,不断重复,知道每个簇的聚类中心不再变化为止(准则函数收敛为止)

                        准则函数  常常使用   最小平方误差MSE    Minimum Squared-error

优点 :1、聚类问题的经典算法,简单快速  2、 处理大数据集,可伸缩性,高效率

       3.当簇是密集的时,效果较好

缺点: 1、在簇的平均值可被定义的情况下,才可使用

       2、必要先给定K(簇的数目),对初值敏感,不同初始值可能导致不同结果

        3、不适合发现非凸形状的簇///大小差别很大的簇

        4、对噪声和孤立点数据敏感

可作为其他聚类方法的基础算法,如谱聚类

 

Kmeasn++算法同原始的K-means算法的区别就在于初始中心点的选择。

原始K-means算法在开始随机选取数据集中K个点作为聚类中心,这样做的缺点就是,如果初始点的位置选择不当(例如都在一个簇里面),那么其最终的聚类结果将是非常糟糕的

  Kmeasn++算法:在选取第一个聚类中心(n=1)时同样通过随机的方法,而后则按照如下思路选择K个初始中心点:假设已经选取了n个初始聚类中心(0< n < K,同Kmeans一样,其K值都是已知的),则在选取第n+1个聚类中心时:距离当前“已有的”n个聚类中心越远的点会有更高的概率被选为第n+1个聚类中心。当然这也非常符合我们直觉:聚类中心当然是相互离得越远越好

 

(1)确定初始K个聚类中心

Step 1:从数据集中随机选取一个样本点作为初始聚类中心C1C1;

Step 2:首先计算每个样本与当前已有聚类中心之间的最短距离(即最近的聚类中心的距离),用D(x)D(x)表示;接着计算每个样本点被选为下一个聚类中心的概率D(x)2∑ni=1D(xi)2D(x)2∑i=1nD(xi)2。最后,按照轮盘法选择出下一个聚类中心;

Step 3:重复第2步知道选择出K个聚类中心;

(2)-(4)之后的步骤同原始K-means聚类算法相同;

你可能感兴趣的:(数据分析----机器学习算法)