Kmeams聚类算法详解


一、聚类任务的简介

聚类是机器学习中一类重要的无监督学习任务,其核心目标是在没有预设标签的情况下,通过分析样本间的内在相似性,将数据集自动划分为若干个具有共同特征的“簇”(Cluster)。

1.1 聚类的核心特征

  • 无监督性:无需人工标注训练数据的类别标签,完全依赖数据自身的特征分布进行划分;
  • 相似性度量:通过距离(如欧式距离、曼哈顿距离)或相似度(如余弦相似度)判断样本关联程度,距离越小则样本越相似;
  • 簇内一致性:同一簇内的样本应具有较高的相似度,不同簇间的样本应具有显著差异。

1.2 聚类的典型应用场景

  • 用户分群:根据消费习惯、浏览行为等特征将用户划分为不同群体,支撑精准营销;
  • 异常检测:远离所有簇的样本可能是异常值(如信用卡欺诈交易、设备故障数据);
  • 数据降维与可视化:将高维数据聚成少数簇,简化分析复杂度;
  • 生物学研究:对基因表达数据聚类,发现功能相似的基因族群。

聚类算法种类繁多,其中Kmeans因原理简单、计算高效,成为实际应用中最广泛的聚类方法之一。


二、Kmeans的思想和数学原理

2.1 核心思想

Kmeans算法(K-均值聚类)的核心思想是:通过迭代优化K个簇中心,使每个样本被分配到距离最近的簇,最终实现“簇内样本紧凑、簇间样本分散”的目标

通俗来说,Kmeans就像“物以类聚”的过程:先随机选择K个“种子”(初始簇中心),然后让每个样本“投靠”最近的种子,再根据投靠的样本重新计算新的种子位置,重复此过程直到种子位置不再变化。

2.2 数学原理

  1. 距离度量
    Kmeans采用欧式距离衡量样本与簇中心的相似度。对于d维特征空间中的样本 x = ( x 1 , x 2 , . . . , x d ) x=(x_1,x_2,...,x_d) x=(x1,x2,...,xd)和簇中心 c = ( c 1 , c 2 , . . . , c d ) c=(c_1,c_2,...,c_d) c=(c1,c2,...,cd),欧式距离公式为:
    d ( x , c ) = ∑ i = 1 d ( x i − c i ) 2 d(x,c) = \sqrt{\sum_{i=1}^d (x_i - c_i)^2} d(x,c)=i=1d(xici)2

  2. 目标函数
    Kmeans的优化目标是最小化所有样本到其所属簇中心的距离平方和(SSE,误差平方和),公式为:
    min ⁡ J = ∑ j = 1 K ∑ x ∈ C j d ( x , c j ) 2 \min \quad J = \sum_{j=1}^K \sum_{x \in C_j} d(x, c_j)^2 minJ=j=1KxCjd(x,cj)2
    其中:

    • K K K为预设的簇数量;
    • C j C_j Cj表示第 j j j个簇包含的样本集合;
    • c j c_j cj表示第 j j j个簇的中心(由簇内样本的均值计算得到)。
  3. 簇中心更新规则
    当样本分配完成后,每个簇的中心通过簇内所有样本的特征均值更新,公式为:
    c j = 1 ∣ C j ∣ ∑ x ∈ C j x c_j = \frac{1}{|C_j|} \sum_{x \in C_j} x cj=Cj1xCjx
    其中 ∣ C j ∣ |C_j| Cj为第 j j j个簇的样本数量。

  4. 迭代收敛条件
    算法通过反复执行“样本分配→更新簇中心”过程实现优化,当满足以下条件之一时停止迭代:

    • 簇中心的变化量小于预设阈值(如 1 0 − 4 10^{-4} 104);
    • 达到最大迭代次数(避免无限循环)。

三、Kmeans计算过程示例

以一个简单的二维数据集为例,详细演示Kmeans的聚类步骤(取 K = 2 K=2 K=2)。

3.1 数据集

假设有5个样本,特征坐标如下:
A ( 1 , 2 ) A(1, 2) A(1,2) B ( 2 , 1 ) B(2, 1) B(2,1) C ( 6 , 5 ) C(6, 5) C(6,5) D ( 7 , 7 ) D(7, 7) D(7,7) E ( 8 , 6 ) E(8, 6) E(8,6)

3.2 步骤1:确定K值并初始化簇中心

  • 设定 K = 2 K=2 K=2(目标是将数据分为2个簇);
  • 随机选择2个样本作为初始簇中心:
    c 1 = A ( 1 , 2 ) c_1 = A(1, 2) c1=A(1,2)(簇1的初始中心), c 2 = D ( 7 , 7 ) c_2 = D(7, 7) c2=D(7,7)(簇2的初始中心)。

3.3 步骤2:计算样本到簇中心的距离并分配簇

分别计算每个样本到 c 1 c_1 c1 c 2 c_2 c2的欧式距离,将样本分配给距离更近的簇:

  • A A A c 1 c_1 c1的距离: d ( A , c 1 ) = 0 d(A,c_1)=0 d(A,c1)=0;到 c 2 c_2 c2的距离: ( 1 − 7 ) 2 + ( 2 − 7 ) 2 ≈ 7.81 \sqrt{(1-7)^2+(2-7)^2}≈7.81 (17)2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值