两种基于划分的聚类算法:K-means和K-medoids
【正所谓 “物以类聚,人以群分”,聚类聚类,就是把具有相同特性的“东西”聚为一类】
基于划分的聚类算法—思想
假设有一堆数据点(很多个),目的是要将这些点分为K个类(这个K你得事先知道)。
主要思想如下:
1:初始K个点作为初始的“代表点”。
2:计算那一堆散点到这个K个点的距离(也可以是其他度量方式),离K个点中的哪一个近,就把这个数据归到哪一类。至此,可以形成K个类。
3:重新计算“代表点”。
4:重复以上2到3的步骤,直至收敛(收敛的判断方式很多,比如代表点不在变化,损失函数不再变化等)
基于划分的聚类算法—K-means和K-medoids
K-means和K-medodis的不同之处主要就在于第3步不一样,计算“代表点”的方式不一样。
K-means聚类算法
该算法主要是通过求解对应类中所有点的Mean作为“代表点”,并参与迭代。
Mean的求法:
M e a n = 所 有 点 加 起 来 / 对 应 类 中 点 的 个 数 Mean={所有点加起来}/{对应类中点的个数} Mean=所有点加起来/对应类中点的个数
K-means聚类算法
该算法主要是通过求解对应类中所有点的Medoid作为“代表点”,并参与迭代。
Medoid具有的性质是:该Medoid到对应类中所有点的距离之和最小。具体的求解方法:
- 计算对应类中所有点到其他所有点的距离之和(强调一下是在对应类中,不要算到别人的类中去了)。
- 找出这个拥有最小距离之和的点,没错它就是你要找的Medoid。
其他的一些基于划分的聚类算法
主要有:k-modes、k-medians、kernel k-means、fuzzy c-means …