regression里面的误差来源
来源于两个方面:
bias和variance
下图比较直观,bias是和期望值(真实值)之间的偏差,variance是样本与样本均值的的方差
一般来说,比较简单的modle,它的bias会比较大,也就是说,我们通过数据集反推得到的期望模型(函数),和实际的模型(函数),同样的输出,输出得到的预测值会比较大,而比较复杂的模型,一般bias比较小。这是因为比较小的modle可能都没包含目标真实函数,而大的模型可能包含了真实的目标函数;
在模型的训练过程中,bias会越来越小,variance会越来越大,如果主要是bias带来的误差,就是欠拟合,如果是variance带来的误差,就是过拟合。所谓过拟合与欠拟合,在机器学习中,过拟合和欠拟合是两个常见问题。欠拟合指的是模型过于简单,无法捕捉数据中的复杂关系,导致偏差较大。而过拟合则是模型过于复杂,对训练数据过度拟合,虽然偏差较小,但泛化能力较差,也就是只适用于当前的这个数据集。因此,在训练过程中,需要找到一个平衡点,使得模型既能够较好地拟合训练数据,又能够保持较好的泛化能力。
怎么知道我现在的模型是bias大还是variance大呢?如果我现在的模型对我的样本数据集还不能很好地拟合,那就说明bias大,如果是我的训练数据集能很好的拟合,但测试数据集预测出来的值和真实值相差很大,那说明variance大;
如果bias大,需要重新设计模型,因为大概率你的模型都没有包含到真实的函数;
如果variance大,有两种方法:
(1)使用更大的数据集训练;(有效,但不实际)
(2)正则化;
通常我们需要在模型选择时,需要在bias和variance之间做一个折衷选择以达到一个误差最小;
为了避免我们在样本训练集拟合较好,但测试集上比较差,通常我们需要将训练集分两份,交叉验证,一份训练,一份验证,然后交换,选出一个较好模型后再在测试集上验证。注意不要在测试集上效果比较差时又根据测试集上去做些修正哦。
可以对训练集多分几份,分别做验证集;取平均误差最小的模型