是的,predict_app直接加载那个…
离差平方和最小化,这个听起来有点拗口的概念,其实是统计学里最朴素的直觉之一。说白了,就是当我们想用一组数里的某个“代表值”来概括整体时,怎么选才能让每个数据点离这个代表值的“距离”总和最小。这里的“距离”不是直线距离,而是平方后的距离——之所以用平方,是因为它既能避免正负抵消,又能放大偏离较大的点,让代表值更敏感地反映数据的集中趋势。
你可能想过,为什么不用绝对值?绝对值距离(平均绝对误差)也能衡量偏离,但它在数学上有个致命缺陷:不可导。平方和函数处处光滑,求导方便,能直接通过导数等于零找到极值点。对一组数据 (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聚类)就没这么幸运了,因为无法排序,必须迭代逼近。不过核心思想一脉相承:离差平方和最小化,本质上是在寻找数据内在的“重心”,无论这个重心是一个点,还是多个簇的中心。
参与讨论
暂无评论,快来发表你的观点吧!