肘部法找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

思考

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

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

相关推荐
IT_陈寒3 小时前
Java性能调优:从GC日志分析到实战优化的5个关键技巧,让你的应用快如闪电!
前端·人工智能·后端
Hs_QY_FX3 小时前
Python 分类模型评估:从理论到实战(以信用卡欺诈检测为例)
人工智能·python·机器学习·数据挖掘·多分类评估
Gitpchy3 小时前
Day 18 推断聚类后簇的类型
python·机器学习·聚类
Aspect of twilight3 小时前
3D Gaussian Splatting论文简要解读与可视化复现(基于gsplat)
人工智能·深度学习·gsplat
CHANG_THE_WORLD3 小时前
if条件语句 三目运算符 汇编分析
汇编·算法·条件语句·if 语句·汇编分析·条件语句汇编分析
tumu_C3 小时前
无用知识研究:在trailing return type利用decltype,comma operator在对函数进行sfinae原创 [二]
开发语言·c++·算法
web安全工具库3 小时前
告别刀耕火种:用 Makefile 自动化 C 语言项目编译
linux·运维·c语言·开发语言·数据库·算法·自动化
deephub3 小时前
REFRAG技术详解:如何通过压缩让RAG处理速度提升30倍
人工智能·python·大语言模型·rag
Dongsheng_20194 小时前
【泛3C篇】AI深度学习在手机背板外观缺陷检测应用方案
图像处理·人工智能·计算机视觉·视觉检测·边缘计算