K中心点算法之PAM

KMedoids算法是KMeans的改进版,对噪声和孤立点更鲁棒。算法通过选择使总代价降低的簇内对象作为中心点。本文介绍了算法的步骤,并通过实例展示了其迭代过程,同时对比了KMeans的效率问题。最后,提供了实际应用中的代码和结果展示。
摘要由CSDN通过智能技术生成
一.PAM聚类算法:
        选用簇中位置最中心的对象,试图对n个对象给出k个划分;代表对象也被称为是中心点,其他对象则被称为非代表对象;最初随机选择k个对象作为中心点,该算法反复地用非代表对象来代替代表对象,试图找出更好的中心点,以改进聚类的质量;在每次迭代中,所有可能的对象对被分析,每个对中的一个对象是中心点,而另一个是非代表对象。对可能的各种组合,估算聚类结果的质量;一个对象Oi可以被使最大平方-误差值减少的对象代替;在一次迭代中产生的最佳对象集合成为下次迭代的中心点。

       对比kmeans:k-means是每次选簇的均值作为新的中心,迭代直到簇中对象分布不再变化。其缺点是对于离群点是敏感的,因为一个具有很大极端值的对象会扭曲数据分布。那么我们可以考虑新的簇中心不选择均值而是选择簇内的某个对象,只要使总的代价降低就可以。kmedoids算法比kmenas对于噪声和孤立点更鲁棒,因为它最小化相异点对的和(minimizes a sum of pairwise dissimilarities )而不是欧式距离的平方和(sum of squared Euclidean distances.)。一个中心点(medoid)可以这么定义:簇中某点的平均差异性在这一簇中所有点中最小。

 
二.算法描述:
wiki上有对pam算法的解释,这里着重对维基百科的例子进行介绍:k-medoids
k-medoid聚类算法的最常见实现为Partitioning Around Medoids (PAM)算法,PAM利用了贪婪搜索,不一定可以找到最优解,但是比穷尽搜索更快。
 
输入:簇的数目k和包含n个对象的数据
输出:k个簇,使得所有对象与其距离最近中心点的相异度总和最小

1. 初始化:随机挑选n个点中的k个点作为中心点。

2. 将其余的点根据距离划分至这k个类别中。

3. 当损失值减少时:

       1)对于每个中心点m,对于每个非中心点o:

              i)交换m和o,重新计算损失(损失值的大小为:所有点到中心点的距离和)

              ii)如果总的损失增加则不进行交换

 
另外的一个解释,和上面一样:
1) 任意选择k个对象作为初始的簇中心点
2) Repeat
3) 指派每个剩余对象给离他最近的中心点所表示的簇
4) Repeat
5) 选择一个未被选择的中心点Oi
6) Repeat
7) 选择一个未被选择过的非中心点对象Oh
8) 计算用Oh代替Oi的总代价并记录在S中
9) Until 所有非中心点都被选择过
10) Until 所有的中心点都被选择过
11) If 在S中的所有非中心点代替所有中心点后的计算出总代价有小于0的存在,then找出S中的用非中心点替代中心点后代价最小的一个,并用该非中心点替代对应的中心点,形成一个新的k个中心点的集合;
12) Until 没有再发生簇的重新分配,即所有的S都大于0.
 
  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值