模型选择(验证集、偏差/方差)

一、改进方法

①获得更多训练实例
②减少特征数量
③获得更多特征
④增加多项式特征
⑤减少归一化程度λ
⑥增加归一化程度λ

二、评估假设

判断一个假设函数是否过拟合,需要对假设函数h(x)进行画图,观察图形趋势。

对于多个特征变量,我们将数据分成训练集(70%)和测试集(30%),保证训练集和测试集都含有各种类型的数据,因此在划分前先对数据进行“洗牌”。
模型选择(验证集、偏差/方差)
通过训练集使得模型学习得出参数后,用测试集进行评估。

2.1 线性回归模型

对于线性回归模型,利用测试集数据计算代价函数J

2.2 逻辑回归模型

①利用测试集计算代价函数J
模型选择(验证集、偏差/方差)

②对于每一个测试集实例,计算误分类比率,然后对计算结果求平均
模型选择(验证集、偏差/方差)

三、模型选择和交叉验证集

假设在10个不同次数的二项式模型之间进行选择,次数越高的多项式模型越适应训练数据集,但是不一样能推广到一般情况,因此应该选择一个更能适应一般情况的模型。
模型选择(验证集、偏差/方差)

3.1 交叉验证集

即利用60%的数据作为训练集,用20%的数据作为交叉验证集,20%的数据作为测试集
模型选择(验证集、偏差/方差)

3.2 模型选择

①使用训练集训练出10个模型
②用10个模型分别对交叉验证集计算出交叉验证误差(代价函数值)
③选取代价函数值最小的模型
④用选出的模型对测试集计算得出推广误差(代价函数值)
模型选择(验证集、偏差/方差)

四、诊断偏差和方差

4.1 偏差和方差

当一个学习算法表现不理想时,多半是出现了偏差较大或方差较大的情况,即出现欠拟合或过拟合问题。
模型选择(验证集、偏差/方差)
通常将训练集和交叉验证集的代价函数误差与多项式的次数绘制在一张图表上帮助分析
模型选择(验证集、偏差/方差)
模型选择(验证集、偏差/方差)
从上可得

对于训练集:当d较小时,模型拟合程度更低,误差较大,随着d的增长,拟合程度提高,误差减小。

对于交叉验证集:当s较小时,模型拟合程度低,误差较大,对着d增长,误差呈现先减小后增大的趋势,转折点是模型开始过拟合训练数据集的时候

4.2 判别

若交叉验证集误差较大,如何判断是方差还是偏差?
模型选择(验证集、偏差/方差)
①训练集误差和交叉验证集误差近似时——偏差/欠拟合
②交叉验证集误差远大于训练集误差时——方差/过拟合

五、归一化和偏差/方差

在训练模型时,一般使用归一化方法防止过拟合。
在选择归一化程度λ值时需要多加考虑。
模型选择(验证集、偏差/方差)
选择λ的方法:
①使用训练集训练出12个不同程度归一化的模型
②用12个模型分别计算出交叉验证集的交叉验证误差
③选择交叉验证误差最小的模型
④运用模型对测试集计算得出推广误差
将训练集和交叉验证集模型的代价函数误差与λ的值绘制在一张图表上,如下图所示:
模型选择(验证集、偏差/方差)
由图可知
①当λ较小时,训练集误差较小(过拟合),交叉验证集误差较大
②随着λ的增加,训练集误差不断增加(欠拟合),交叉验证集误差先减小后增加

六、学习曲线

6.1 学习曲线

学习曲线:学习曲线是将训练集误差和交叉验证集误差作为训练集实例数量(m)的函数绘制的图表。
即如果有100行数据,从第1行数据开始,逐渐学习更多行的数据。学习曲线是学习算法的一个很好的合理检验。

思想:当训练较少行数据时,训练的模型将完美的适应较少的训练集数据,但训练出来的模型不能很好的适应交叉验证集或测试集数据。
模型选择(验证集、偏差/方差)
模型选择(验证集、偏差/方差)

6.2 利用学习曲线识别高偏差/欠拟合

在高偏差/欠拟合的情况下,增加训练集数据不一定有帮助,如图:
模型选择(验证集、偏差/方差)

6.3 利用学习曲线识别高方差/过拟合

当使用一个非常高次的多项式模型,并且归一化非常小,可以看出,放交叉验证集误差远大于训练集误差时,添加训练集数据可以提高模型效果。
即,在过拟合情况下,增加训练集数据可能可以提高算法效果,如图:
模型选择(验证集、偏差/方差)

七、改进方法选择

7.1 方法及适应情况

①更多的训练实例——高方差/过拟合
②减少特征的数量——高方差/过拟合
③获得更多特征——高偏差/欠拟合
④增加多项式特征——高偏差/欠拟合
⑤减少归一化程度λ——高偏差/欠拟合
⑥增加归一化程度λ——高方差/过拟合

7.2 神经网络的方差和偏差

①使用较小的神经网络(参数较少)时,容易导致高方差和欠拟合
②使用较大的神经网络(参数较多)时,容易导致高偏差和过拟合
③计算代价较大时,可以通过归一化调整。
④通常选择较大的神经网络并采用归一化处理比采用较小的神经网络效果好
⑤对于神经网络中隐藏层的层数选择,通常从一层逐渐增加
⑥为了更好的选择,把数据分为训练集,交叉验证集和测试集
⑦针对不同隐藏层层数训练神经网络,选择交叉验证集代价最小的神经网络