underfitting and overfitting

过拟合(或者叫做高方差:high variance):简单的理解就是参数太多,训练集太少,过拟合的结果是训练误差会非常小,因为我们的参数很多,可以很好的拟合几乎所有的训练数据,但是,过拟合情况下,模型的泛化能力就很差,会导致测试误差比较大。(即使看到的训练误差很小,但是测试使用的时候效果很差 ==当一个算法在训练集表现优秀,但在测试集表现不佳

过拟合原因

1. 训练集和测试机特征分布不一致(e.g.,白天鹅黑天鹅)

2. 或者模型太过复杂(特征太多)而训练样本量不足

解决办法

1. 增加训练样本,使得训练样本尽量地丰富

2. 减少模型参数(特征数量)

3. 交叉验证( Cross validation

例如:我们把trainingdatas切一小份(比如说10%)出来做validation,用剩下90%的data去train,然后用这10%检查一下train好的model,看看validation error如何然后判断是否收敛,而不是看训练误差,从而防止overtraining。

4. 正则化 (regularization)

正则化参数用于限制学习得到的参数,使参数不会太大,以此来防止过拟合。相当于是要求拟合的误差足够小的同时模型不要太复杂(参数的值也不至于很大,两者之间的一个tradeoff, 希望拟合误差和参数值都尽量小, 自然避免了过拟合啦),这样得到的模型具有较强的泛化能力。

正则化参数过小时,对参数值限制有限,参数值过大,容易发生过拟合

正则化参数过大时,对参数值限制过度,参数值太小,容易发生欠拟合

以上观点说白了就是利用正则化来控制参数值的大小

过拟合的时候,参数的值往往非常大,而正则化是通过约束参数的范数使其不要太大,所以可以在一定程度上减少过拟合情况。


欠拟合(或者叫高偏差:high bias):简单来讲就是参数太少 (模型复杂度太低),相对来说,数据太多,不足以拟合训练数据,欠拟合情况下,训练误差会比较大,测试误差也会比较大。

 

解决办法:

1 引入更多的特征,对于神经网络,增加hidden layer相当于增加增加feature的个数。

你可能感兴趣的:(机器学习)