问题
给定m个无标签的数据点,将它们分成k个聚类,使得同一聚类内的点相似度高,不同聚类间的点相似度低
算法步骤
K-Means算法
-
随机初始化k个聚类中心
-
重复以下步骤直到收敛:
聚类分配步骤:
聚类中心更新步骤:
其中
代价函数(失真函数)
目标:最小化所有数据点到其对应聚类中心的平方距离之和
优化
随机初始化
推荐方法:
- 随机选择k个训练样本
- 将聚类中心设置为这k个样本的位置
注意:应保证
解决局部最优问题
多次随机初始化:
- 进行50-1000次不同的随机初始化
- 对每次初始化运行K-means算法
- 选择代价函数J最小的结果
选择聚类数K——肘部方法 (Elbow Method)
- 绘制不同K值对应的代价函数J
- 寻找曲线的”肘部”(斜率显著变化的点)
- 选择肘部对应的K值
局限性:很多时候肘部不明显