Machine Learning —— Where does the error come from
1、Error来源
- Bias
- Variance
2、Model简单和复杂时的情况
- 当model比较简单时,variance比较小,bias比较大,此时的 f ∗ f^* f∗会比较集中,但是function set可能并没有包含真实的标准函数 f ^ \hat{f} f^,此时model受bias影响较大
- 当model比较复杂时,variance比较大,bias比较小,此时的
f
∗
f^*
f∗会比较分散,但是function set会包含真实的标准函数
f
^
\hat{f}
f^,此时model受variance影响较大
如下两图所示,一次项函数简单函数和含五次项复杂函数对比
3、区分function set的bias大 or variance大
- 若是采样得到的大部分样本点都不在训练得到的 f ∗ f^* f∗上,说明model太简单,bias比较大,是欠拟合(underfitting)
- 若是样本点都在model训练出来的
f
∗
f^*
f∗上,但是经过test data测试后得到的error很大,说明model太复杂,variance比较大,是过拟合(overfitting)
4、处理操作
-
当bias比较大时,需要做的是重新设计model,包括考虑添加新的input变量、高次项;然后对每一个model对应的 f ∗ f^* f∗计算出error,选择error值最小的model(随着model变复杂,bias会减小,但是variance也会增大,故在此取两者的平衡点)
-
当variance比较大时,最后的办法是增加data,当data数量足够时,得到的 f ∗ f^* f∗会比较集中;如果没办法得到更多的data,可以采用regularization正规化,以曲线的平滑度为条件控制function set的范围,用weight控制平滑度阈值,使得最终的model既包含 f ^ \hat{f} f^,variance又不会太大
5、如何选择model
- 已有的test data与真实的test data之间是存在一定偏差的,因此可以将training data分成两部分即 train_data和validation_data,经过validation筛选后的model再用全部的train data训练一遍参数,最后用test data测试error,这样的model与实际情况的error会比较符合。