机器学习入门笔记系列(9) | K-means 算法
2018-10-01 本文已影响5人
胖三斤66
样本 被分配到的簇的索引{1,2, ..., K}
第 k 簇的聚类中心
一、K-means 执行过程
K-Means 算法是最流行和广泛使用的无监督学习算法,用于自动将数据分组为相干子集。K-Means 算法属于聚类算法
下图展示 K = 2 时 K-means 算法执行过程实例。
K-means 聚类过程用文字总结一下 K=2时, K-means 算法的执行过程:
- 初始化初始化两个聚类中心;
- 簇分配:计算每个样本到两个聚类中心的距离,并将样本分配到离它最近的聚类中心所在的簇中;
- 更新聚类中心:计算两个簇中所有点的平均值,并将两个簇的聚类中心更新为该平均值;
- 重复(2),(3) 操作,直至迭代次数完成或者聚类中心不再改变。
二、K-means 算法
通过上述的执行过程,K-means 算法实现如下:
K-means 算法Tips : 如果出现有一个聚点在归类完成后,没有一个样本点属于该簇。通常做法是删除该聚点,此时变成 K-1 means;也可以没有初始化聚类中心
2.1 代价函数
K-means 代价函数简单的来解释,代价函数 = 每个样本与所在簇的聚类中心的距离平方的平均值
我们的优化目标就是 。如何实现这优化目标呢?
其实实现 一直贯穿于 K-means 算法。
- 簇分配:我们固定了聚类中心,即固定了 ,将样本分配到离它最近的聚类中心所在的簇中,这相当于当固定 ,通过改变 来 ;
- 更新聚类中心:我们固定了每个样本所在的簇,即固定了 ,计算每个簇的所有点的平均值并更新为簇的新的聚类中心,即改变了 ,这就实现 。
总结一下,就是:
K-means 优化目标Tips: K-means 的代价函数值不可能上升,它应该是不断下降。
2.2 随机初始化聚类中心
初始化聚类中心不同,最后形成的簇就会不同。如果初始化聚类中心不好,K-means 达到陷入局部最优情况,如下图所示。
那么,如何初始化聚类中心呢?这里有 2 点建议:
- ,即划分的簇的数量 K 应该小于样本数量 m;
- 建议随机选取样本中 K 个样本作为初始化的聚类中心
减小 K-means 陷入局部最优的解决方案:构建多组初始化聚类中心,分别执行 K-means 算法,最终选取代价函数值最小的那组。
多次随机初始化聚类中心实验证明,当 时,多次随机初始化方法对算法有很大的改善;而当 时,多次随机初始化方法不会对你的算法有很大的改善。
三、K-means 应用
K-means 应用除了上述,K-means 还可以运用于市场的划分等等实际场景中。
总结
K-mean 算法全过程参考文献
- 吴恩达机器学习 week8