PAM算法的原理:
选用簇中位置最中心的对象,试图对n个对象给出k个划分;代表对象也被称为是中心点,其他对象则被称为非代表对象;最初随机选择k个对象作为中心点,该算法反复地用非代表对象来代替代表对象,试图找出更好的中心点,以改进聚类的质量;在每次迭代中,所有可能的对象对被分析,每个对中的一个对象是中心点,而另一个是非代表对象。对可能的各种组合,估算聚类结果的质量;一个对象Oi可以被使最大平方-误差值减少的对象代替;在一次迭代中产生的最佳对象集合成为下次迭代的中心点。
PAM算法的伪代码如下:
输入:簇的数目k和包含n个对象的数据库
输出:k个簇,使得所有对象与其距离最近中心点的相异度总和最小
(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.
该算法的优点与缺点:
(1) 消除了k-平均算法对于孤立点的敏感性。
(2) K-中心点方法比k-平均算法的代价要高
(3) 必须指定k
(4) PAM对小的数据集非常有效,对大数据集效率不高。特别是n和k都很大的时候。