过拟合与欠拟合
拟合,所谓的拟合就是指机器学习的过程中,不断的更新参数,使得模型不断契合我们的训练,并且更好表现训练集数据的性能。
比如线性回归就是用一些回归曲线,去表示数据的规律
1. 构造一些数据
使用numpy构造两个二维数组,表示x值和y值
导入绘图工具,分别在x轴,y轴0~25的范围内,使用实心圆的方式显示这些数据
2. 使用1次多项式进行模型的训练
一次线性回归 y = W*X^T
这是一个一次函数图像
1次多项式,就是x特征用原特征,不加入其它的系数
- 创建模型,训练
- 创建一个0-25之间的数据作为测试集,预测xx对应的标签,然后绘制图像
此时红色曲线就是使用的1次曲线来拟合出的x,y数据集对应的回归曲线
3. 使用2次曲线来进行回归拟合
二次线性回归 y = F(W*X^T) 其中F函数是一个二次函数
这是一个二次函数图像
- 导入PolynomialFeatures函数
函数PolynomialFeatures作用是将一次的多项式映射n次,这里要映射2次,degree参数表示映射
的次数
- 将x传进去映射,创建模型,训练
- 预测poly2测试集对应的标签
这个xx是前面创建的测试集,也需要先映射两次
- 绘图
4. 用poly的4次多项式来进行拟合
- 映射出4次, 将x传进去映射
- 创建模型,训练,预测poly4测试集对应的标签
- 绘图
当上面的模型数据复杂程度非常低的时候(degree=1),模型不仅在训练集上没有良好拟合状态,而且在测试集上的表现也不是很好,这种现象就是欠拟合(经验误差和泛化误差都非常大,或者经验准确率和泛化准确率都非常小)
当上面的模型数据复杂程度飞行高的时候(degree=4),模型虽然在训练集上有非常良好的拟合表现,但是由于曲线的波动过大,模型几乎丧失了泛化能力,泛化依然很差,这种现象就是过拟合。