吴恩达-coursera-机器学习测试题第十章

 =========                关于偏差、方差以及学习曲线为代表的诊断法         ==========

(一)模型选择Model selection

在评估假设函数时,我们习惯将整个样本按照6:2:2的比例分割:60%训练集training set、20%交叉验证集cross validation set、20%测试集test set,分别用于拟合假设函数、模型选择和预测。

三个集合对应的误差如下图所示(注意没有不使用正则化项):

基于以上划分,我们有模型选择的三个步骤:

step1.用测试集training set对多个模型(比如直线、二次曲线、三次曲线)进行训练;

step2.用交叉验证集cross validation set验证step1得到的多个假设函数,选择交叉验证集误差最小的模型;

step3.用测试集test set对step2选择的最优模型进行预测;

以线性回归为例,假设你利用线性回归模型最小化代价函数J(θ)求解得到一个假设函数h(x),如何判断假设函数对样本的拟合结果是好是坏,是不是说所有点都经过(代价函数J最小)一定是最理想的?

或者这样说,给你下图的样本点,你是选择直线、二次曲线、还是三次曲线......作为假设函数去拟合呢?

以下图为例,你的模型选取其实直接关系到最终的拟合结果

=======================================

欠拟合Underfit          ||  高偏差High bias

正常拟合Just right    ||  偏差和方差均较小

过拟合Overfit              ||   高方差High variance

=======================================

★★★以上问题只是模型选择过程中需要考虑的一点------多项式次数d,实际上,我们还会去考虑这样两个参数:正则化参数λ、样本量m.

下面我将从多项式次数d、正则化参数λ、样本量m这三个量与拟合结果之间的关系做一个简单的概括.

(二)偏差、方差、学习曲线Bias、Variance、Learning curve

1.特征量的度d

还是之前的例子,用二次曲线拟合,训练集和交叉验证集的误差可能都很小;但是你用一条直线去拟合,不管使用多高级的算法去减小代价函数,偏差仍然是很大的,这时候我们就说:多项式次数d过小,导致高偏差、欠拟合;类似的当用10次曲线去拟合,样本点都能经过,对应的代价函数(误差)为0,但是带入交叉验证集你会发现拟合很差,这时候我们说:多项式次数d过大,导致高方差、过拟合。

所以,多项式次数d与训练集、交叉验证集误差的关系如下图:

2.正则化参数λ

正则化参数我们在第三周有介绍到,正则化参数λ越大,对θ惩罚的越厉害,θ->0,假设函数是一条水平线,欠拟合、高偏差;正则化参数越小,相当于正则化的作用越弱,过拟合、高方差。关系如下图所示:

3.样本量m与学习曲线Learning curve

学习曲线是样本量与训练集、交叉验证集误差之间的关系,分为高偏差和高方差两种情况(欠拟合和过拟合)。

①高偏差(欠拟合):

根据下图右部分分析有,通过增加样本量两者误差都很大,即m的增加对于算法的改进无益。

②高方差(过拟合):

根据下图右部分分析有,通过增加样本量训练集样本拟合程度很好(过拟合),训练集误差很小,即m的增加对于算法的改进有一些帮助。

★★★(三)如何决策

综上所述,你会发现有这样的一个结论,就是:

◆训练集误差大、交叉验证集误差也大:欠拟合、高偏差、多项式次数d太小、λ太大;

◆训练集误差小、交叉验证集误差却很大:过拟合、高方差、多项式次数d太大、λ太下、样本量太少。

这就为我们改善机器学习算法提供了依据。

 

 

解决高偏差:

尝试获得更多的特征

尝试增加多项式特征

尝试减少归一化程度lamda

 

 

训练集误差小、交叉验证集误差却很大:过拟合、高方差、多项式次数d太大、λ太下、样本量太少。

这就为我们改善机器学习算法提供了依据。

 

训练集误差大、交叉验证集误差也大:欠拟合、高偏差、多项式次数d太小、λ太大;

这个时候有三种方法:

 Try getting additional features 增加更多的特征向量

Try adding ploynomail features  增加多项式特征

Try decreasing lamda 减少归一化程度lamda

 

应该是通过训练集让我们的模型学习得出其参数后,然后对测试集运用该模型 

假设你用线性回归来预测房价,你的数据集是按照增加房屋的大小来排序的。在将数据集分割成培训、验证和测试集之前,随机地将数据集打乱,这样我们就不会有所有最小的房子进入培训集,所有最大的房子都进入测试集。这是对的

假设您正在使用多项式特性训练一个逻辑回归分类器,并希望选择使用什么程度多项式(在课堂视频中表示dd)。在对整个培训集中培训分类器之后,您决定使用培训示例的子集作为验证集,这将与从培训集中分离(分离)的验证集一样有效。这不对 不能用自己的训练集来,而是应该 

一个典型的数据集分割为训练、验证和测试集可能是60%的培训集,20%的验证集和20%的测试集。 

猜你喜欢

转载自blog.csdn.net/weixin_40807247/article/details/81333219