机器学习模型的性能评价

机器学习模型的性能评价

过拟合与欠拟合

下面举个例子,帮助你更好的理解过拟合与欠拟合
欠拟合:想象你自己在无准备的情况下去参加考试,无论你在考场上如何努力,你最终都考不好

过拟合:想象你自己做了准备,但是你并没有理解所学的只是,只是将它一字一句的背下来了,你可以回答试卷上所有重复的问题,但遇到关于数据的新问题,你就灰度不出了

完美的模型:想象你自己学习了知识,并准备好回答试卷中遇到的任何新问题

一般而言,欠拟合的错误是由于高偏差引起的,具有较高的训练误差和测试误差
过拟合的错误是由于高方差引起的,一般在训练集上表现很好,但对于测试集的误差较大

举个例子:
如果数据集中的数据点更符合一个二次函数曲线,
a) 我们尝试用直线去拟合,此时就会出现欠拟合的情况,也就是高偏差的情况
b) 我们尝试用多项式来拟合,多项式能够完美匹配所有的数据点,但对测试集数据并不会有很好的泛化效果,此时也就是出现了过拟合的情况,也就是高方差的情况

模型复杂度与误差的关系图:

横坐标为模型的复杂度,纵坐标为模型的误差
总结:
a)模型的训练误差会一直递减,而模型的测试误差走势一般为先下降后上升,
在关系图中的中间最低位置处,模型的训练误差最小,模型的测试误差也最小,即此处为模型的最优点
b) 模型欠拟合一般在关系图最优点左侧,此时模型的训练误差和测试误差较大
c) 模型过拟合一般出现在关系图最优点最右侧,此时模型的训练误差继续递减,测试误差会开始上升
注意:永远不能将测试集用于训练

常用的模型选择方法

在不适用测试集数据的情况下,如何对模型做出正确的选择呢?

交叉验证

我们可以将数据集进一步拆分:训练集,测试集,交叉验证集
各数据集作用
训练集: 用于模型的训练
交叉验证集: 用于模型的选择,例如多项式的次数
测试集: 用于模型的最终评估
在学习到的不同复杂度的模型中,选择对验证集有最小预测误差的模型。由于验证集中有足够的数据,用它对模型进行选择也是有效的。
训练误差一般可以包含交叉验证集的数据,而测试误差不能包含交叉验证集的数据集
交叉验证误差曲线随着模型复杂度
一般最常用的交叉验证方法是:K交叉验证

借助学习曲线判断过拟合与欠拟合

学习曲线: 模型复杂度与误差的关系图
当我们将训练集保持的很低,而交叉验证集保持的很高,我们可以直接根据训练曲线(走势及形状)来判断过拟合,欠拟合还是正常的模型。
在这里插入图片描述
欠拟合(高偏差):训练误差曲线和交叉验证曲线相互接近并交于一点
正常模型:训练误差曲线和交叉验证曲线相互接近并交于一个很低的点
过拟合(高方差):训练误差曲线和交叉验证曲线没有相互靠近

正则项

TODO:

# 分类中散点图的绘制
plt.scatter(X[np.argwhere(y==0).flatten(),0],X[np.argwhere(y==0).flatten(),1],s = 50, color = 'blue', edgecolor = 'k')
plt.scatter(X[np.argwhere(y==1).flatten(),0],X[np.argwhere(y==1).flatten(),1],s = 50, color = 'red', edgecolor = 'k')
# 分类中样本点的便捷曲线的绘制
plt.contourf(s,t,z,colors = ['blue','red'],alpha = 0.2,levels = range(-1,2))

猜你喜欢

转载自blog.csdn.net/weixin_44144171/article/details/89321959
今日推荐