算法思想
聚类是针对给定的样本,依据它们特征的相似度或距离,将其归并到若干个类或簇的数据分析问题。聚类属于无监督学习,因为只是根据样本的相似度或距离将其进行归并,而类或簇实现不知道。聚类算法有很多,这里主要介绍K均值聚类(K-means)。
聚类的分类
通过聚类得到的簇或类,本质是样本的子集。如果一个聚类方法假定一个样本只能属于一个类,那么该方法称为硬聚类,如果一个样本可以属于多个类,那么该方法称为软聚类。
K均值聚类
K均值聚类是基于样本集合划分的聚类算法,K均值聚类将样本集合划分为K个子集,构成K个类,将n个样本分到K个类中,每个样本到其所属类的中心的距离最小。K均值聚类的算法是一个迭代的过程,具体过程如下:
- 首先,随机确定K个初始点作为质心。
- 为数据集中的每个点寻找距其最近的质心
- 将其分配给改质心所对应的簇
- 然后计算每个簇中所有点的均值,作为类的新的中心;
- 重复以上步骤,直到收敛为止。
距离的度量
点与点之间的距离通常选择欧氏距离,当然也可以选用闵可夫斯基距离或马哈拉诺比斯距离。
K值的选取
K均值聚类中的类别数K值需要预先指定,而在实际应用中最优的K值是不知道的。解决这个问题的一个方法是尝试用不同的K值聚类,检验各自得到聚类结果的质量,推测最优的K值。聚类结果的质量可以用类的平均直径来衡量。一般地,类别数变小时,平均直径会增加;类别数变大超过某个值以后,评价直径会不变;而这个值正是最优的K值。实验时,可以使用二分查找,迅速找到最优的K值。
实现
利用KMeans算法解决了对地图上的点进行聚类的问题(在美国俄勒冈州波兰特地区有70个旅游景点,先需要决定一个将这些地方进行聚类的最佳策略,以便于安排交通工具抵达这些地点的中心,然后步行到每个景点)。实验结果表明,使用KMeans算法可以获得较好的聚类结果。
总结
(1)K均值聚类是常用的聚类算法,有以下特点:基于划分的聚类方法;以欧氏距离平方表示样本之间的距离,以中心或样本的均值表示类别;以样本和其所属类的中心之间的距离的总和为最优化的目标函数;得到的类别是平坦的、非层次化的;
(2)K均值聚类属于启发性方法,不能保证收敛到全局最优,初始中心的选择会直接影响聚类的结果。
(3)选择不同的初始中心,会得到不同的聚类结果。
(4)K均值聚类中的类别数K值需要预先指定,而在实际应用中最优的K值是不知道的。解决这个问题的一个方法是尝试用不同的K值聚类,检验各自得到聚类结果的质量,推测最优的K值。聚类结果的质量可以用类的平均直径来衡量。一般地,类别数变小时,平均直径会增加;类别数变大超过某个值以后,评价直径会不变;而这个值正是最优的K值。实验时,可以使用二分查找,迅速找到最优的K值。