k-means算法总结

目录

一、k-means算法原理

二、k-means算法目标函数是什么

三、总结


一、k-means算法原理 

k-menas是无监督的算法,其思想是将样本集中的样本按照样本间的距离划分为k个簇,让簇内的点尽量紧密地连在一起,而让簇间的距离尽量的大。(同一簇内的点距离越近,意味着两个样本的相似度越高,不同簇之间距离越远,意味着两个簇的相似度越低)

算法步骤

1、用先验知识或交叉验证选择一个合适的k值。

2、随机选择k个样本作为初始的质心。

3、计算每个样本点和各个质心的距离,将样本点标记为距离最小的质心所对应的簇。

4、重新计算每个的质心,取该簇中每个点位置的平均值。

5、重复2,3,4步直到k个质心都没有发生变化为止。

可见k-means算法时间复杂度为O(KN)

那么:k-means算法的k值该如何选择及其目标函数又是什么呢?


二、k-means算法目标函数

假设 D ={,, ...}  ,其中D为样本集,为向量

参数1 --> 质心 , ...

参数2 ---> 所属质心  { 1: 属于第k个质心 ;0:otherwise  例:k=3,如果样本属于第二个质心,则  表示为(010)的独热编码形式 }

基于以上假设条件,k-menas 目标函数为

        ( -   { 和 }  

解析:其中   表示样本只在当前所属质心计算一次,虽然加∑ ,但独热编码的形式,只计算所属质心距离,其他质心时为0,未参与距离计算。


四、总结

1、k-means算法是一种无监督的聚类算法。

2、k-means算法一定会收敛。

3、k-means算法总的时间复杂度为O(nk) [k=簇数,n=样本容量 ] 。

4、k-means算法的目标函数为:

indicator object

可使用EM算法优化目标函数,减少样本点到质心的距离。

5、由于k-means算法的目标函数是非凸函数,它没有全局最优解,只有局部最优解。因此k值选择越好,目标函数的值越好。

6、k-means算法主要用于用户分层、图像分割等方面。

你可能感兴趣的:(k-means算法总结)