Kmeans算法原理
2018-10-12 本文已影响6人
0过把火0
一句话解释kmeans
Kmeans是一种无监督的基于距离的聚类算法,其变种还有Kmeans++。
算法步骤
K: 描述了簇的数量,也就是应当聚合成的几何数。
Means:均值求解会是该算法的核心。
-
根据设定的聚类数 K ,随机地选择 K 个聚类中心(Cluster Centroid),这就好比古代乱世,天下诸侯并起而逐鹿。
-
评估各个样本到聚类中心的距离,如果样本距离第 i 个聚类中心更近,则认为其属于第 i 簇,这可以看做四方义士纷纷投奔诸侯,形成不同的势力。
-
计算每个簇中样本的平均(Mean)位置,将聚类中心移动至该位置,该过程可以被认为是诸侯调整战略根据地以达到最强的控制力和凝聚力。
综上,K-Means 的算法步骤能够简单概括为:
1-分配:样本分配到簇。
2-移动:移动聚类中心到簇中样本的平均位置。
注意,某些聚类中心可能没有被分配到样本,这样的聚类中心就会被淘汰(意味着最终的类数可能会减少)
Kmeans损失函数
和其他机器学习算法一样,K-Means 也要评估并且最小化聚类代价,在引入 K-Means 的代价函数之前,先引入如下定义:
引入代价函数:
实际上,K-Means 的两步已经完成了最小化代价函数的过程:
伪代码描述
Kmeans优缺点
优点:
1)原理比较简单,实现也是很容易,收敛速度快。
2)聚类效果较优。
3)算法的可解释度比较强。
4)主要需要调参的参数仅仅是簇数k。
缺点:
1)K值的选取不好把握
2)对于不是凸的数据集比较难收敛
3)如果各隐含类别的数据不平衡,比如各隐含类别的数据量严重失衡,或者各隐含类别的方差不同,则聚类效果不佳。
4) 采用迭代方法,得到的结果只是局部最优。
5) 对噪音和异常点比较的敏感。
Kmeans的偏向
数据呈圆形、凸型、在一起的簇的数据形状近似高斯分布的这些数据是kmeans喜欢的数据。