什么是K-Means?
K-Means是一种无监督的分类学习算法。无监督分类是指人们事先对分类过程不施加任何的先验知识,而仅凭数据,即自然聚类的特性,进行“盲目”的分类;其分类的结果只是对不同类别达到了区分,但并不能确定类别的属性。
基本原理
K-Means 算法是以距离作为相似度的评价指标,用样本点到类别中心的误差平方和作为聚类好坏的评价指标,通过迭代的方法使总体分类的误差评分和函数达到最小的聚类方法。
K-Means的目标函数很简单:
现在的问题是:找到这k个类别中心的具体值U = {u1,u2,u3,.....,uk},使上面表达式的值达到最小。
但是有个问题是怎么确定聚类的中心,解决方法是迭代。
确定聚类中心:
先随意给定初始的类别中心,然后做聚类,通过迭代,不断调整这些类别中心,直到得到最好的聚类中心为止。
以下图为例,
从这个思路上来讲,其实我们可以直接根据目标函数找最小。我们发现,K-Means的迭代,其实用的是EM(期望最大化)的思想。这里先不做介绍
K-Means的缺陷
K-Means的原理很好理解,但是我们深究一下就会发现,这个随机取类别中心点,问题很大。
如果初始类别中心不好,可能会使算法陷入局部最小值,得到一个次优的分类结果,而得不到全局最优解。另外,初始类别中心不好的话,会导致迭代次数的增加,从而增加分类所用的时间。
参考
K-Means分类法介绍:https://blog.youkuaiyun.com/liangdas/article/details/25470895