笔记:K-Means

1、算法流程
K-Means算法是一种无监督学习算法,用于将含有m个样本的数据集D{x(1),x(2),x(3)...x(m)}分成k类。
代价函数如下(又称畸变函数 distortion function):
J(c_{1},c_{1}...c_{m},\mu _{1},\mu _{2}...\mu _{k})=\frac{1}{m}\sum_{i=1}^{m}\left \| x_{i}-\mu _{ci} \right \|^{2}其中,ci表示样本xi所属聚类的编号,μj表示聚类中心的坐标。

算法流程如下:

  • 选择聚类的数量k,并随机初始化聚类中心μ12...μk
  • 对每一个样本xi,分别计算与k个聚类中心的距离||xij||(j=1,2...k)。将样本xi划分到距离最小的那一个聚类中心。
  • 对每一个聚类中心μj(j=1,2...k),计算其所包含的样本特征平均值作为新的聚类中心。如果聚类中心变化或代价函数变化小于某一阈值,则停止迭代,否则转到上一步。
    2、随机初始化
    初始化不同的聚类中心,可能得到不同的聚类结果,为了防止算法陷入局部最优,需要进行多次随机初始化,方法如下:
    选定聚类数k和要随机初始化的次数t,每一次初始化后执行第1节中的聚类算法,收敛后计算代价函数值。最终,选择代价函数值最小的聚类中心作为随机初始化的聚类中心。
    3、聚类参数k的选择
    方法1:肘部法
    以聚类个数k为自变量,以对应的代价函数值为因变量绘制图形,选择图形中的函数拐点对应的k为最佳聚类个数。
    肘部法示意图

    但是,实际应用中绘制的曲线可能不存在明显的拐点,因此该方法不总是奏效。
    方法2:人工选择
    依据聚类算法的动机和实际需求选择k值。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容