# 如何减少最终机器学习模型中的方差

> 原文： [https://machinelearningmastery.com/how-to-reduce-model-variance/](https://machinelearningmastery.com/how-to-reduce-model-variance/)

最终的机器学习模型是对所有可用数据进行训练的模型，然后用于对新数据做出预测。

大多数最终模型的一个问题是它们的预测会出现差异。

这意味着每次适合模型时，您会得到一组略有不同的参数，这些参数反过来会使预测略有不同。有时候比你想象的更多，有时甚至更少。

这可能令人沮丧，尤其是当您希望将模型部署到操作环境中时。

在这篇文章中，您将了解如何考虑最终模型中的模型方差以及可用于减少最终模型预测方差的技术。

阅读这篇文章后，你会知道：

*   最终模型预测的方差问题。
*   在估计参数时，如何测量模型方差以及如何解决方差。
*   您可以使用的技术来减少最终模型的预测差异。

让我们开始吧。

![How to Reduce Variance in a Final Machine Learning Model](https://3qeqpr26caki16dnhd19sv6by6v-wpengine.netdna-ssl.com/wp-content/uploads/2018/08/How-to-Reduce-Variance-in-a-Final-Machine-Learning-Model.jpg)

如何减少最终机器学习模型中的差异
照片由 [Kirt Edblom](https://www.flickr.com/photos/kirt_edblom/41951791832/) 拍摄，保留一些权利。

## 最终模型

一旦您发现哪个模型和模型超参数可以获得数据集的最佳技能，您就可以准备最终模型了。

对所有可用数据进行最终模型训练，例如：训练和测试集。

如果您不知道结果，那么您将使用该模型对新数据做出预测。

最终模型是您应用的机器学习项目的结果。

要了解有关准备最终模型的更多信息，请参阅帖子：

*   [如何训练最终机器学习模型](https://machinelearningmastery.com/train-final-machine-learning-model/)

## 偏见和差异

偏方差权衡是应用机器学习中的一个概念性思想，有助于理解模型中的误差来源。

*   **偏差**是指学习算法中的假设，它缩小了可以学习的范围。这是有用的，因为它可以加速学习并导致稳定的结果，代价是与现实不同的假设。
*   **方差**是指学习算法对训练数据的细节的敏感性，例如，噪音和具体观察。这是好的，因为模型将专门用于数据，代价是学习随机噪声并且每次在不同数据上训练时都会变化。

偏方差权衡是一种概念工具，可以考虑这些误差来源以及它们如何始终保持平衡。

算法中的偏差越大意味着方差越小，反之亦然。

您可以在此帖子中了解有关偏差变化权衡的更多信息：

*   [机器学习中偏方差权衡的温和介绍](https://machinelearningmastery.com/gentle-introduction-to-the-bias-variance-trade-off-in-machine-learning/)

你可以控制这种平衡。

许多机器学习算法都有超参数，直接或间接允许您控制偏方差权衡。

例如，`k`- 最近邻居中的`k`是一个例子。小`k`导致具有高方差和低偏差的预测。大`k`导致预测具有小的方差和大的偏差。

## 最终模型中的方差问题

大多数最终模型都存在问题：它们存在差异。

每次通过具有高方差的算法训练模型时，您将得到略微不同的结果。

反过来，稍微不同的模型会做出稍微不同的预测，无论好坏。

这是训练最终模型的一个问题，因为我们需要使用该模型对我们不知道答案的真实数据做出预测，并且我们希望这些预测尽可能好。

我们希望获得我们可以获得的最佳模型版本。

我们希望方差对我们有利。

如果我们无法实现这一点，至少我们希望方差在做出预测时不会落在我们身上。

## 测量最终模型中的方差

最终模型中有两种常见的差异来源：

*   训练数据中的噪音。
*   在机器学习算法中使用随机性。

我们上面介绍的第一种类型。

第二种类型影响那些在学习过程中利用随机性的算法。

三个常见的例子包括：

*   随机森林中随机分裂点的选择。
*   神经网络中的随机权重初始化。
*   以随机梯度下降的方式改组训练数据。

您可以使用训练数据测量特定模型中的两种差异类型。

*   **测量算法方差**：通过在同一训练数据集上重复算法评估并计算模型技能的方差或标准差，可以测量算法的随机性引入的方差。
*   **测量训练数据方差**：训练数据引入的方差可以通过在不同训练数据样本上重复算法评估来测量，但保持伪随机数发生器的种子固定然后计算方差或模型技能的标准差。

通常，通过在训练数据集上运行重复的k折交叉验证然后计算模型技能的方差或标准偏差来估计组合方差。

## 减少估计的方差

如果我们想减少预测中的方差量，我们必须增加偏差。

考虑人口参数的简单统计估计的情况，例如从小的随机数据样本估计平均值。

对均值的单一估计将具有高方差和低偏差。

这是直观的，因为如果我们重复这个过程30次并计算估计平均值的标准偏差，我们会看到很大的差异。

减少方差的解决方案也很直观。

对来自域的许多不同的小数据样本重复估计，并根据[中心极限定理](https://machinelearningmastery.com/a-gentle-introduction-to-the-central-limit-theorem-for-machine-learning/)计算估计的平均值。

估计平均值的平均值将具有较低的方差。我们假设估算的平均值比单一估算值更准确，我们增加了偏差。

另一种方法是大幅增加我们估计人口平均值的数据样本的大小，依赖于大数的[定律。](https://machinelearningmastery.com/a-gentle-introduction-to-the-law-of-large-numbers-in-machine-learning/)

## 减少最终模型的差异

用于减少总体统计量方差的原则也可用于减少最终模型的方差。

我们必须增加偏见。

根据最终模型的具体形式（例如树，重量等），您可以通过这个想法获得创意。

以下是您可能想要尝试的三种方法。

如果可能的话，我建议设计一个测试工具来试验并发现一种最适合您的方法，或者对您的特定数据集和机器学习算法最有意义的方法。

### 1.最终模型的集合预测

您可以安装多个最终模型，而不是安装单个最终模型。

最终模型组可以一起用作整体。

对于给定的输入，集合中的每个模型做出预测，并且最终输出预测被视为模型的预测的平均值。

灵敏度分析可用于测量集合大小对预测方差的影响。

### 2.最终模型的集合参数

如上所述，可以创建多个最终模型而不是单个最终模型。

不是从最终模型计算预测的平均值，而是可以将单个最终模型构造为最终模型组的[参数](https://machinelearningmastery.com/difference-between-a-parameter-and-a-hyperparameter/)的集合。

这只有在每个模型具有相同数量的参数（例如神经网络权重或回归系数）的情况下才有意义。

例如，考虑具有三个系数[b0，b1，b2]的线性回归模型。我们可以拟合一组线性回归模型，并计算最终b0作为每个模型中b0参数的平均值，并对b1和b2重复此过程。

同样，灵敏度分析可用于测量集合大小对预测方差的影响。

### 3.增加训练数据集大小

依靠大数定律，也许最简单的减少模型方差的方法是使模型适合更多的训练数据。

在那些不容易获得更多数据的情况下，也许可以使用数据增强方法。

建议对训练数据集大小与预测方差进行灵敏度分析，以找出收益递减点。

## 脆弱的思考

有一些方法可以准备最终模型，旨在让最终模型中的方差为您而不是对您起作用。

这些方法的共性是它们寻求单一最佳最终模型。

两个例子包括：

*   **为什么不修理随机种子？** 您可以在拟合最终模型时修复随机种子。这将限制由算法的随机性引入的方差。
*   **为什么不早点停车？** 您可以在训练期间检查模型的技能，并在保持集上的模型技能开始降低时停止训练。

我认为这些方法和其他类似方法都很脆弱。

也许你可以赌博并瞄准差异，以对你有利。这对于机器学习竞赛来说可能是一个很好的方法，因为没有真正的缺点就是失去赌博。

我不会。

我认为瞄准最佳平均表现并限制下行更为安全。

我认为，导航最终模型的偏方差权衡的技巧是在样本中思考，而不是单个模型。优化平均模型表现。

## 进一步阅读

如果您希望深入了解，本节将提供有关该主题的更多资源。

*   [如何训练最终机器学习模型](https://machinelearningmastery.com/train-final-machine-learning-model/)
*   [机器学习中偏方差权衡的温和介绍](https://machinelearningmastery.com/gentle-introduction-to-the-bias-variance-trade-off-in-machine-learning/)
*   [维基百科上的偏方差权衡](https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff)
*   [Checkpoint Ensembles：单一训练过程中的集合方法](https://arxiv.org/abs/1710.03282)，2017。

## 摘要

在这篇文章中，您发现了如何考虑最终模型中的模型方差以及可用于减少最终模型预测方差的技术。

具体来说，你学到了：

*   最终模型预测的方差问题。
*   在估计参数时，如何测量模型方差以及如何解决方差。
*   您可以使用的技术来减少最终模型的预测差异。

你有任何问题吗？
在下面的评论中提出您的问题，我会尽力回答。