error来自哪?来自于偏差Bias和方差Variance。
图1 error的来源就如打靶时瞄准一个点,打出的点分布在该点周围。那么,与实际靶心的距离就是偏差Bias,打出的点与的分布距离就是方差Variance。
可将偏差理解为没瞄准,方差理解为瞄准了但是打得太散。
简单模型的方差小于复杂模型的方差。因为简单模型比较集中,其权重不太会受到data变化的影响,可考虑极端例子,该模型方差为0。
图3 模型复杂度与方差简单模型的偏差大于复杂模型的偏差。因为模型是个函数/假设集,定好模型后,function只能在里面挑选。而简单模型的space小,很可能不包含;复杂模型的space大,很可能包含。
图4 模型复杂度与偏差偏差大意味欠拟合,方差大意味过拟合。
图5 欠拟合与过拟合If your model cannot even fit the training examples, then you have large bias.
If you can fit the training data, but large error on testing data, then you probably have large variance.
For bias,redesign your model:
- Add more features as input;
- A more complex model.
For variance:
- More data;
Very effective, but not always practical.
给的数据不够,很难准确地找到目标假设。但实际操作中,数据往往没那么“充足”。 - Regularization.
限制,较小/短的意味着函数较平滑:输入变化,输出变化小。
may increase bias.
正则化可防止选模型时选出抖动得很厉害的模型。多数情况下,抖动得太厉害的function很可能不对。function中常数项bias对function是否平滑无影响。
图6 避免方差大的常见方法1图7 避免方差大的常见方法2
模型选择就是在方差和偏差之间寻找平衡。
但以下做法不推荐:
用训练数据训练出不同模型后,根据这些模型在测试数据上的表现好坏进行模型选择选出所谓的最佳模型。
因为其偷看了测试数据,该最佳模型往往在real的测试数据上表现得不好。
推荐使用交叉验证:
将训练数据分为训练数据和验证数据2部分,通过验证数据选择模型。
这时,在public测试数据上的表现和在private测试数据上的表现差不多。
原则上,越少根据public测试数据上的结果去调整模型,public测试数据和private测试数据上的表现相差越少。
为降低偶然性,可使用折交叉验证。
图10 N折交叉验证
网友评论