本文为吴恩达机器学习课程的笔记系列第三篇,主要关于机器学习应用时如何诊断偏差和方差,从而对机器学习系统实施相应的解决方法,以及介绍设计机器学习系统时的设计方法与评价指标。
应用机器学习
在机器学习中,如何降低模型的预测误差,提高模型的预测精度,是我们一直都希望解决的问题。我们往往会采取如下的手段:
- 获得更多的训练样本。
- 尝试减少特征的数量
- 尝试获得更多的特征
- 尝试增加多项式特征
- 尝试减少正则化程度 λ \lambda λ
- 尝试增加正则化程度 λ \lambda λ
这些方法并不是随机选择的,我们要根据实际场景(如偏差、方差问题)来进行选择。
数据集的划分
- 训练集 :60%,用于训练出多个模型。
- 验证集(交叉验证集):20%,用于计算交叉验证误差(也就是代价函数 J ( θ ) J(\theta) J(θ)),选择代价函数值最小的模型。
- 测试集:20%,对选中的模型计算泛化误差,用于评估模型的泛化(generalize)能力。
诊断偏差和方差
机器学习中,偏差(bias) 指预测结果与真实值之间的差异,偏差反映模型无法准确表达数据关系。方差(variance) 是指多个(次)模型输出的结果之间的离散差异,方差反映了模型对训练集过度敏感,而丢失了数据规律。
-
高偏差——欠拟合
-
高方差——过拟合
多项式拟合中的偏差与方差
我们知道,对于训练集,当多项式次数 d d d 越小时,模型拟合程度越低,误差越大; d d d 越大时,模型拟合程度越高,误差越小。而对于交叉验证集,多项式次数 d d d 越小时,模型拟合程度同样越低,误差越大;而随着 d d d 的增长,误差呈现先减小后增大的趋势。因为此时多项式次数较高,训练误差很低,模型容易过拟合,对交叉验证集的数据泛化能力较差,交叉验证集的误差很高,此时的误差就属于方差。而当多项式次数较低时,不管是训练集还是交叉验证集,误差都很高,此时的误差就属于高偏差,因为此时模型容易欠拟合。
下图就是训练集、交叉验证集误差随多项式次数 d d d 的变化规律
正规化中的偏差与方差
在线性回归和逻辑回归的学习中,我们知道通过引入正则化的手段可以防止模型过拟合。而正则化惩罚力度的大小(也就是 λ \lambda λ 的取值大小)也会对模型的误差产生类似上述多项式拟合的影响。
下图反映训练集和交叉验证集模型的代价函数误差与 λ \lambda λ 的值的变化规律:
当 λ \lambda λ 较小时,正则化惩罚力度较小或几乎没有,此时模型对训练集的拟合程度还是较高,误差还是较小,而应用到交叉验证集的误差就较大(因为过拟合)。
随着 λ \lambda λ 的不断增大,正则化惩罚力度不断加大,模型的对训练集的拟合程度逐渐降低,趋于欠拟合,训练集误差不断增大,而对于交叉验证集,误差会先减小后增大,因为模型会从过拟合逐渐达到一个最佳的拟合程度,也就是图中的转折点,在这之后模型趋于欠拟合时,误差自然就增大了。
神经网络中的偏差方差
当神经网络的结构较为简单时,也就是隐藏层数较少,则容易出现高偏差,但是计算代价较小;
当神经网络的结构较为复杂时,也就是隐藏层数较多,则容易出现高方差,虽然计算代价也比较大,但此时可以通过增大 λ \lambda λ 来解决。
学习曲线
学习曲线(Learning Curves)可以用来判断一个学习算法是否处于偏差、方差问题。学习曲线是将训练集误差和交叉验证集误差作为训练集样本数目 m m m 的函数绘制的图表。
当样本数 m m m 较小时,模型在训练集上容易拟合,训练集误差较小,但交叉验证集的误差较大(发现不了数据的规律);随着 m m m 的增大,模型拟合难度会增大,训练集误差也开始增大,而交叉验证集的误差会降低,因为样本数多,模型的学习能力增强,更能发现数据规律。
下图反映了样本数目 m m m 对训练集误差和交叉验证集误差的影响:
如果模型出现高偏差(欠拟合),增加再多的样本数,仍无法有效降低交叉验证集的误差。
如果模型出现高方差(过拟合),当交叉验证集误差远大于训练集误差时,此时若增加样本数,对降低交叉验证集的误差有一定帮助。
总结
方法 | 适用场景 |
---|---|
获得更多的训练样本 | 解决高方差 |
尝试减少特征的数量 | 解决高方差 |
尝试获得更多的特征 | 解决高偏差 |
尝试增加多项式特征 | 解决高偏差 |
尝试减少正则化程度 λ \lambda λ | 解决高偏差 |
尝试增加正则化程度 λ \lambda λ | 解决高方差 |
机器学习系统的设计
设计方法
- 先快速实现一个简单的算法,并用交叉验证集数据测试这个算法。
- 绘制学习曲线,根据图像判断存在的是哪些问题,是高偏差还是高方差?从而决定是增加更多数据,还是添加更多特征,还是其它方案。
- 进行误差分析,人工检查交叉验证集中我们算法中产生预测误差的样本。
评价指标
单纯的使用误差并不能全面的评价模型的好坏,因为对于样本不平衡的数据集(比如正样本过多,负样本太少,即数据集非常偏斜),用预测准确率来评估算法优劣是不准确的。所以引入下面两个重要的评价指标:查准率(Precision)、查全率(Recall)。
首先定义:
- Positive:表示预测的样本为真。
- True Positive 正确肯定:预测为真,实际为真
- False Positive 错误肯定:预测为真,实际为假
- Negative:表示预测的样本为假。
- True Negative 正确否定:预测为假,实际为假
- False Negative 错误否定:预测为假,实际为真
实际值 \预测值 | 预测Positive | 预测Negtive |
---|---|---|
实际Positive | TP | FN |
实际Negtive | FP | TN |
查准率(Precision)
- P = T P T P + F P P=\dfrac{TP}{TP+FP} P=TP+FPTP
查全率(Recall)
- R = T P T P + F N R=\dfrac{TP}{TP+FN} R=TP+FNTP
为了更好的权衡两个指标,我们使用 F 1 S c o r e \mathbf{F_1Score} F1Score 来综合两个指标:
- F 1 S c o r e : 2 P R P + R F_1Score:2\dfrac{PR}{P+R} F1Score:2P+RPR
上一篇文章:机器学习入门之神经网络与反向传播推导
下一篇文章:机器学习入门之支持向量机SVM