机器学习入门之机器学习的应用与系统设计

595 阅读6分钟

这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战

本文为吴恩达机器学习课程的笔记系列第三篇,主要关于机器学习应用时如何诊断偏差和方差,从而对机器学习系统实施相应的解决方法,以及介绍设计机器学习系统时的设计方法与评价指标。

应用机器学习

在机器学习中,如何降低模型的预测误差,提高模型的预测精度,是我们一直都希望解决的问题。我们往往会采取如下的手段:

  1. 获得更多的训练样本。
  2. 尝试减少特征的数量
  3. 尝试获得更多的特征
  4. 尝试增加多项式特征
  5. 尝试减少正则化程度λ\lambda
  6. 尝试增加正则化程度λ\lambda

这些方法并不是随机选择的,我们要根据实际场景(如偏差、方差问题)来进行选择。

数据集的划分

  • 训练集 :60%,用于训练出多个模型。
  • 验证集(交叉验证集):20%,用于计算交叉验证误差(也就是代价函数J(θ)J(\theta)),选择代价函数值最小的模型。
  • 测试集:20%,对选中的模型计算泛化误差,用于评估模型的泛化(generalize)能力。

诊断偏差和方差

机器学习中,偏差(bias) 指预测结果与真实值之间的差异,偏差反映模型无法准确表达数据关系。方差(variance) 是指多个(次)模型输出的结果之间的离散差异,方差反映了模型对训练集过度敏感,而丢失了数据规律。

  • 高偏差——欠拟合

  • 高方差——过拟合

多项式拟合中的偏差与方差

我们知道,对于训练集,当多项式次数 dd 越小时,模型拟合程度越低,误差越大;dd 越大时,模型拟合程度越高,误差越小。而对于交叉验证集,多项式次数 dd 越小时,模型拟合程度同样越低,误差越大;而随着 dd 的增长,误差呈现先减小后增大的趋势。因为此时多项式次数较高,训练误差很低,模型容易过拟合,对交叉验证集的数据泛化能力较差,交叉验证集的误差很高,此时的误差就属于方差。而当多项式次数较低时,不管是训练集还是交叉验证集,误差都很高,此时的误差就属于高偏差,因为此时模型容易欠拟合。

下图就是训练集、交叉验证集误差随多项式次数 dd 的变化规律

在这里插入图片描述

正规化中的偏差与方差

在线性回归和逻辑回归的学习中,我们知道通过引入正则化的手段可以防止模型过拟合。而正则化惩罚力度的大小(也就是 λ\lambda 的取值大小)也会对模型的误差产生类似上述多项式拟合的影响。

下图反映训练集和交叉验证集模型的代价函数误差与 λ\lambda 的值的变化规律:

在这里插入图片描述

λ\lambda 较小时,正则化惩罚力度较小或几乎没有,此时模型对训练集的拟合程度还是较高,误差还是较小,而应用到交叉验证集的误差就较大(因为过拟合)。

随着 λ\lambda 的不断增大,正则化惩罚力度不断加大,模型的对训练集的拟合程度逐渐降低,趋于欠拟合,训练集误差不断增大,而对于交叉验证集,误差会先减小后增大,因为模型会从过拟合逐渐达到一个最佳的拟合程度,也就是图中的转折点,在这之后模型趋于欠拟合时,误差自然就增大了。

神经网络中的偏差方差

当神经网络的结构较为简单时,也就是隐藏层数较少,则容易出现高偏差,但是计算代价较小;

当神经网络的结构较为复杂时,也就是隐藏层数较多,则容易出现高方差,虽然计算代价也比较大,但此时可以通过增大 λ\lambda 来解决。

学习曲线

学习曲线(Learning Curves)可以用来判断一个学习算法是否处于偏差、方差问题。学习曲线是将训练集误差和交叉验证集误差作为训练集样本数目 mm 的函数绘制的图表。

当样本数 mm 较小时,模型在训练集上容易拟合,训练集误差较小,但交叉验证集的误差较大(发现不了数据的规律);随着 mm 的增大,模型拟合难度会增大,训练集误差也开始增大,而交叉验证集的误差会降低,因为样本数多,模型的学习能力增强,更能发现数据规律。

下图反映了样本数目 mm 对训练集误差和交叉验证集误差的影响:

在这里插入图片描述

如果模型出现高偏差(欠拟合),增加再多的样本数,仍无法有效降低交叉验证集的误差。

在这里插入图片描述

如果模型出现高方差(过拟合),当交叉验证集误差远大于训练集误差时,此时若增加样本数,对降低交叉验证集的误差有一定帮助。

在这里插入图片描述

总结

方法适用场景
获得更多的训练样本解决高方差
尝试减少特征的数量解决高方差
尝试获得更多的特征解决高偏差
尝试增加多项式特征解决高偏差
尝试减少正则化程度λ\lambda解决高偏差
尝试增加正则化程度λ\lambda解决高方差

机器学习系统的设计

设计方法

  1. 先快速实现一个简单的算法,并用交叉验证集数据测试这个算法。
  2. 绘制学习曲线,根据图像判断存在的是哪些问题,是高偏差还是高方差?从而决定是增加更多数据,还是添加更多特征,还是其它方案。
  3. 进行误差分析,人工检查交叉验证集中我们算法中产生预测误差的样本。

评价指标

单纯的使用误差并不能全面的评价模型的好坏,因为对于样本不平衡的数据集(比如正样本过多,负样本太少,即数据集非常偏斜),用预测准确率来评估算法优劣是不准确的。所以引入下面两个重要的评价指标:查准率(Precision)查全率(Recall)

首先定义:

  • Positive:表示预测的样本为真。
    • True Positive 正确肯定:预测为真,实际为真
    • False Positive 错误肯定:预测为真,实际为假
  • Negative:表示预测的样本为假。
    • True Negative 正确否定:预测为假,实际为假
    • False Negative 错误否定:预测为假,实际为真
实际值 \预测值预测Positive预测Negtive
实际PositiveTPFN
实际NegtiveFPTN

查准率(Precision)

  • P=TPTP+FPP=\dfrac{TP}{TP+FP}

查全率(Recall)

  • R=TPTP+FNR=\dfrac{TP}{TP+FN}

为了更好的权衡两个指标,我们使用 F1Score\mathbf{F_1Score} 来综合两个指标:

  • F1Score2PRP+RF_1Score:2\dfrac{PR}{P+R}