【构建完模型之后】吴恩达机器学习笔记EP8(P71-P80)
从今天开始我将学习吴恩达教授的机器学习视频,下面是课程的连接1.1 欢迎来到机器学习!_哔哩哔哩_bilibili。一共有142个视频,争取都学习完成吧。
学习的优化
在构建完一个模型之后,我们还可以做一些事情让模型的表现更好一点。以下是一些可以做的事情:
获取更多训练数据
用更少的特征
获取额外的特征
添加多项式特征
减少λ或者增加λ
模型评估
我们需要有一个专门的数据集去评估模型的性能。
所以在原有的数据集中按一定比例,划分成了训练集和测试集。
这里以回归为例:
为了评价模型的好坏,一般会想一般的代价函数一样计算测试集和训练集中的J,但是这里不用加正则化模块。
如下面的右图,如果在训练集中的J很低,但是在测试集中的J很高,那就说明模型不太能在没有见过的数据有有很好的泛化能力。这也就是过拟合。
分类问题中除了计算代价函数的公式不同以外,其它都相同。
模型选择和训练交叉验证测试集
以线性回归为例去选择模型:
一般会计算d阶多项式的Jtest,选择结果最低的作为模型。
但是只有一个测试集来验证,其本身只能验证模型的泛化能力,并不能很好地说明模型的性能。
所以这里再将数据集划分为三块。
分别是:训练集、交叉验证集(cross validation, cv)和测试集。
然后我们计算交叉验证的代价J,用cv的J来选择模型。
一般在cv中计算得到的J来选择模型。
用test的J来测试模型的泛化能力。
用cv的J选择模型让模型有更好的性能。
诊断偏差和方差
如下图,多项式次数d选择比较小时,之前所说的train中的J很高,cv的J也很高,这就是欠拟合。
d选择比较大时,在train中的J很低,cv中的J很高,这就是过拟合。
所以选择合适的多项式次数才不容易发生过拟合或者欠拟合。(也就是多项式次数不能过多或过少)
下图是cv和train中的J随多项式次数变化的曲线。
多项式次数在中间的时候模型的性能最好。
正则化和偏差或方差
下图只正则化中的λ与模型拟合度之间的关系。
λ过大会欠拟合,称之为高偏差;λ过小会过拟合,称之为高方差。
所以我们需要找到一个合适的λ。
做法就是尝试不同的λ,找到cv的J最小的一个λ值。
然后我们选择其对应的参数,并且在test中验证。
下图就是λ和J还有多项式系数与J的关系。可以看出在中间的模型性能比较好。
建立表现基准
因为期望得到一个零误差的模型是不现实的。
所以我们要建立一个基线去衡量比较模型的性能。
一般baseline可以是:人类表现水平、竞争算法表现和根据经验的猜想。
学习曲线
下面是训练集大小和J的关系。
随着训练集扩大,训练误差增加,因为其很难拟合所有的训练示例。
随着训练集参数变多,模型能更好地拟合数据,但到数据很多之后,模型的变化就不再明显。
有很高方差时,增大数据集对模型性能的提升还是有不错效果的。(可以有效降低cv的J)
高方差和高偏差的应对方式
下面罗列了修复高方差和高偏差的一些应对方式,就是一开始说的那六种方法。
方差、偏差与神经网络
当训练集不是太大的时候,一个神经网络通常是一个低偏差的模型,往里面加资料是好的
拥有一个更大的神经网络几乎没有坏处,其可以让模型的性能变好,不过会增加计算量。
机器学习算法迭代发展
最后是机器学习算法的迭代发展过程:
先训练一个模型,然后检查偏差和方差,再选择修改模型或者数据让模型变得更好。
然后不断重复以上步骤,直到模型有好的效果。