K-means算法

算法概述

K-means算法也称为K_均值算法,用于聚类算法。聚类是一种无监督学习,他将相似的对象归于一个簇中,簇中心通过簇中所有点的均值来计算。聚类算法与分类算法的主要区别就是分类的目标类别已知,而聚类的目标类别未知。

簇:所有数据点的点集合,簇中的对象是相似的

质心:簇中所有点的中心(由簇中所有点的均值求得)

SSE:Sum of Sqared Error 平方误差和,SSE越小表示越接近质心

算法原理

误差平方和SSE用来衡量K-means算法的好坏 S S E = ∑ i = 1 k ∑ X ∈ C i ( C i − X ) 2 SSE=\begin{matrix} \sum_{i=1}^k \end{matrix}\begin{matrix} \sum_{X \in C_i}(C_i-X)^2\end{matrix} SSE=i=1kXCi(CiX)2C为聚类中心,X为簇中数据点 ∂ S S E ∂ C k = ∂ ∂ C k ∑ i = 1 k ∑ X ∈ C i ( C i − X ) 2 \frac{\partial SSE}{\partial C_k}=\frac{\partial }{\partial C_k}\begin{matrix} \sum_{i=1}^k \end{matrix}\begin{matrix} \sum_{X \in C_i}(C_i-X)^2\end{matrix} CkSSE=Cki=1kXCi(CiX)2 = ∑ i = 1 k ∑ X ∈ C i ∂ ∂ C k ( C i − X ) 2 =\begin{matrix} \sum_{i=1}^k \end{matrix}\begin{matrix} \sum_{X \in C_i}\end{matrix}\frac{\partial }{\partial C_k}(C_i-X)^2 =i=1kXCiCk(CiX)2 = ∑ X ∈ C i 2 ( C i − X ) =\begin{matrix} \sum_{X \in C_i}\end{matrix}2(C_i-X) =XCi2(CiX) ∑ X ∈ C i 2 ( C i − X ) = 0 \begin{matrix} \sum_{X \in C_i}\end{matrix}2(C_i-X)=0 XCi2(CiX)=0,得: m i C i = ∑ X ∈ C i X m_iC_i=\begin{matrix} \sum_{X \in C_i}\end{matrix}X miCi=XCiX C i = 1 m i ∑ X ∈ C i X C_i=\frac{1}{m_i}\begin{matrix} \sum_{X \in C_i}\end{matrix}X Ci=mi1XCiX
由推导可以看出,当质心为簇中数据均值时,SSE最小

算法推导

在这里插入图片描述
在这里插入图片描述

算法流程

1、随机给出k个初始聚类中心
2、repeat:
把每一个数据对象重新分配到k个聚类中心处,形成k个簇 重新计算每一个簇的聚类中心
3、until 聚类中心不在发生变化(簇内样本点不改变)
在这里插入图片描述

K值的确定

1.手肘法
随着聚类数k的增大,样本划分的更加精细,那么平方误差和SSE会逐渐变小 S S E = ∑ i = 1 k ∑ X ∈ C i ( C i − X ) 2 SSE=\begin{matrix} \sum_{i=1}^k \end{matrix}\begin{matrix} \sum_{X \in C_i}(C_i-X)^2\end{matrix} SSE=i=1kXCi(CiX)2
但K值太大聚类的效果不怎好,SSE的下降也逐渐变小特点当K值小于真实聚类数时,K值的增大对聚类效果产生的影响很大,SSE的下降幅度也很大;
当K值大于真实聚类数时,K值的增大对聚类效果产生的影响很小,SSE的下降幅度也很小;
呈现出来的图像是先下降的很快,后平缓,在其邻接的地方图像上呈现为手肘状,因此形象的称其为手肘法。
在这里插入图片描述

初始化质心
随机初始化质心可能导致算法的迭代次数增加,K-means++是对K-means随机选取质心的一个优化具体步骤如下:
1.随机选取一个点作为第一个聚类的中心
2.计算所有样本与第一个聚类中心的距离
3.选择上一步中距离最大的点作为第二个聚类中心
4.迭代:计算所有点到与之最近的聚类中心的距离,选取最大距离的点作为新的聚类中心
5.直到选出来这K个点,结束迭代

k-means算法不会陷入一直改变质心的循环之中,最终的质心一定是确定的
  • 11
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

chp的博客

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

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

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

打赏作者

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

抵扣说明:

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

余额充值