ML笔记:Where does the error come from?
error来自哪?
来自于偏差Bias和方差Variance.
就如打靶时瞄准一个点f平均,打出的点f星分布在该点周围.
该点与实际靶心f帽的距离就是偏差Bias,
打出的点与该点的分布距离就是方差Variance.
可将偏差理解为没瞄准,方差理解为瞄准了但是打得太散.
简单模型的方差小于复杂模型的方差.
因为简单模型比较集中,其权重W不太会受到data变化的影响,
可考虑极端例子f(x)=c,该模型方差为0.
简单模型的偏差大于复杂模型的偏差.
因为模型是个函数/假设集,定好模型后,function只能在里面挑选,
而简单模型的space小,很可能不包含f帽;复杂模型的space大,很可能包含f帽.
偏差大意味欠拟合,方差大意味过拟合
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.(限制||W||,较小/短的W意味着函数较平滑:输入变化,输出变化小.)—may increase bias
正则化可防止选模型时选出抖动得很厉害的模型,多数情况下,抖动得太厉害的function很可能不对.
function中常数项bias对function是否平滑无影响.
模型选择就是在方差和偏差之间寻找平衡.
但以下做法不推荐:
用训练数据训练出不同模型后,根据这些模型在测试数据上的表现好坏进行模型选择选出所谓的最佳模型,
该最佳模型往往在real的测试数据上表现得不好.—偷看了测试数据
推荐使用交叉验证.
将训练数据分为训练数据和验证数据2部分,通过验证数据选择模型.
这时,在public测试数据上的表现和在private测试数据上的表现差不多.
原则上,越少根据public测试数据上的结果去调整模型,public测试数据和private测试数据上的表现相差越少.
降低偶然性,可使用N折交叉验证.