- 调试一个机器学习算法的方法
- 机器学习诊断法
- 评估假设函数的步骤
- 模型选择和交叉验证集
- 获得更多的训练数据
- 尝试减少特征的数量
- 尝试更多的特征数量
- 尝试添加多项式特征
- 尝试减少正则化程度λ
- 尝试增大正则化程度λ
二、机器学习诊断法 2.1 引入的原因- 若我们尝试用上面的六种方法逐一来改进我们的算法,可能要进行很多次调试且得不到很好地效果,因此我们引入了机器学习诊断法
- 机器学习诊断法能够帮助我们知道上面六种方法哪些方法是对我们的算法是有用的
- 诊断法 的意思:是一种测试法,通过执行这种测试,能够深入了解某种算法到底是否有用;也可以通过这种测试知道要想改进一个算法应该进行什么样的尝试
评估一个算法是否过拟合步骤:
第一步:划分测试集和训练集-
选择70%的数据作为训练集,剩下30%的数据作为测试集
-
若数据数随机分布的,可以选择前面70%数据作为训练集;若不是随机的则应该随机选择70%的数据作为训练集
-
在通过训练集让模型学习得出其参数后,对测试集运行该模型,真多不同的问题有两种计算误差的方法
-
对于线性回归模型(回归问题),利用测试集数据计算代价函数
-
对于逻辑回归模型(分类问题),除了利用测试集数据计算代价函数外,还有一种更加容易理解的测试误差定义的方法,叫做 错分率
-
错分率 也叫做 0/1 错分率,即错误分类的比率,计算方法为:对于每个测试集数据计算err(hθ(x),y)的值,然后对计算结果求其平均值
- err(hθ(x),y) 的意思是:如果分类预测结果 hθ(x) 错误,则 err 值为1;如果 hθ(x) 预测正确,则 err 值为0。
- 整体的测试误差就是所有 err 值的加和。
四、模型选择和交叉验证集 4.1 问题引入-
假设我们需要在10个不同次数的二次式模型之间进行选择:
-
产生过拟合的一个原因是:仅仅在测试集合上调试 θ 得到的训练误差,通常不能作为对实际泛化误差的一个好的估测
-
对于上面10个多项式模型,在训练集上训练出每个多项式对应的θ,然后分别使用测试集 计算误差,假设发现 J_test(θ^5)的值最小,因此我们会选择第五个模型
-
这样选择的弊端:此时选择的这个模型,就是能够最好地拟合测试集的参数的值及多项式的。因此,再使用同样的测试集来评估假设函数,显然很不公平,很可能导致过拟合。
-
交叉验证集: 将数据集分为 6:2:2 三部分:即使用60%的数据作为训练集training set、使用20%的数据作为交叉验证集cross validation set(cv, 或者直接简称validation set)、使用20%的数据作为测试机test set
-
使用训练集学习10个模型
-
用10个模型分别对交叉验证集计算得出交叉验证集误差(代价函数的值)
-
每个集合上的误差计算公式
-
-
选取代价函数值最小的模型
-
用步骤3中选出的模型对测试集计算得出推广误差(代价函数的值)
-
发现通过这个方法选取到的模型,在测试集合上进行预测,能得到一个更理想的泛化误差
如果觉得文章不错的话,可以给我点赞鼓励一下我哦,欢迎小伙伴们收藏
关注我,我们一起学习,一起进步!!!



