1.什么是聚类
先来回顾一下本系列第一篇就讲到的机器学习的种类。
监督式学习:训练集有明确答案,监督学习就是寻找问题(又称输入、特征、自变量)与答案(又称输出、目标、因变量)之间关系的学习方式。监督学习模型有两类,分类和回归。
• 分类模型:目标变量是离散的分类型变量;
• 回归模型:目标变量是连续性数值型变量。
无监督学习:只有数据,无明确答案,即训练集没有标注目标变量。常见的无监督学习算法有聚类(clustering),由计算机自己找出规律,把有相似属性的样本放在一组,每个小组也称为簇(cluster)。
最早的聚类分析是在考古分类、昆虫分类研究中发展起来的,目的是找到隐藏于数据中客观存在的“自然小类”,“自然小类”具有类内结构相似、类间结构差异显著的特点,通过刻画“自然小类”可以发现数据中的规律、揭示数据的内在结构。
之前一起学了回归算法中超级典型的线性回归,分类算法中非常难懂的SVM,这两都是有监督学习中的模型,那今天就来看看无监督学习中最最基础的聚类算法——K-Means Cluster吧。
2.K-Means步骤
K-Means聚类步骤是一个循环迭代的算法,非常简单易懂:
- 假定我们要对N个样本观测做聚类,要求聚为K类,首先选择K个点作为初始中心点;
- 接下来,按照距离初始中心点最小的原则,把所有观测分到各中心点所在的类中;
- 每类中有若干个观测,计算K个类中所有样本点的均值,作为第二次迭代的K个中心点;
- 然后根据这个中心重复第2、3步,直到收敛(中心点不再改变或达到指定的迭代次数),聚类过程结束。
以二维平面中的点 X i = ( x i 1 , x i 2 ) , i = 1 , . . . , n X_{i}=(x_{i1},x_{i2}),i=1,...,n Xi=(xi1,xi2),i=1,...,n为例,用图片展示K=2时的迭代过程:
- 现在我们要将(a)图中的n个绿色点聚为2类,先随机选择蓝叉和红叉分别作为初始中心点;
- 分别计算所有点到初始蓝叉和初始红叉的距离, X i = ( x i 1 , x i 2 ) X_{i}=(x_{i1},x_{i2}) Xi=(xi1,xi2)距离蓝叉更近就涂为蓝色,距离红叉更近就涂为红色,遍历所有点,直到全部都染色完成,如图(b);
- 现在我们不管初始蓝叉和初始红叉了,对于已染色的红色点计算其红色中心,蓝色点亦然,得到第二次迭代的中心,如图(c );
- 重复第2、3步,直到收敛,聚类过程结束。
怎么样,很简单吧?看完K-Means算法步骤的文字描述,我们可能会有以下疑问:
- 第一步中的初始中心点怎么确定?随便选吗?不同的初始点得到的最终聚类结果也不同吗?
- 第二步中点之间的距离用什么来定义?
- 第三步中的所有点的均值(新的中心点)怎么算?
- K怎么选择?
3.K-Means的数学描述
我们先解答第2个和第3个问题,其他两个问题放到后面小节中再说。
聚类是把相似的物体聚在一起,这个相似度(或称距离)是用什么来度量的呢?这又得提到我们的老朋友——欧氏距离。
给定两个样本 X = ( x 1 , x 2 , . . . , x n ) X=(x_{1},x_{2},...,x_{n}) X=(x1,x2,...,xn)与 Y = ( y 1 , y 2 , . . . , y n ) Y=(y_{1},y_{2},...,y_{n}) Y=(y1,y2,...,yn),其中n表示特征数 ,X和Y两个向量间的欧氏距离(Euclidean Distance)表示为:
d i s t e d ( X , Y ) =