无监督学习:K-means聚类算法

一、什么是聚类:

聚类算法属于无监督学习(仅有输入特征x,没有标签y,由模型自己发现一些东西并输出)的一种。
在这里插入图片描述
对于包含特征x1、x2的数据集,样本分布如上图所示,聚类算法可以分析样本之间特征的相似性并将样本分成多个组。

二、K-means算法直观理解:

K-means算法的目的是计算簇质心的最终位置,从而将样本点分成多组。

算法执行流程如下:

  • step1:K-means算法做的第一件事是随机初始化聚类的中心位置(簇质心)
    在这里插入图片描述

  • step2:repeat:

    • 将点分配给簇质心:遍历所有点,检查每个点更接近哪个簇质心,就把该点分配给相应簇质心。
      在这里插入图片描述
    • 移动簇质心:遍历所有簇质心,查看分配给该簇质心的所有点,计算所有点的平均值,并将该簇质心移到平均值的位置。
      在这里插入图片描述
  • step3:若簇质心位置不再变化或变化幅度非常小(使用损失函数来衡量),则可以认为簇质心位置已经收敛
    在这里插入图片描述

三、K-means算法详解:

在这里插入图片描述

四、使用损失函数衡量簇质心是否收敛:

每次repeat(分配簇质心移动簇质心)之前都计算损失函数判断簇质心位置收否收敛,若相较于上一轮循环的损失下降不大或停止下降,则表明收敛,跳出循环。
在这里插入图片描述

五、如何初始化簇质心位置:

常见的初始化簇质心位置的方式如下:
在这里插入图片描述
注意,簇质心初始值很大程度上会影响聚类算法的结果,如图:
在这里插入图片描述
对于不同的初值,会得到不同的聚类结果,很显然下面两种结果都不理想,那么如何防止初值对聚类结果的影响呢?

答案是进行多次实验,每次选择不同初始值得到聚类结果。最终多个实验通过比较损失函数J的值来确定选择哪次实验结果作为最终聚类的结果。

六、如何确定初始化聚类数:

通过实验不断调整聚类数K的取值,然后绘制K关于损失J的图像,图像肘部所对应的K即为最优K选择。
在这里插入图片描述

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姓蔡小朋友

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值