算法步骤:
1 随机选择k个点作为“中心点”
2 计算剩余的点到这k个中心点的距离,每个点被分配到最近的中心点组成聚簇
3 随机选择一个非中心点Or,用它代替某个现有的中心点Oj,计算这个代换的总代价S
4 如果S<0,则用Or代替Oj,形成新的k个中心点集合
1 随机选择k个点作为“中心点”
2 计算剩余的点到这k个中心点的距离,每个点被分配到最近的中心点组成聚簇
3 随机选择一个非中心点Or,用它代替某个现有的中心点Oj,计算这个代换的总代价S
4 如果S<0,则用Or代替Oj,形成新的k个中心点集合
5 重复2,直至中心点集合不发生变化
R语言的pam()实现算法:
PAM使用离差平方和(离差平方和(Sumof Squares of Deviations)是各项与平均项之差的平方的总和)来计算成本S(类似于ward距离的计算)
R语言的cluster包实现了PAM
K中心法的优点:对于“噪音较大和存在离群值的情况,K中心法更加健壮,不像Kmeans那样容易受到极端数据影响
K中心法的缺点:执行代价更高
> library(cluster)
>x <- iris[, 1:4]
> kc <- pa