一、聚类任务的简介
聚类是机器学习中一类重要的无监督学习任务,其核心目标是在没有预设标签的情况下,通过分析样本间的内在相似性,将数据集自动划分为若干个具有共同特征的“簇”(Cluster)。
1.1 聚类的核心特征
- 无监督性:无需人工标注训练数据的类别标签,完全依赖数据自身的特征分布进行划分;
- 相似性度量:通过距离(如欧式距离、曼哈顿距离)或相似度(如余弦相似度)判断样本关联程度,距离越小则样本越相似;
- 簇内一致性:同一簇内的样本应具有较高的相似度,不同簇间的样本应具有显著差异。
1.2 聚类的典型应用场景
- 用户分群:根据消费习惯、浏览行为等特征将用户划分为不同群体,支撑精准营销;
- 异常检测:远离所有簇的样本可能是异常值(如信用卡欺诈交易、设备故障数据);
- 数据降维与可视化:将高维数据聚成少数簇,简化分析复杂度;
- 生物学研究:对基因表达数据聚类,发现功能相似的基因族群。
聚类算法种类繁多,其中Kmeans因原理简单、计算高效,成为实际应用中最广泛的聚类方法之一。
二、Kmeans的思想和数学原理
2.1 核心思想
Kmeans算法(K-均值聚类)的核心思想是:通过迭代优化K个簇中心,使每个样本被分配到距离最近的簇,最终实现“簇内样本紧凑、簇间样本分散”的目标。
通俗来说,Kmeans就像“物以类聚”的过程:先随机选择K个“种子”(初始簇中心),然后让每个样本“投靠”最近的种子,再根据投靠的样本重新计算新的种子位置,重复此过程直到种子位置不再变化。
2.2 数学原理
-
距离度量
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=1∑d(xi−ci)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=1∑Kx∈Cj∑d(x,cj)2
其中:- K K K为预设的簇数量;
- C j C_j Cj表示第 j j j个簇包含的样本集合;
- c j c_j cj表示第 j j j个簇的中心(由簇内样本的均值计算得到)。
-
簇中心更新规则
当样本分配完成后,每个簇的中心通过簇内所有样本的特征均值更新,公式为:
c j = 1 ∣ C j ∣ ∑ x ∈ C j x c_j = \frac{1}{|C_j|} \sum_{x \in C_j} x cj=∣Cj∣1x∈Cj∑x
其中 ∣ C j ∣ |C_j| ∣Cj∣为第 j j j个簇的样本数量。 -
迭代收敛条件
算法通过反复执行“样本分配→更新簇中心”过程实现优化,当满足以下条件之一时停止迭代:- 簇中心的变化量小于预设阈值(如 1 0 − 4 10^{-4} 10−4);
- 达到最大迭代次数(避免无限循环)。
三、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 (1−7)2

最低0.47元/天 解锁文章
1626

被折叠的 条评论
为什么被折叠?



