K-means 知识点总结

重点:

  • 算法思想
  • 使用条件
  • 如何设置初始化点
  • 如何确认K值
  • 判断收敛的指标
  • 发生震荡的原因及解决方法
  • 聚类的评价函数
  • 优缺点
  • 伪代码
  • python实现

算法思想:

首先随机初始化K个中心点,计算训练样本点与K个中心点的距离。当样本点与第i个中心点的距离最近时, 该样本点被认定为从属于第i类。所有样本点确定好类别后,更新的中心点的位置。返回计算样本点与更新后的中心点的距离。重复上述步骤直至收敛为止。

使用条件:

用欧式距离来表示两个样本点之间的相似度

如何设置初始点:

预估整体的中心——即均值,以及范围。在生成中心点时,以均值位置中心,以尺度为因子,乘以服从标准正太分布的数据

如何确定K值:

(a)在已知应用情景和类别的情况下,根据任务确定

(b)在类别未知的情况下

               肘部法.....(只了解这个) 原理: 绘制成本函数(代价函数)与K的折线图, 下降幅度最大的位置对应的k值就是肘部

               https://zhuanlan.zhihu.com/p/24546995  其他参考这个链接

判断收敛的指标:

成本函数(代价函数)

意义: 每个类别的畸变程度的和

小于一定值  或  循环中先后两次成本函数的差小于一定值时  即为收敛

发生震荡的原因及解决方法:

本质原因: 样本稀疏

解决方法: 加入阻尼系数

聚类的评价函数

 轮廓系数: 轮廓系数是类的密集与分散程度的评价指标。它会随着类的规模增大而增大。彼此相距很远,本身很密集的类,其轮廓系数较大,彼此集中,本身很大的类,其轮廓系数较小。轮廓系数是通过所有样本计算出来的,计算每个样本分数的均值

                                                                                     s = \frac{a-b}{max(a,b)}

a是每一个类中样本彼此距离的均值,b是一个类中样本与其最近的那个类的所有样本的距离的均值。

优缺点:

优点:
算法原理简单,适用于大规模数据,速度快,需要调节的超参数只有K

缺点:

使用前需要事先确定K值(难)

初始点对聚类结果影响大,大多情况里需要做多次试验才能得到理想效果

对离群点敏感

由于以欧式空间为前提条件,所以不能发现非凸形状的簇,同时使用欧式空间也隐含假定了各个维度对相似度的衡量作用是相同的

伪代码:

def K-MEANS(输入数据, K):
    获取输入数据维度DIM和个数N
    随机生成K个维度为DIM的初始点
    while(算法未收敛):
        for i in 输入数据:
            计算i属于哪一类
        for k in K:
            找出所有属于自己一类的数据点
            更新自己的坐标为这些数据点的中心点坐标
    END 
    输出结果:

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值