简介
K-means算法是聚类算法中最简单的一种,但是里面包含的思想却不一般。K-means属于无监督学习,以往的回归、朴素贝叶斯、SVM等都是有类别标签y的,也就是说样例中已经给出了样例的分类。而聚类的样本中却没有给定y,只有特征x,假设宇宙星空中的点集可以表现成(X,Y,Z),聚类的目的就是为X找到潜在的Y,并将同类别的Y放在一起
算法描述
- 随机选取K个点作为质点
- 对于每一个样本点X,将其归类为距离质心点最近的类别
- 更新每个类别的质心点为隶属于该类别所有点的平均值
- 重复步骤二三,直至质心不变或变化很小
问题
1.K-means算法的第一个问题就是如何保证收敛,因为前面算法的结束条件就是收敛,下面我们来描述一下:
定义畸变函数J(c,u) ,表示每个样本点到其质心的距离平方和
此时我们的重点是研究如何研究是J函数最小,假设J函数没有函数达到最小值,那样我们就可以先固定每个类的质心,调整每个样例所属的类别来让J函数减小,或者固定类别,调整质心也可以使J减小。这两个过程就是内循环中使J函数减小的过程,当J函数最小时,u,c也同时收敛。
由于畸变函数J是非凸函数,意味着我们不能保证取得的最小值是全局最小值,也就是说k-means对质心初始位置的选取比较感冒,但一般情况下k-means达到的局部最优已经满足需求。但如果你怕陷入局部最优,那么可以选取不同的初始值跑多遍k-means,然后取其中最小的J对应的u
凸优化有个非常重要的定理,即任何局部最优解即为全局最优解。
EM思想:这里只是指出EM的思想,E步就是估计隐含类别y的期望值,M步调整其他参数使得在给定类别y的情况下,极大似然估计P(x,y)能够达到极大值。然后在其他参数确定的情况下,重新估计y,周而复始,直至收敛。其实总体还是一个迭代优化的过程。
缺点:K-means算法有两个缺点,第一、该方法对K个质心初始位置的选择比较感冒,一般而言k-means算法只能达到局部最优,因此K个质心初始位置不同,则达到的局部最优解也会不一样;第二、K值一般要根据先验知识,事先给定。