目录
一、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算法主要用于用户分层、图像分割等方面。
网友评论