如何解决过拟合与欠拟合
根据不同的坐标方式,欠拟合与过拟合图解不同。
1.横轴为训练样本数量,纵轴为误差
如上图所示,我们可以直观看出欠拟合和过拟合的区别:
模型欠拟合:在训练集以及测试集上同时具有较高的误差,此时模型的偏差较大;
模型过拟合:在训练集上具有较低的误差,在测试集上具有较高的误差,此时模型的方差较大。
模型正常:在训练集以及测试集上,同时具有相对较低的偏差以及方差。
2.横轴为模型复杂程度,纵轴为误差
红线为测试集上的Error,蓝线为训练集上的Error
模型欠拟合:模型在点A处,在训练集以及测试集上同时具有较高的误差,此时模型的偏差较大。
模型过拟合:模型在点C处,在训练集上具有较低的误差,在测试集上具有较高的误差,此时模型的方差较大。
模型正常:模型复杂程度控制在点B处为最优。
3.横轴为正则项系数,纵轴为误差
红线为测试集上的Error,蓝线为训练集上的Error
模型欠拟合:模型在点C处,在训练集以及测试集上同时具有较高的误差,此时模型的偏差较大。
模型过拟合:模型在点A处,在训练集上具有较低的误差,在测试集上具有较高的误差,此时模型的方差较大。 它通常发生在模型过于复杂的情况下,如参数过多等,会使得模型的预测性能变弱,并且增加数据的波动性。虽然模型在训练时的效果可以表现的很完美,基本上记住了数据的全部特点,但这种模型在未知数据的表现能力会大减折扣,因为简单的模型泛化能力通常都是很弱的。
模型正常:模型复杂程度控制在点B处为最优。
如何解决欠拟合:
添加其他特征项。组合、泛化、相关性、上下文特征、平台特征等特征是特征添加的重要手段,有时候特征项不够会导致模型欠拟合。
添加多项式特征。例如将线性模型添加二次项或三次项使模型泛化能力更强。例如,FM(Factorization Machine)模型、FFM(Field-aware Factorization Machine)模型,其实就是线性模型,增加了二阶多项式,保证了模型一定的拟合程度。
可以增加模型的复杂程度。
减小正则化系数。正则化的目的是用来防止过拟合的,但是现在模型出现了欠拟合,则需要减少正则化参数。
如何解决过拟合:
重新清洗数据,数据不纯会导致过拟合,此类情况需要重新清洗数据。
增加训练样本数量。
降低模型复杂程度。
增大正则项系数。
采用dropout方法,dropout方法,通俗的讲就是在训练的时候让神经元以一定的概率不工作。
early stopping。
减少迭代次数。
增大学习率。
添加噪声数据。
树结构中,可以对树进行剪枝。
减少特征项。
欠拟合和过拟合这些方法,需要根据实际问题,实际模型,进行选择。