聚类(clustering)
什么是聚类
聚类属于无监督学习(unsupervised learning),即无类别标记。
是数据挖掘经典算法之一。
算法接收参数k;然后将样本点划分为k个聚类;同一聚类中的样本相似度较高;不同聚类中的样本相似度较小
也就是说它不能自动识别类的个数(因为k要提前指定),随机挑选初始点为中心点计算。
算法描述
聚类的算法思想就是以空间中k个样本点为中心进行聚类,对最靠近它们的样本点归类通过迭代的方法,逐步更新各聚类中心,直至达到最好的聚类效果。
具体的算法步骤如下:
1. 选择k个聚类的初始中心
随机取k个中心点
2. 在第n次迭代中,对任意一个样本点,求其到k个聚类中心的距离,将该样本点归类到距离最小的中心所在的聚类
就是算一下样本点到这k个中心点的距离,到哪个中心点的距离最小则属于这一类。
3. 利用均值等方法更新各类的中心值
即在第2此迭代的时候来算各类的均值,将新的值作为下一次迭代的中心点
4. 对所有的k个聚类中心,如果利用2,3步的迭代更新后,达到稳定,则迭代结束。
如下图,为一个2-means的例子。也就是k=2,把样本分成2类。
(a)原始数据
(b)随机取两个中心点
(c)计算每个点到这两个中心点的距离,蓝色的点表示到蓝色点近的那些样本,红色点表示到红色点距离近的那些样本。
(d)求蓝色类中的均值,作为新的蓝色类的中心点。求红色类中的均值,作为新的红色类的中心点。
(e)继续算这些点到新的中心点的距离。
(f)达到平衡状态,迭代结束,即聚好类。
也就是再继续迭代的时候,分类不再有变化即达到了平衡状态或者收敛状态,就迭代结束了。
优缺点
优点
速度快,简单