1算法说明
聚类(Cluster analysis)有时也被翻译为簇类,其核心任务是:将一组目标
object 划分为若干个簇,每个簇之间的 object 尽可能相似,簇与簇之间的 object
尽可能相异。聚类算法是机器学习(或者说是数据挖掘更合适)中重要的一部分,
除了最为简单的 K-Means 聚类算法外,比较常见的还有层次法
(CURE、CHAMELEON 等)、网格算法(STING、WaveCluster 等),等等。
较权威的聚类问题定义:所谓聚类问题,就是给定一个元素集合 D,其中每个
元素具有 n 个可观察属性,使用某种算法将 D 划分成 k 个子集,要求每个子集内
部的元素之间相异度尽可能低,而不同子集的元素相异度尽可能高。其中每个子集
叫做一个簇。
K-means 聚类属于无监督学习,以往的回归、朴素贝叶斯、SVM 等都是有类
别标签 y 的,也就是说样例中已经给出了样例的分类。而聚类的样本中却没有给定
y,只有特征 x,比如假设宇宙中的星星可以表示成三维空间中的点集 。聚类
的目的是找到每个样本 x 潜在的类别 y,并将同类别 y 的样本 x 放在一起。比如上
面的星星,聚类后结果是一个个星团,星团里面的点相互距离比较近,星团间的星
星距离就比较远了。
与分类不同,分类是示例式学习,要求分类前明确各个类别,并断言每个元素
映射到一个类别。而聚类是观察式学习,在聚类前可以不知道类别甚至不给定类别
数量,是无监督学习的一种。目前聚类广泛应用于统计学、生物学、数据库技术和
市场营销等领域,相应的算法也非常多。
2实例介绍
在该实例中将介绍 K-Means 算法,K-Means 属于基于平方误差的迭代重分配
聚类算法,其核心思想十分简单:
随机选择 K 个中心点;
计算所有点到这 K 个中心点的距离,选择距离最近的中心点为其所在的簇;
简单地采用算术平均数(mean)来重新计算 K 个簇的中心;
重复步骤 2 和 3,直至簇类不再发生变化或者达到最大迭代值;
输出结果。