Last updated on November 27, 2024 7:56 PM
本文主要涉及机器学习中的模型选择,以及偏差-方差分解。
一键回城。
模型选择(Model Selection)
在利用机器学习相关技术解决实际问题的时候,模型的选择是尤为重要的。
一般而言,会将全部数据的 80% 用于训练(训练集),10% 用于验证(验证集,validation set),最后 10% 用于测试(测试集,test set)。
如果数据包含时间戳,则应当按照时间顺序划分 Trn Val 和 Test,防止数据泄露问题(前面不应该看到后面)。否则,随机分配即可。
模型选择的原则:
- 如果有现成可用的(hand-out 的)验证集,则应当选择在验证集上表现更好的模型;
- 如果没有,则应当选择更简单的模型。
奥卡姆剃刀准则,简单有效原理。
Bias-Variance Decomposition
考虑在某训练集 D 上训练后,在测试集上的误差是怎么来的。
记号约定;D 为训练集 ∼P(D),x 为样本,y 为标签。
f(x;D) 为训练后,对 x 的 prediction。
Then the error of x (averaged over P(D)):
ED[(f(x;D)−y)2]=ED[(f(x;D)−fˉ(x)+fˉ(x)−y)2]
其中,fˉ(x) 是指 ED[f(x;D)],即在 P(D) 上 sample 训练集 D。
ED[(f(x;D)−y)2]=ED[(f(x;D)−fˉ(x))2]+ED[(fˉ(x)−y)2]+2ED[(f(x;D)−fˉ(x))(fˉ(x)−y)]
注意到第二项与 D 无关,其即为 (fˉ(x)−y)2。
最后一项也等价于 2(fˉ(x)−y)2ED[f(x;D)−fˉ(x)]。进一步观察到其实际上就是 0。(前半截就是 fˉ(x) 的定义)
最终形式为
ED[(f(x;D)−fˉ(x))2]+(fˉ(x)−y)2
考虑其意义。第一项为方差,第二项为偏差。
- variance:由于过拟合某个特定的 D 产生的误差。
解决方案:增加 D 的大小。
- bias:由于模型能力不足以拟合数据产生的误差(见了很多 D 但还是偏离实际值)。
比如说尝试用线性模型拟合一个二次函数型分布的数据,且每次 sample D 的时候都只能 sample 两个点。
解决方案:提升模型容量(capability 或者说 expressivity,粗略估计:参数数量,记作 #parameters)
这二者通常有一个 trade-off:简单模型->underfit->高 bias,而复杂模型->overfit->高 variance。当然,同时增大 D 并增大模型,也可以二者得兼之,还可以加上一些其他的技巧如正则化等。
对 Bias-Variance Decom. 的小质疑
定义 f^(x):=f(x,∣D∣→∞),那么 fˉ 是否等价于 f^?
考虑极端情况:fˉ 是在重复的小 D∼P(D) 上取平均;f^ 在一个无限大的训练集上训练。这两种模型是截然不同的。
考虑 ∣D∣=2,(x,y)∈{(−1,1),(0,0),(1,1)},且 P(D) 各有 31 的概率在集合中取两个元素。
fˉ(x)=31(−x+x+1)=31,而 f^(x)=argminh2h2+(1−h)2=32,后者明显好于前者。
所以,f^ 和 fˉ 是不太一样的。而 Bias-Variance Decom. 并没有考虑 f^ 的情况。在这个例子里,f^ 比 fˉ,在某些其他情况下如随机森林,fˉ 会更优。