肘部法找k

产生的原因是因为聚类的目标是最小化化簇内距离之和(wcss)。因此基于目标函数,我们会得知以下三个规律:(规定真实簇的个数为n)

随着k的增多,wcss会降低

当k<n时,随着k的增多wcss下降很快

当k接近n以及当k>n之后 wcss的下降会变得很慢

规律解析

要理解这段描述,核心是抓住 "簇的数量(K)与数据真实分布的匹配度" 如何影响 "簇内平方和(WCSS)的下降规律"。可以用 "切蛋糕" 的生活场景类比,结合数学逻辑拆解:

1. 为什么 K 增大时,WCSS 会 "单调递减"?

WCSS 衡量的是 "所有样本到自己所属簇中心的距离平方和"------ 可以理解为 "簇内样本的分散程度":样本越集中(离中心越近),WCSS 越小。

当 K 增大时,相当于把原本 "一大团样本" 拆成更多 "小团":

  • 比如 K=1 时,所有样本被强行归为 1 个簇,样本分散在各处,到中心的距离总和(WCSS)必然很大;
  • K=2 时,拆成 2 个簇,每个簇的样本更集中,WCSS 会比 K=1 时小;
  • K=3 时,再拆成 3 个簇,每个簇的样本更紧凑,WCSS 会比 K=2 时更小;

只要 K 增加,就能通过 "更精细地划分样本" 让每个簇的内部更集中,因此 WCSS 只会减小、不会增大 ------ 这就是 "单调递减" 的本质。

2. 为什么 K 小于真实簇数时,WCSS 下降 "速度很快"?

"真实簇数" 是数据本身客观存在的分组(比如数据天生就是 3 个独立的 "样本团")。当 K 小于这个真实值时,算法相当于在 "强行合并真实的簇",此时增加 K 就能 "解开一个合并的真实簇",误差会大幅降低。

用 "3 个真实簇" 举例:

  • K=1 时:3 个真实簇被强行揉成 1 个大簇,样本极度分散,WCSS 极大;
  • 当 K 从 1→2:算法会先把最分散的两个真实簇分开(比如把 "簇 A" 和 "簇 B + 簇 C" 分开),此时大量样本从 "远离旧中心" 变成 "靠近新中心",WCSS 会大幅下降(比如从 1000 降到 500);
  • 当 K 从 2→3:再把 "簇 B + 簇 C" 分开,剩下的分散样本也被归位,WCSS 会再次大幅下降(比如从 500 降到 200);

这一步的核心是:K 每增加 1,都在 "修正一个错误的合并",直接贴合数据的真实分布,因此误差降低的幅度很大。

3. 为什么 K 接近 / 等于真实簇数时,WCSS 下降 "速度骤缓"?

当 K 等于真实簇数时,算法已经把数据按 "真实的样本团" 划分好了 ------ 每个簇都是天然紧凑的,此时 WCSS 已经接近 "理论最小值"(除非样本本身有噪声)。

若继续增大 K(比如真实簇数 = 3,K 从 3→4→5):

  • K=4 时,算法只能 "强行拆分一个真实簇"(比如把原本紧凑的 "簇 A" 拆成 "簇 A1" 和 "簇 A2");
  • 但这两个子簇的样本本就离得很近,拆分后每个子簇的中心距离原中心不远,样本到新中心的距离总和(WCSS)只会小幅减少(比如从 200 降到 180);
  • K=5 时,再拆分另一个真实簇,WCSS 可能从 180 降到 170------ 下降幅度越来越小;

这一步的核心是:K 超过真实簇数后,增加的簇都是 "无意义的拆分"(没有贴合数据真实分布),无法再大幅降低簇内分散程度,因此 WCSS 下降会突然变缓,甚至趋近于平稳。

一句话总结规律

  • K < 真实簇数:每加 1 个 K,都是 "贴合真实分布的有效拆分",WCSS 快降;
  • K ≥ 真实簇数:每加 1 个 K,都是 "破坏真实分布的强行拆分",WCSS 缓降;
  • 全程 K 增大时,WCSS 只会减小,因此整体呈 "先快降、后缓降" 的单调递减曲线 ------ 而 "快降转缓降的拐点",就是我们要找的 "最优 K"。

传统做法:

规定一定的k的范围,挨个计算wcss绘制合适的图,然后选的最好的k

思考

传统做法在小数据集上是可以的,但是当数据集数目过多时,我们要是挨个去计算的话会非常的耗时,我们是否可以通过二分法来加快这个过程,减少计算次数,在到达合适范围内再进行传统的肘部法呢?

总结:基于上述原理当数据量很大的时候我们是否可以通过二分法来寻找合适的簇,希望能有同学帮我证明这个的可行度,如果可以证明的话希望能把结果留在评论区,让更多的同学来学习,谢谢!!!!!

相关推荐
后端小肥肠10 小时前
公众号躺更神器!OpenClaw+Claude Skill 实现自动读对标 + 写文 + 配图 + 存入草稿箱
人工智能·aigc·agent
爱可生开源社区10 小时前
SCALE | 重构 AI 时代数据库能力的全新评估标准
人工智能
Jahzo11 小时前
openclaw本地化部署体验与踩坑记录--飞书机器人配置
人工智能·开源
Narrastory11 小时前
明日香 - Pytorch 快速入门保姆级教程(一)
人工智能·pytorch·深度学习
数据智能老司机11 小时前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机11 小时前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
Narrastory11 小时前
明日香 - Pytorch 快速入门保姆级教程(二)
人工智能·pytorch·深度学习
AI攻城狮11 小时前
OpenClaw Session 管理完全指南:Context 压缩、重置与持久化
人工智能·云原生·aigc
AI软著研究员11 小时前
程序员必看:软著不是“面子工程”,是代码的“法律保险”
算法
FunnySaltyFish11 小时前
什么?Compose 把 GapBuffer 换成了 LinkBuffer?
算法·kotlin·android jetpack