13聚类算法kmeans
无监督学习
- 数据集只给出了特征没有给出标签
- 找到隐含在数据中的结构
聚类算法的用途
- 市场分割
- 社交网络分析
- 组织计算簇
- 了解银河系的构成
kmeans聚簇
- 簇分配
- 移动聚类中心,到簇均值处(此时簇代价函数最小)
kmeans算法的步骤

优化目标
- kmeans的代价函数

$c^{(i)}$,第i个样本所属的簇
$u_k$,第k簇的簇均值
$u_{c^{(i)}}$,第i个样本所属的簇的簇均值
代价函数:所有样本到簇中心的距离均值。
$$
J = \frac{1}{m}\sum_i^m||x^{(i)}-\mu_{c^{(i)}}||^2\
min J
$$
随机初始化
学习课程的算法演示,全部可以是自己构造的合适的数据,进行算法流程的模拟训练。具体的机器学习算法实践,专门开一个部分吧。
- 多次随机初始化,多次运行kmeans算法
- 对多次运行结果的聚类中心和代价函数进行保留,对比选取最小的结果。
聚类的数量
- 一般画出聚类样本的散点分布图,然后通过观察,手动决定聚类的数量。
- 肘部法则:尝试不同的K值,代价函数的变化,选取代价函数趋于平缓前的K值。
- 哪个聚类的数量能够更好的应用于后续目的。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Estom的博客!










