聚类分析--k中心点算法

k中心点算法

思想:k-means是每次选簇的均值作为新的中心,迭代直到簇中对象分布不再变化。其缺点是对于离群点是敏感的,因为一个具有很大极端值的对象会扭曲数据分布。那么我们可以考虑新的簇中心不选择均值而是选择簇内的某个对象,只要使总的代价降低就可以。

PAM(partitioning around medoid,围绕中心点的划分)是具有代表性的k-medoids算法。

它最初随机选择k个对象作为中心点,该算法反复的用非代表对象(非中心点)代替代表对象,试图找出更好的中心点,以改进聚类的质量。
例子:
空间有5点{A,B,C,D,E}, 各点之间距离关系如表,根据pam算法进行聚类分析。

样本点ABCDE
A01223
B10243
C22015
D24103
A33530

假设分为2类,以A,B为中心点,初始聚类为{A,C,D}和{B,E}。接下来进行交换(以非代表对象代替代表对象),我们需要计算TCAC、TCAD、TCAE、TCBC、TCBD、TCBE
TCij表示用非中心点j替换中心点i所产生的代价。
计算TCAC:当A被C替换后,设一指针p遍历所有对象,判断他们是否聚到别的类里。

  1. 先看A是否变化:C成为中心点后,A离B比A离C近,故A被划分到B簇里。所产生的代价为d(A,B)-d(A,A)=1(d(i,j)表示i划分到中心点j的距离;差值表示属于新的中心点-属于旧的中心点产生的代价。)
  2. 看B是否变化:C成为中心点后,B当然离自己是最近的,不变
  3. 看C是否变化:C成为中心点后,C划分到C簇里,代价为d(C,C)-d(C,A)=-2
  4. 看D是否变化:C成为中心点后,D离C最近,故划分到C里,代价为d(D,C)-d(D,A)=-1;
  5. 看E是否变化:C成为中心点后,E离B最近,为0
    TCAC就等于上述的代价之和,为1+0-2-1+0=-2。
    同理需要计算TCAD=-2、TCAE=-1、TCBC=-2、TCBD=-2、TCBE=-2
    然后选取代价最小的替换,这里有多个选择,随便选择一个就行。选C的话,新的簇为{C,D}和{A,B,E}。新的簇中心为C,B,继续迭代计算直到收敛。

为了判定一个非代表对象orandom是否是当前一个代表对象oi的好的替代,对于每一个非中心点p,需要考虑下面4中情况:

第一种情况:p当前隶属于代表对象oj(A类中心点),如果oj被orandom所代替作为代表对象,并且p离其他代表对象oi(B类的中心点)最近,则p重新分配给oi。(i!=j)

第二种情况:p当前隶属于代表对象oj(A类中心点),如果oj被orandom所代替作为代表对象,并且p离orandom(新的中心点)最近,则p重新分配给orandom。(i!=j)

第三种情况:p当前隶属于代表对象oi(B类中心点),如果oj被orandom所代替作为代表对象,并且p仍然离oi最近,则p不发生变化。(i!=j)

第四种情况:p当前隶属于代表对象oi(B类中心点),如果oj被orandom所代替作为代表对象,并且p离orandom最近,则p重新分配给orandom。(i!=j)

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