Where does the error come from?
Outline
- 误差分析:bias 和 variance
- Cross Validation交叉验证
1 误差分析
1.1 两种误差
一般的,我们把误差分为两类:
- biasbiasbias偏差:指的是预测值的期望和真实值之间的偏差,表现了预测值的偏移程度;
- variancevariancevariance方差:指的是预测数据的离散程度,和真实值无关。
这两种误差分别对应着训练模型的不同问题。
1.2 误差和模型的关系
- biasbiasbias
模型越复杂biasbiasbias一般越小,在training set上表现越好, 拟合效果越好;同时受到training data的影响越大以至于最后overfitting; - variancevariancevariance
模型越简单平滑,波动越小,variancevariancevariance越小;但是模型过于简单,预测结果虽然不离散但是biasbiasbias较大-underfittingunderfittingunderfitting
所以要在两种errorerrorerror中找到平衡。
1.3 如何对待误差
1.3.1分辨误差
- 如果model能在training data上有不好的结果,取得了较大的errorerrorerror,model可能具有较大的biasbiasbias;我们称之为欠拟合,under fitting。
- 如果模型在training set 上取地了较好的结果但是在test set上误差很大,model可能具有较大的 variancevariancevariance,我们称之为过拟合,over fitting。
1.3.2如何减小误差
- Large Variance
- 使用更多的数据:更多的数据是最要好的方法,足够的数据可以提供足够的信息;试想如果我们的training set包括了所有可能的数据那么训练出的模型就是适用于所有test set的。
- 正则化Regularization:前面的笔记中已经提到了,正则化可以帮助我们的到比较平滑的曲线,减小曲线的震荡程度;
- Large Bias
- 使用更多的 feature 作为input;
- 重新设计更复杂的model;
小结
上面的关系总结一下就是
biasbiasbias:大-欠拟合,prefer较复杂的model;
variancevariancevariance:大-过拟合,prefer较平滑的model;
2 Cross Validation
为什么使用交叉验证?在评估模型好坏时,我们会使用test set,想看看model在检验集上表现得如何。但是每个test set不可能都是很完美的取样,训练集大多与现实中的数据之间有biasbiasbias(不是围绕数据中心的均匀取样)。所以这时候我们使用交叉验证来解决。
2.1 简单交叉验证
- 我们随机的将training set分为两份,一份用于训练一份用于检验,这样就得到一个model即其准确率;
- 将数据打乱后重复第一步又能得到一个model及其准确率;
- 反复一二两步我们就能得到很多model,选择其中准确率最高的,再使用全体training set对其train一次产出我们的最终模型。
2.2 K-fold Cross Validation
将数据分为k份,k-1份用于训练生于一份用于test就得到了k个model。 选择最优的model,让其在整个training set上train一遍后得到最终的model。