K-Means 聚类的目标函数:簇内误差平方和

1. 什么是 K-Means?

K-Means 是一种无监督迭代式 的聚类算法:

给定数据集 {x₁, x₂, ..., xₙ} 与预设簇数 K,算法把样本划分为 K 个不相交的簇 C₁, C₂, ..., Cₖ,使得同一簇内样本尽可能相似,不同簇间样本尽可能远离

核心思想:

> "让簇内'抱团',让簇间'疏远'。"


2. 目标函数 J:簇内误差平方和(WCSS)

K-Means 用几何距离 衡量相似性,目标函数 J 定义为:
J=∑k=1K∑x∈Ck∥x−μk∥2 J = \sum_{k=1}^{K} \sum_{x \in C_k} \|x - \mu_k\|^2 J=k=1∑Kx∈Ck∑∥x−μk∥2

  • μₖ:第 k 个簇的质心(centroid)
  • ‖x − μₖ‖²:样本到所属质心的欧氏距离平方
  • J 的物理意义:Within-Cluster Sum of Squares (WCSS),即"簇内误差平方和"

> 算法目标 :找到使 J 最小的簇划分 {C₁,...,Cₖ} 与质心 {μ₁,...,μₖ}


3. 迭代两步:坐标下降求 J

K-Means 采用坐标下降策略,交替更新两个变量:

步骤 固定量 优化量 公式
E步 (Assignment) 质心 μₖ 样本归属 Cₖ Cₖ = {x : ‖x − μₖ‖² ≤ ‖x − μⱼ‖², ∀j}
M步 (Update) Cₖ 质心 μₖ μₖ = (1/Cₖ) ∑_{x∈Cₖ} x

示例

python 复制代码
def kmeans(X, K, max_iter=100):
    n, d = X.shape
    mu = X[torch.randperm(n)[:K]]          # 随机初始化 K 个质心
    for _ in range(max_iter):
        # E步:计算距离并分配样本
        dist = torch.cdist(X, mu)           # (n, K)
        labels = torch.argmin(dist, dim=1)  # (n,)
        # M步:重新计算质心
        for k in range(K):
            mask = labels == k
            if mask.sum() > 0:
                mu[k] = X[mask].mean(dim=0)
    return labels, mu
相关推荐
戴西软件4 分钟前
戴西软件发布3DViz设计与仿真数据轻量化平台
大数据·人工智能·安全·机器学习·汽车
小汤圆不甜不要钱8 分钟前
「Datawhale」RAG技术全栈指南 Task 3
人工智能·深度学习·机器学习·rag
阿豪Jeremy25 分钟前
LlamaFactory微调Qwen3-0.6B大模型实验整理——调一个人物领域专属的模型
人工智能·深度学习·机器学习
爱思德学术1 小时前
中国计算机学会(CCF)推荐学术会议-A(数据库/数据挖掘/内容检索):SIGIR 2026
机器学习·自然语言处理·信息检索
Hcoco_me1 小时前
大模型面试题88:cuda core的数量 与 开发算子中实际使用的线程 关系是什么?过量线程会发生什么情况?
人工智能·深度学习·机器学习·chatgpt·职场和发展·机器人
油泼辣子多加1 小时前
【信创】华为昇腾大模型训练
人工智能·机器学习·数据挖掘
audyxiao0011 小时前
会议热点扫描|机器学习顶级会议ICML 2025的研究热点与最新趋势分析
人工智能·机器学习·icml·会议热点
LDG_AGI1 小时前
【机器学习】深度学习推荐系统(三十一):X For You Feed 全新推荐系统技术架构深度解析
人工智能·深度学习·算法·机器学习·架构·推荐算法
Nowl2 小时前
基于langchain的个人情感陪伴agent
人工智能·机器学习·langchain
啊阿狸不会拉杆2 小时前
《机器学习》 第 9 章 - 深度强化学习
人工智能·算法·机器学习·计算机视觉·ai·ml