
评估一个算法是否过拟合步骤:
选择70%的数据作为训练集,剩下30%的数据作为测试集
若数据数随机分布的,可以选择前面70%数据作为训练集;若不是随机的则应该随机选择70%的数据作为训练集

在通过训练集让模型学习得出其参数后,对测试集运行该模型,真多不同的问题有两种计算误差的方法
对于线性回归模型(回归问题),利用测试集数据计算代价函数

对于逻辑回归模型(分类问题),除了利用测试集数据计算代价函数外,还有一种更加容易理解的测试误差定义的方法,叫做 错分率

错分率 也叫做 0/1 错分率,即错误分类的比率,计算方法为:对于每个测试集数据计算err(hθ(x),y)的值,然后对计算结果求其平均值

假设我们需要在10个不同次数的二次式模型之间进行选择:

产生过拟合的一个原因是:仅仅在测试集合上调试 θ 得到的训练误差,通常不能作为对实际泛化误差的一个好的估测
对于上面10个多项式模型,在训练集上训练出每个多项式对应的θ,然后分别使用测试集 计算误差,假设发现 J_test(θ^5)的值最小,因此我们会选择第五个模型

这样选择的弊端:此时选择的这个模型,就是能够最好地拟合测试集的参数的值及多项式的。因此,再使用同样的测试集来评估假设函数,显然很不公平,很可能导致过拟合。
交叉验证集: 将数据集分为 6:2:2 三部分:即使用60%的数据作为训练集training set、使用20%的数据作为交叉验证集cross validation set(cv, 或者直接简称validation set)、使用20%的数据作为测试机test set

使用训练集学习10个模型
用10个模型分别对交叉验证集计算得出交叉验证集误差(代价函数的值)
每个集合上的误差计算公式

选取代价函数值最小的模型
用步骤3中选出的模型对测试集计算得出推广误差(代价函数的值)
发现通过这个方法选取到的模型,在测试集合上进行预测,能得到一个更理想的泛化误差
如果觉得文章不错的话,可以给我点赞鼓励一下我哦,欢迎小伙伴们收藏
关注我,我们一起学习,一起进步!!!