问题介绍
我们大致可以将训练出的参数分为三类:欠拟合、正常、过拟合。
以方程次数为例,对于一个简单的单特征值问题,我们可能拟出如下模型:
而方程次数过低容易导致欠拟合,方程次数过高可能导致过拟合:
方程次数选
首先来讲一个比较简单的方法,我们把数据集分成训练集(70%)和测试集(30%),用每一种方程训练集得出对应的最优参数 。
然后每个方程用对应的参数 去测试集上跑,得出在测试集上的误差 ,然后选择一个较小的作为最后的结果(方程次数和对应参数)。
然而这样并不公平,因为方程的次数 也是一个参数,而这个 相当于在测试集中拟合而出,可能不具备可推广性。
做法:
所以我们将数据分成三部分:训练集(60%)、交叉验证集(20%)、测试集(20%)。
再验证集中拟合出参数 (选择 最小的那个),再到测试集中跑出实际的测试误差 。
偏差与方差的判断
我们画出
与训练集误差和验证集误差的关系:
可以得出结论:
- 高偏差(欠拟合): 与 都很大,且较为接近
- 高方差(过拟合): 远小于
的选择
正则化中的惩罚力度 的地位类似上述的 。
λ过大时不能拟合,过小时又不能正则化导致过拟合。
我们可以用选择
的方式让自动选择λ:
我们画出
与训练集误差和验证集误差的关系:
得出相同的结论:
- 高偏差(欠拟合): 与 都很大,且较为接近
- 高方差(过拟合): 远小于
学习曲线
我们画出 与测试样本数量的关系图:
-
正常情况下,两个在一定数据后都较小,且随着数据量的增加趋向于相同
-
高偏差时,两个都很高,且趋于相同,趋于水平(增加数据量无效):
-
高方差时, 较小,而 较大。随着数据量的增加,过拟合的现象会有所改善,所以两条线会慢慢接近(需要增加数据量)
解决方法
在确定是高方差(过拟合)时,我们可以尝试:
- 增加数据量
- 减少特征
- 增加
高偏差(欠拟合)时,我们可以尝试:
- 增加特征
- 增加多项式
- 减少
神经网络
小型神经网络容易欠拟合,大型的容易过拟合