离差平方和最小化的数学原理

离差平方和最小化,这个听起来有点拗口的概念,其实是统计学里最朴素的直觉之一。说白了,就是当我们想用一组数里的某个“代表值”来概括整体时,怎么选才能让每个数据点离这个代表值的“距离”总和最小。这里的“距离”不是直线距离,而是平方后的距离——之所以用平方,是因为它既能避免正负抵消,又能放大偏离较大的点,让代表值更敏感地反映数据的集中趋势。

为什么偏偏是平方?

你可能想过,为什么不用绝对值?绝对值距离(平均绝对误差)也能衡量偏离,但它在数学上有个致命缺陷:不可导。平方和函数处处光滑,求导方便,能直接通过导数等于零找到极值点。对一组数据 (x_1, x_2, dots, x_n),设代表值为 (c),离差平方和 (S = sum (x_i – c)^2)。对 (c) 求导并令其为零,得到 (2sum (x_i – c) = 0),解得 (c = frac{1}{n}sum x_i)——正是算术平均数。这个结果简洁得令人愉悦:最小化离差平方和的解,就是均值。

分组场景下的数学变形

当问题变成“把数据分成两组,使两组各自的组内离差平方和之和最小”时,原理依然成立,但多了一层组合优化。假设数据已排序(排序是前提,因为最优分组在有序数据上一定是连续分割),总离差平方和 (D^2 = sum (x_i – bar{x})^2) 可以分解为组内平方和与组间平方和之和:

[ D^2 = sum_{i=1}^{k} (x_i – bar{x}_1)^2 + sum_{i=k+1}^{n} (x_i – bar{x}_2)^2 + k(bar{x}_1 – bar{x})^2 + (n-k)(bar{x}_2 – bar{x})^2 ]

其中 (bar{x}_1, bar{x}_2) 分别是两组均值。注意,总平方和 (D^2) 是固定的,所以最小化组内平方和等价于最大化组间平方和。而组间平方和只依赖于两组均值与总均值的偏离,以及各组样本量。这个关系让问题从“枚举所有分组”降维成“枚举分割点”——因为一旦分割点确定,两组均值就由前缀和直接算出,组内平方和也能通过总平方和减去组间平方和快速得到,无需重复计算每个点到均值的差。

一个反直觉的细节

很多人以为,最优分组一定是让两组数据“尽量平衡”,比如样本量接近。但数学上并非如此。组间平方和 (k(bar{x}_1 – bar{x})^2 + (n-k)(bar{x}_2 – bar{x})^2) 中,权重 (k) 和 (n-k) 会放大均值差异较大的那一组的影响。如果一组数据极端偏离总均值,即使样本量很小,也可能产生很大的组间平方和,从而让组内平方和更小。举个例子:数据 [1, 2, 100],总均值约34.33。若分成 [1,2] 和 [100],组内平方和仅为 (1-1.5)^2+(2-1.5)^2=0.5,加上另一组0,总和0.5;若分成 [1] 和 [2,100],组内平方和为0 + (2-51)^2+(100-51)^2=4802,天差地别。所以最优分组往往会把离群值单独拎出来。

从数学到算法

一维数据的最优分组,只需遍历 (n-1) 个分割点,每次用前缀和计算均值,复杂度 (O(n))。但高维情况(比如K-means聚类)就没这么幸运了,因为无法排序,必须迭代逼近。不过核心思想一脉相承:离差平方和最小化,本质上是在寻找数据内在的“重心”,无论这个重心是一个点,还是多个簇的中心。

参与讨论

0 条评论

延伸阅读

登录

ACGN Android Arch Linux C# C++ IT兴趣 Linux Magisk模块 Python Python Root 权限 SEO优化 Steam Ubuntu WinUI WinUI3 三星刷机 东方Project 个人博客 中文输入法 人工智能 历史课件 同人游戏 域名管理 学生生活 改革开放 数码设备 新年快乐 新年祝福 机器学习 游戏 现代化建设 科技 空气质量 终端美化 网站迁移 网站运营 节日问候 语言设置 音乐