第8章 负荷预测模型训练与选择

第5章和第6章已经展示了如何定义时间序列预测、如何准备数据以及如何为模型生成输入。第9章至第11章将展示几种预测需求的方法。然而,尽管第7章为我们提供了衡量预测准确性的工具,以下问题仍未得到充分回答:我们如何训练和选择能够持续产生准确预测的模型?

本章将通过探讨创建良好预测的一些最重要方面来研究这个问题,包括正确使用基准测试,以及如何使用交叉验证来正确训练模型。交叉验证的基础是创建良好预测的最重要方面之一,即所谓的偏差-方差权衡原则,将在第8.1.2节中讨论。这确保模型不会过度(或不足)训练,并使模型能够更好地泛化到新的未见数据。接下来,在第8.2节中,考虑了训练模型的方法,包括从一组模型中选择最佳模型的方法。第8.2.4节和第8.2.5节涵盖的一组重要技术是正则化,它有助于减少过拟合,并且还涉及如何在一族模型中找到合适的超参数。

8.1 预测试验的一般原则

在前几节中,引入了预测问题的一般形式,以及通过误差度量对预测准确性进行评分的方法。本节介绍一些一般性原则,旨在帮助从业者正确设计和开发预测试验。这包括考虑为什么选择合适的基准对于更好地理解模型的准确性很重要;为什么避免对数据过拟合或欠拟合很重要;以及如何划分数据以正确训练和测试模型。

8.1.1 基准测试

模型的误差分数(见第7章)本身并不能提供太多信息。预测的准确性只能在其他设计良好的预测的背景下才能理解。基准模型是创建有用且准确预测的关键组成部分。它们能够提供信息丰富的比较,并有助于更好地理解数据中重要(和不重要)的特征和关系。通常简单的基准可能相当有效,因为它们强大的性能可以提示预测准确性的重要特征或驱动因素。与基准相比,您的模型提高了多少也可以用作性能指标(见7.4节的技能得分)。

大多数基准属于以下类别:

  1. 简单或朴素基准。这些是非常基础的基准模型,具有最少的特征和参数。它们作为主预测模型应该超越的最低标准。如果没有,那么由于其简单形式,这些基准应该能够建议对当前模型的改进或指出所选模型中的缺陷。选择几个这样的简单基准还可以突出底层数据中一些最重要的特征。预测试验中至少应有一个简单基准。
  2. 常见基准。不同的应用会有一些常用作基准的模型。例如,这可能是ARIMAX或简单线性回归模型(预测模型将在第9章详细介绍)。这很有帮助,因为它允许在不同实验之间进行一定程度的模型比较,即使底层数据或情况完全不同。
  3. 最先进的基准。通常希望与当前可用的最佳方法进行比较,并在不同模型的选择中实现一个最先进的版本。即使模型没有完全超越业务中最好的模型,如果模型与经过多次实验和数据集验证且表现良好的模型性能相似,也可以对其给予信心。在许多情况下,可能很难识别任何单一模型在一般情况下表现良好,因此应至少选择一个众所周知的、有竞争力的模型用于实验中的比较。

除了选择朴素或常见模型外,选择基准的一个简单方法是基于对因变量似乎重要的至少一个特征/关系。在负荷预测中,通常存在每周或每日的季节性,因此通常选择包含这些特征的基准模型。第9.1节将介绍几种常用的负荷预测基准方法。

应该强调的是,仅仅因为模型的误差最小,并不能保证它在所选应用中使用时能达到最佳性能。然而,通过在所选应用中测试每个预测模型来评估模型通常计算上不可行(例如,第15.1节中介绍的存储控制)。这就是为什么仔细选择反映预测目标的预测误差度量很重要(见第7章)。

8.1.2 偏差-方差权衡

偏差-方差权衡是创建准确预测中最重要的概念之一。如第5.2节和方程(5.27)所示,时间序列预测本质上是一个函数,它接受各种输入以给出所需输出。函数的性质由许多参数决定,这些参数必须在历史数据上训练。如何正确选择和训练参数会对预测的整体准确性产生很大影响。

如第4章所述,机器学习被定义为从数据中学习以提高预测性能的算法。然而,如果机器学习模型只能基于其训练数据中的实例准确预测,则没有实用价值。这里,一个简单记住所有训练数据的模型理论上可以达到完美性能。但对于所有实际问题,这是无意义的,因为通常不可能测量所有可能的输入(例如,如果变量是实值的)。因此,核心挑战是训练一个在未见过的、新输入上表现良好的机器学习模型。在先前未观察到的输入上表现良好的能力称为泛化。

在一方面,可能希望选择一个参数众多的模型,并对其进行训练,使其与训练数据紧密拟合。然而,参数越多,模型就越有可能拟合时间序列信号中的虚假噪声,从而难以很好地推广到新数据。这通常被称为模型与数据的过拟合。在这种情况下,模型输入的微小变化会导致较大的误差,因此模型被认为具有高方差。高方差模型不能很好地泛化到新数据。相反,参数很少的模型会遗漏时间序列的一些核心特征,导致欠拟合。这意味着平均误差会相当大,模型被认为具有高偏差。

偏差和方差可以用更精确的数学术语来表达。考虑一个模型,它通过函数f将因变量L(例如负荷)与自变量Z(如温度)之间的真实关系联系起来,

$$\begin{aligned} \hat{L} = f(Z) +\epsilon , \end{aligned}\tag{8.1}$$

并带有噪声(假设均值为零)。目的是通过从观测值的训练数据中学习参数 $\beta$,开发一个估计真实函数 $f(Z)$ 的模型 ${\hat{f}}(Z,\beta)$。现在假设这个估计是通过最小化均方误差(时间序列预测中常用的误差度量,见第7章)得到的,

$$\begin{aligned} MSE(f(Z), \hat{f}(Z, \boldsymbol{\beta })) = \mathbb {E}[(f(Z) - \hat{f}(Z, \boldsymbol{\beta }))^2]. \end{aligned}\tag{8.2}$$

结果发现它可以分解如下:

$$\begin{aligned} \mathbb {E}[(f(Z) - \hat{f}(Z, \boldsymbol{\beta }))^2)] = (\mathbb {E}[\hat{f}(Z, \boldsymbol{\beta })] - f(Z))^2 + \mathbb {E}[(\hat{f}(Z, \boldsymbol{\beta })-\mathbb {E}[\hat{f}(Z, \boldsymbol{\beta })])^2]+\sigma ^2, \end{aligned}\tag{8.3}$$

其中 $\sigma^{2}$ 是 $\epsilon.$ 的方差。第一项是偏差 $(\mathbb{E}[\hat{f}(Z,\beta)]-$ $f(Z))^{2}$ 的平方,描述模型输出与真实函数输出之间的差异。如果模型过于简单,无法捕捉数据中的模式,偏差项将很大。第二项 E $[(\hat{f}(Z,\beta)-\mathbb{E}[\hat{f}(Z,\beta)])^{2}]$ 是方差,描述模型输出围绕均值的离散程度。在实际中,它衡量误差围绕均值的扩散程度。最后是 $\sigma^{2}$ 定义的不可约误差。这是永远无法减少的误差,限制了MSE能降低的程度。保持低偏差和低方差是持续产生准确预测的关键,即模型既要捕捉数据的主要特征,又要很好地泛化到新数据。

举例来说,考虑一个简单模型 $y=x^{3}-15x^{2}+66x-60+\epsilon$,带有不可约误差,其被选为均值为零、方差为 $\sigma^{2}=20$ 的高斯分布。该函数以x为输入,给出观测输出 $y$。从真实模型 $x^{3}-15x^{2}+66x-60$ 生成点,得到输入-输出对 $(x_{k},y_{k})$(对于 $k=1,\ldots,50$)。为了模拟真实系统,从高斯分布中随机抽取误差样本 -k,添加到每个真实因变量 $y_{k}$ 上,得到观测点 $\hat{y}_{k}=y_{k}+\epsilon_{k},\text{ for }k=1,...,50$。因此,建模者不知道真实输出,只能看到带有噪声输出的输入,即 $(x_{k},\hat{y}_{k})$。这意味着任何模型都无法与原始观测完美匹配。

现在考虑对这些噪声点拟合不同阶数的多项式。第一个模型是形式为 $a_{1}x+a_{0}$ 的简单线性模型,这是一个参数不足的模型,预期具有高偏差但低方差。第二个模型是形式为 $a_{3}x^{3}+a_{2}x^{2}+a_{1}x+a_{0}\qquad$ 的三次多项式,应能在匹配数据总体形状与不过拟合噪声之间取得良好平衡。最后一个模型是20次多项式,即形式为 $a_{20}x^{20}+a_{19}x^{19}+\cdot\cdot\cdot a_{2}x^{2}+$ $a_{1}x+a_{0}$,预期会对数据过拟合,从而具有高方差。对每种情况,训练系数($a_{i}^{\prime}s)$)以找到该模型对点的最佳拟合(如何训练拟合将在第8.2节中讨论)。

三种不同模型的结果如图8.1所示。正如预期,最佳拟合模型是三次模型,它非常接近原始曲线和噪声观测值(红圈)。高度参数化的20次多项式明显过拟合了噪声,并且不能很好地泛化(即不能正确估计输出)到新输入,它具有高方差。相比之下,左边的线性多项式对数据拟合不佳,但抓住了总体水平。它具有高偏差,明显欠拟合数据。

有几种策略可以避免数据过拟合或欠拟合。本章将介绍多种技术,包括下一节的交叉验证、正则化方法(第8.2.4节)和信息准则(第8.2.2节)。

图8.1 通过拟合不同次数的多项式(粗黑曲线)到观测值(红圈)展示偏差-方差权衡的示例。生成数据的真实多项式也用细黑线显示。左图显示使用1次多项式的拟合,中图使用3次多项式模型,右图使用20次多项式。详细内容见正文。

8.1.3 交叉验证方法

为了理解预测模型在实际中的表现,必须将可用的训练数据分成合适的部分。时间序列数据(本书的焦点)由于数据的时序顺序,增加了额外的潜在限制。本节将讨论交叉验证的一些动机和原则。

预测模型必须在未见过的数据上进行测试,以确保预测器不会不切实际地(下意识地或通过其他方式)调整模型,使其得分高于实际可能达到的水平。在实际应用中,未来的数据不可用,预测器无法提前知道实际值。因此,设计预测试验很像在医学中设计盲法实验,以检验某个特定的假设,即某种治疗是否有效。

另一个相关的拆分数据的原因是选择一个具有良好偏差-方差权衡的模型(参见第8.1.2节)。交叉验证,即本节的主题,是一种选择模型的方法,使其不会对数据过拟合或欠拟合,即它能够很好地泛化到未见过的数据。

由于这些原因,机器学习试验中的数据被分为未见过的部分,称为测试集或留出集,以及用于训练模型参数和超参数的部分,通常称为训练集。对于时间序列,数据的顺序通常是相关的,因此测试集通常按时间顺序跟在训练集之后。我们称之为时间序列拆分(其他方法将在稍后讨论)。例如,考虑一个时间序列 $L_{1},L_{2},\dots L_{N+k}$,其中 N, k > 1,假设目标是为由时间步 $N+1,N+2,\ldots,N+k$ 处的数据组成的测试集生成1步超前预测。测试集开始之前的任何数据(包括任何其他解释变量,见第5.2节)都属于训练数据。然后执行以下步骤:

  1. 第一个预测值 $\hat{L}_{N+1}$ 是通过在当前训练数据 $L_1, L_2, \ldots L_{N}$(以及任何其他解释数据)上训练模型(参见式(5.27))生成的。
  2. 下一步超前预测 $L_{N+2}$ 然后通过在 $L_1, L_2, \ldots L_{N+1}$ 上重新训练1数据生成(即,现在将 $N+1$ 处的最后一个观测值包含在新的训练数据中)。
  3. 这个过程继续,直到达到测试期的第k个时间步。

注意,如果从一步超前预测生成多步超前点预测,则使用之前时间步的预测值(而非实际观测值)作为模型输入,例如,对于第m步超前,预测将使用 $L_{1},L_{2},\ldots,L_{N},\hat{L}_{N+1},\ldots,\hat{L}_{N+m-1}$ 作为输入。

为了找到最准确的预测,可以在训练集上训练大量模型,并比较其预测误差。然而,这通常在计算上不可行。此外,大量模型的试验增加了某个特定预测偶然获得高性能的可能性,而不是由于其特别适合预测数据行为。因此,测试相对较少的模型更为实用和可靠。回顾第8.1.2节,创建预测时的核心目标是平衡偏差和方差,并找到一个能够准确泛化到新数据的模型。这意味着既不要使用过于复杂的模型导致对训练集过拟合,也不要使用过于简单的模型导致欠拟合。

最常见的做法之一是从训练集的末尾拆分出另一个集合,称为验证集,并利用它来帮助选择一个训练良好的模型以及选择合适的超参数(第8.2.3节)。超参数是算法中必须在训练确定权重等其他参数之前选择的参数,并影响训练。例如,第8.2.4节正则化方法中使用的正则化参数,以及人工神经网络中的层数和节点数(第10.4节)。现在,原始缩短的数据集被简单地重新命名为训练数据。

为了使用验证数据集进行模型选择,在训练数据上拟合一系列具有不同超参数值的模型(例如,对于神经网络,每层的节点数、层数,见第10.4节),用于生成验证数据集中的数据预测(即,以与测试集类似的方式生成)。然后比较模型的性能,例如使用第7章介绍的误差度量,并选择性能最佳的模型在测试集上生成预测,通常是在合并的训练集和验证集上重新训练之后。使用验证集引入的模型额外测试通过消除过训练或欠训练的模型来改善偏差-方差权衡。此外,在验证集和测试集上的良好表现增强了使用这些模型的信心。第8.2.3节讨论了更多的超参数选择方法。

图8.2 示例:将时间序列按3:1:1的比例划分为训练集、验证集和测试集。

说明将时间序列按3:1:1比例拆分为训练集、验证集和测试集

数据的常见划分是将约60%、20%、20%分别分配给训练集、验证集和测试集,不过可根据具体问题调整。如前所述,更多的测试数据会增加对模型性能的信心,但需要足够的训练数据来提高模型尽可能泛化的机会。将数据划分为训练集、验证集和测试集的示意图如图8.2.2所示。

基于上述数据划分,以下是生成预测的典型流程:

  1. 给定一个(或多个)预测模型族以及合适的基准模型(第8.1.1节),在训练数据上训练模型参数。
  2. 在验证集上生成预测,并在同一模型族内比较各模型(使用第7章将介绍的适当误差度量),以选择一组最优的超参数值。
  3. 对于选定的模型(可能包括每个模型族的一两种超参数选择),在组合的训练集和验证集上重新训练模型。
  4. 在测试集上生成预测。

为说明该过程,考虑一个简单示例。取模型 $y=\sin(x)+$ $0.2\sin(2x)+0.4\sin(4x)$,用于在 $x_{k}=0.2(k-1)$ 处为 $k=1,2,\ldots,100$ 生成值 $y_{k}$,以产生100个点 $(x_{k},y_{k})$。为使数据更真实,在 y 值上添加来自均值为0、方差为0.4的高斯分布的随机样本,以生成更新后的输入-输出对 $(x_{k},\hat{y}_{k})$。接下来,考虑对含噪声观测值拟合一组如下形式的模型:

图8.3 按照文中描述的简单示例进行验证和测试的图示。a 显示模型 $M_1$ 和 $M_4$ 对验证集(阴影部分)的预测;b 显示相同模型对测试集的预测;c 总结了模型 $M_N$($N=1,\ldots,10$)在验证集和测试集上的RMSE误差(式8.4)。

$$\begin{aligned} M_N (x) = \sum _{n=1}^N a_n\sin (n x), \end{aligned}\tag{8.4}$$

对于 $N=1,2,\ldots,10$,较大的 N 值会向模型中引入更多高频项。注意 N 是该模型族的一个超参数。设前60%的点为训练集(定义于 $x=0,0.2,\ldots,11.8)$),接下来20%为验证集 $(x=12,12.2,\ldots,15.8)$,最后20%为测试集(点 $x=16,16.2,\ldots,19.8)$)。对每个 N,在训练数据集上训练模型。

图8.3a 显示了在训练集上训练的模型 $M_{1}$ 和 $M_{4}$,包括其在验证集(阴影框)上的预测。含噪声观测值显示为红色圆圈。从该图可以清楚地看出,最简单的模型 $M_{1}$ 捕捉了主要周期行为,但遗漏了较高频率的振荡。相比之下,模型 $M_{4}$(与真实模型阶数匹配)要准确得多,正如预期。类似地,图8.3b 显示了相同模型对测试集的预测。此预测现在是通过在原始训练数据集和验证集上训练形成的。

十个模型在验证集和测试集上的 RMSE 误差(第7章)如图8.3c 所示。对于 $N=4$,验证集和测试集的精度均下降,这是因为模型复杂性要求至少包含 sin(4x) 的周期项。此外,对于这些模型,$a_{1},a_{2},a_{4}$ 系数的幅度最大,正如预期,因为它们与实际基础模型 $y=\sin(x)+0.2\sin(2x)+0.4\sin(4x)$ 中的项一致。注意测试集上的误差小于验证集上的误差,这可能是由于有更多的训练数据可用于更好地细化系数。尽管所有模型都已应用于验证集和测试集,但在实践中,可能只有表现最佳的模型才会被用于在测试集上进行预测,特别是当模型计算开销很大时。

图8.4 各种交叉验证方案的比较。图来自《教程1:基于机器学习的建筑负荷预测》,许可协议 CC BY 4.0

还有几种其他交叉验证方法,它们以不同的方式分割数据。这些方法在图8.4中进行了说明。中间是如上详细说明的时间序列分割,但也显示了块状分割(左)和随机打乱分割(右)。块状方法将数据分割成测试块(通常大小相同),但与时间序列分割不同,这种分割使用测试块前后数据来训练数据。随机打乱分割则使用随机样本来生成测试集和训练集。

块状和随机打乱分割的优势在于可以利用更多数据来训练模型,但对于时间序列问题,这可能不太现实,因为通常无法获得关注时段之后的数据。因此,当考虑横截面模型或数据可用性非常有限且难以使用时间序列分割进行适当训练时,这些方法可能更合适。

最后值得注意的是,如果可用数据不足,可能没有任何分割选择适合创建准确的预测。例如,考虑对具有年度季节性(如电力需求的通常情况)的小时时间序列数据进行日或周前预测。如果只有一年的数据可用,则不太可能训练出能够准确捕捉年度季节性的模型。即使有两年的数据,这仍然可能很困难,因为其中一年可能是特别不寻常的年份,可能不代表预测者试图建模的典型年份(例如,考虑2018年发生在英国的异常寒流“东方野兽”)。然而,显然事先可能并不知道数据是否不足以保证准确预测,只有随着更多测试的进行和更多数据的可用才会变得明显。

8.2 训练与选择模型

一旦数据经过预处理(第6.1节)、确定要包含的特征(第6.2.2节)并选择初始预测模型(见第9章),就必须训练模型的参数/系数并选择最终模型。这通常通过交叉验证(见第8.1.3节)来完成。本节深入探讨如何训练预测模型以及进一步选择准确模型的技术。

对训练集中实例的预测性能称为训练误差。减少训练误差通常是优化任务的一部分,通常通过梯度下降类方法(第4.3节)来解决。然而,将机器学习与简单优化区分开来的是,泛化误差也应该被最小化。泛化误差定义为新输入上误差的期望值,理想情况下来自我们期望算法在实践中遇到的输入分布。为了模拟这一点,在训练模型和调整其超参数的过程中,通过评估在独立于训练集收集的测试集示例上的性能来估计泛化误差。在创建测试集(或像第8.1.3节中更详细讨论的交叉验证中的多个测试集)时,做出了以下所谓的独立同分布假设:

• 每个数据集中的示例彼此独立,

训练集和测试集同分布。

在这些假设下,可以预期对于随机模型,期望训练误差等于期望测试误差。然而,在实践中,由于模型参数的选择是为了最小化训练集误差,期望测试误差大于(或等于)训练误差的期望值。因此,为了获得一个泛化良好的准确模型,模型应该最小化训练误差,同时最小化训练集和测试集误差之间的差距。图8.5说明了训练误差和泛化误差相对于模型容量(即模型复杂度)的典型关系。

这提供了另一种理解第8.1.2节中提到的偏差-方差权衡的方式。如果模型不能充分最小化训练误差,则对应模型欠拟合数据/观测值。相反,如果测试误差和训练误差之间的差距太大,则是过拟合数据。这些情况在图8.5中说明。通常,可以通过权衡方差和偏差来控制过拟合和欠拟合,这可以使用第8.1.3节中描述的交叉验证方法以及第8.2.4节中描述的正则化方法来确定。

训练特定模型有多种方式,但某些模型通常使用特定方法。例如,线性回归模型(第9.3节)通常使用最小二乘估计,而人工神经网络(第10.4节)通常通过反向传播技术求解。在标准编程包中实现特定预测模型时,它们将基于已被证明最适合该方法的那些技术进行训练。为了说明训练预测模型的一些原理,以下各节考虑了一些常见技术,如最小二乘估计和最大似然估计,同时也描述了一些控制机器学习模型泛化误差的更多原理和策略,特别是正则化技术。正则化指的是旨在减少泛化误差(而非训练误差)的策略和模型修改。在实践中,多种策略被组合使用。

图8.5 模型容量(例如复杂度或参数数量)与训练误差和泛化误差之间的典型关系

8.2.1 最小二乘与最大似然模型拟合

训练的一般目标是找到模型与观测之间的良好拟合。然而,如前几节所述,如果选择的参数过多,模型可能会在训练集上过拟合,并且不能很好地泛化到测试集(或任何其他未见数据)。一个特征选择得当的模型将在偏差和方差之间取得良好的权衡,并在测试集上表现更好(参见第8.1.2节)。

什么是“良好”的拟合相对主观,但需要一致的度量来衡量观测与模型之间的差异。最佳选择通常是实际考虑与最适合应用场景(例如,如第15.1节所述的储能设备控制)之间的平衡,因此应根据情况对模型进行相应的评估和测试。此类度量的良好候选是第7章中介绍的 p-范数。

正如相应评估章节(第7章)所讨论的,$p$ 的选择可以改变误差的重点,较大的 $p$ 值意味着最终的误差分数更能代表较大的误差,相比于具有较小 $p.$ 的 p-范数。

此外,某些范数(如1-范数)不可微,这使得训练最优参数比可微函数更困难,而可微函数可以通过梯度方法进行优化(参见第4.3节)。2-范数是可微的,因此常被用作参数估计的基础,特别是它是所谓最小二乘估计中的核心度量。

最小二乘估计(LSE)是最常见的参数训练方法之一,尤其适用于线性回归模型。其目标是使残差的平方和最小。回顾残差是真实观测值(例如 $Y_{k}$)与模型估计值(例如 $\hat{Y}_{k} = f_k(Z, \boldsymbol{\beta })$)之间的差值,其中 $Z$ 表示输入变量,$\beta$ 是待估计模型的参数集。最小二乘问题可以写为:

$$\begin{aligned} \hat{\boldsymbol{\beta }} = {\arg \min }_{\boldsymbol{\beta }\in \mathcal {B}} \sum _{k=1}^N (Y_{k} - f_{k}(Z, \boldsymbol{\beta }))^2, \end{aligned}\tag{8.5}$$

其中 $r_{k}=Y_{k}-f_{k}(Z,\beta)$ 是残差。项 arg min 的含义是在某些可行的值集(此处由 $\boldsymbol{B}$ 表示,并定义了 $\beta$ 可能取值的合理空间)中寻找使方程 $\sum _{k=1}^N (Y_{n+k} - f_{n+k}(Z, \boldsymbol{\beta }))^2$ 最小的参数。该过程如图8.6所示,其中展示了对一组观测的最佳拟合直线。图中观测值与直线之间的垂直距离是模型的残差,最小二乘估计的目标就是使这些残差的平方和最小。最小二乘方法的一个优点是求解相对容易,尤其是对于线性模型(即参数线性组合的模型——$\sum _{k=1}^N\alpha _k\phi _k(x)$,其中 $\alpha_{k}{'}\mathrm{s}$ 是待求的常数系数/参数),这是因为方程(8.5)中的最小二乘问题是可微的,因此可以通过对参数集 $\beta$ 中的每个元素求导并令其为零来求解。

图8.6 最小二乘估计拟合单变量线性模型(红色虚线)到四个数据点(蓝色点)的示意图。最小二乘拟合使垂直残差的平方和最小。

训练模型参数最重要的统计方法之一是最大似然估计(MLE)。该方法将模型误差置于概率框架内,从而允许进一步的统计分析和应用其他方法(例如,在第8.2.2节中将展示如何由此实现模型选择的方法)。MLE的目标是创建一个似然函数,该函数基于描述模型拟合误差分布的密度函数。因此,最大化该函数可以在给定假设分布值的情况下找到最可能使误差最小的参数。得到的参数称为最大似然估计。

接下来的讨论需要一些单变量概率分布的基础知识。为了说明最大似然估计(MLE),考虑一个基本情况,其中误差服从正态分布(见第3.1节),均值为零,固定标准差为$\sigma$。假设有限的观测数据由$Y_1, \ldots , Y_N$给出,模型$f_{k}(Z,\beta)$旨在逼近这些观测。误差如前所述由残差$r_{k} = Y_{k} - f_{k}(Z, \boldsymbol{\beta })$给出,概率模型可以写为

$$\begin{aligned} P(r_k, \boldsymbol{\beta }) = \frac{1}{\sqrt{2\pi } \sigma } \exp \left( \frac{-(r_k - 0)^2}{\sigma ^2} \right) , \end{aligned}\tag{8.6}$$

其中显式写出零以说明标准高斯分布格式。$\beta$(此处即为标准差 $\sigma$)也被包含以显示该值对模型参数的依赖性。似然函数实际上是所有观测下模型的概率,换句话说:

$$\begin{aligned} L(\beta ; Y_1, \ldots , Y_N) = \prod _{k=1}^N P(r_k, \boldsymbol{\beta }) = \frac{1}{(\sqrt{2\pi } \sigma )^N} \prod _{k=1}^N \exp \left( \frac{-(r_k)^2}{\sigma ^2} \right) . \end{aligned}\tag{8.7}$$

通常直接求解似然函数是困难的,因此转而求解对数似然函数,它只是似然函数的对数。

$$\begin{aligned} log(L(\beta ; Y_1, \ldots , Y_N)) = -\frac{N}{2} \log (2\pi \sigma ^2) - \frac{1}{2\sigma ^2}\sum _{k=1}^N r_k^2. \end{aligned}\tag{8.8}$$

由于对数函数是严格递增函数,最大化似然等价于最大化对数似然。此外,在这种情况下,第一项 $\frac{N}{2} \log (2\pi \sigma ^2)$ $\sum _{k=1}^N r_k^2$ 换句话说,求解式(8.5)中的最小二乘问题。当然,这仅适用于假设分布为高斯分布的非常特定的情况,但也可以考虑更复杂的分布,不过它们更难解析求解。

最小二乘和极大似然函数都是代价函数的例子,该函数提供观测数据 $Y_{k}$ 与模型估计 $f_{k}(Z,\beta)$ 之间的代价。标准的p-范数型误差如RMSE和MAPE(见第7章)也可用于定义基本的代价函数。代价函数可以非常通用,具有不同的权重和/或结构,可以迫使模型拟合数据的不同特征。例如,如第7章所示,弹球损失得分可作为代价函数用于生成分位数估计,而使用最小二乘则可生成期望值的估计。与最小二乘和MLE一样,目标是优化模型的参数 $\beta$ 以达到代价函数的最优值。寻找最优拟合的常用方法是通过梯度方法,这些方法在第4.3节中介绍,并且在拟合机器学习模型时广泛使用。

如8.1.2节所述,过拟合模型会导致较大的泛化误差。避免这种情况的一种方法是使用交叉验证,并使用验证集选择不会过拟合的模型(8.1.3节)。然而,在某些情况下,常常采用其他技术来减少预测模型过拟合的影响。以下章节将探讨这些技术。

8.2.2 信息准则

上述似然框架便于使用信息准则进行模型选择,特别适用于选择ARIMA方法的模型阶数(9.4节)以及在线性回归模型中进行选择。考虑似然函数L,例如当残差假设服从高斯分布时,如式(8.7)所示,在极大似然估计参数 ${\hat{\boldsymbol{\beta }}}$ 处求值,从而得到极大似然值 $\hat{L}$ 。在这种情况下,最佳拟合可以通过所谓的“信息准则”来表述,其中最著名的例子是贝叶斯信息准则(BIC),定义为

$$\begin{aligned} BIC = M.\ln (N) - 2\ln (\hat{L}) \end{aligned}\tag{8.9}$$

以及赤池信息准则(AIC),定义为

$$\begin{aligned} AIC = 2M - 2\ln (\hat{L}), \end{aligned}\tag{8.10}$$

其中M是模型中的参数个数,N是观测个数。两者都产生一个代价函数,该函数由对数似然(衡量数据与模型之间拟合的度量)和惩罚项(惩罚模型中参数的数量)混合而成。因此,通过优化信息准则,可以在良好拟合和模型输入数量之间取得平衡,并减少过拟合数据的可能性。这样的模型称为简约模型。从公式可以看出,AIC对似然的惩罚比BIC更大,因此通常优化得到参数较少的模型。对于预测建模,AIC被认为比BIC更合适[1]。注意还有其他几种信息准则,但BIC和AIC是最常见的。

对于可以在似然框架中建立的模型,信息准则方法通常替代验证集(8.1.3节)使用,尤其是在训练数据不足的情况下。然而,如果有足够的数据,且可以创建充分代表真实观测合理样本的测试集,那么交叉验证可能是更优的选择。

8.2.3 超参数调优

优化机器学习模型的主要目标是找到一组最优参数,例如神经网络的权重或线性回归的系数。然而,有些参数必须选择,它们会影响优化本身,例如其他章节介绍的步长、批量大小、激活函数和正则化参数(8.2.4节和8.2.5节)等不同参数。此外,模型可能引入更多参数,如神经网络的架构(层数和每层神经元数量)或多项式回归中多项式的阶数。这类参数称为超参数。

在8.2.2节中,信息准则被展示为选择线性模型最优阶数的一种方法。例如,通过选择具有最小AIC(或BIC)的模型,可以选择一个更简约的模型而不会牺牲模型拟合。然而,信息准则模型不适用于其他类型的模型,如神经网络或基于树的模型。

对于超参数较少的简单模型,常见方法是在每个维度的合理参数网格中穷举搜索最佳配置。实值参数通常在线性或对数尺度上在可行值范围内采样。然而,参数也可以是分类或二值的。这种方法称为网格搜索。然而,当调优大型神经网络的许多超参数时,这种方法不切实际,因为训练可能需要数小时甚至数天或数周。此时,可以从超参数的每个维度随机采样。这种方法称为随机搜索,已证明优于网格搜索,尤其是当只有少数超参数影响模型性能时,即优化问题具有较低的内在维度。随机搜索还有一个优点,即它是一种任意时间算法,可以在达到特定计算预算(即特定抽取次数或计算时间)后停止算法。然后选择搜索过程中找到的最佳解。它也易于并行化。通过选择特定分布,还可以加入先验知识以帮助聚焦搜索。

(a) 网格搜索

(b) 随机搜索

(c) 贝叶斯优化

图8.7 基于两个超参数的模型示例性能。对每个超参数,评估并比较十个不同的值。蓝色等高线表示结果较好的区域,而红色表示结果较差的区域。来源:Alexander Elvers,CC BY-SA 4.0。

由于超参数选择是一个优化问题,可以使用不同的通用优化方法,包括元启发式方法,如进化算法和其他基于种群的算法。其中一类流行且成功的方法是贝叶斯优化方法。贝叶斯优化构建一个概率模型,描述超参数值如何映射到在验证集上确定的模型性能。随着搜索空间信息的逐步获取,概率假设被迭代更新,以包含越来越多的信息。不同算法的区别在于如何平衡探索(结果不确定的超参数)和利用(通过采样预期接近最优的超参数来增加)。图8.7展示了网格搜索、随机搜索和贝叶斯优化采样搜索空间的示例。可以看出,贝叶斯优化更有效地探索搜索空间。在接近真正最优值的区域,观测点更密集,而在表现较差的区域,采样点较少。这通常可以比网格搜索和随机搜索更快地获得更好或相似的结果。

8.2.4 权重正则化

与8.2.2节中介绍的信息准则类似,正则化也使用基于参数数量的惩罚来尝试减少过拟合,并且正如在LASSO中会看到的,它还可以用于特征选择。这里介绍的正则化方法通常应用于线性回归和人工神经网络(第10.4节)模型,尽管这些原理可以推广到任何代价函数。

最好通过一个例子来展示这个原理。考虑一个线性模型,其中$n\ge 1$个输入/自变量$X_{1,t},X_{2,t},\ldots,X_{n,t}$假设与时间t的负荷$L_t$呈线性关系。这可以写成

$$\begin{aligned} L_{N+1} = \sum _{k=1}^{n} \beta _k X_{k,N+1}. \end{aligned}\tag{8.11}$$

为简洁起见,线性模型$\sum _{k=1}^{n} \beta _k X_{k,N+1}$可以写成矩阵向量乘法$\mathbf{X}\beta$,其中$\textbf{X} \in \mathbb {R}^{N \times n}$是一个矩阵,其第i行第j列对应第i个时间步的第j个变量,即$X_{j,i}$。最后,$\beta =(\beta_{1},\ldots,\beta_{n})^{T}\in\mathbb{R}^{n}$是参数向量。给定一个因变量向量$\mathbf{L}=(L_{1},L_{2},\ldots,L_{n})^{T}$,正则化最小二乘回归可以写成

$$\begin{aligned} \min _{\boldsymbol{\beta }}(||\textbf{L} - \textbf{X}\boldsymbol{\beta }||_2 +\lambda ||\boldsymbol{\beta }||_p) \end{aligned}\tag{8.12}$$

对于某个超参数$\lambda\geq 0$(也称为拉格朗日乘子)。回顾第7.1节,$||.||_{p}$表示p-范数。这个超参数必须通过第8.1.3节定义的验证集来找到,它控制着系数惩罚的大小。如果 $\lambda=0$,那么问题退化为标准的最小二乘估计,即式(8.5)。对于较大的λ值,参数会变小。最常用的形式是$p=1$,即所谓的LASSO(最小绝对值收缩和选择算子)或岭回归。LASSO特别受欢迎,因为它可以减少输入数量,由于1-范数惩罚,它通常会将线性回归中的许多系数设为零。在这种情况下,可以消除大量不重要的输入。因此,LASSO既可以用于训练模型,也可以用于特征选择。

为了理解为什么LASSO可以用于特征选择,考虑图8.8中的示意图。该图比较了岭回归和LASSO回归。两个图都显示了在参数空间$\beta=(\beta_{1},\beta_{2})^{T}$(假设只有二维问题)中最小二乘代价函数的等高线(相同值的线)。在这些等高线的中心是最小二乘估计${\hat{\boldsymbol{\beta}}}.$,即给出最小二乘代价函数最小值的参数值。

在LASSO或岭回归中,实际上存在对参数大小的惩罚,并且该惩罚根据$\lambda$超参数的大小而变化。λ越大,参数值越小。因此,参数被约束在一个大小为$0<C\in\mathbb{R}$的有界区域内,该区域由

$$\begin{aligned} ||\boldsymbol{\beta }||_p = (|\beta _1|^p+|\beta _1|^p)^{1/p} \le C, \end{aligned}\tag{8.13}$$

其中 $p=1$ 是 1 或 2,分别取决于考虑的是 LASSO 还是 Ridge 回归。这些约束区域如图 8.8 中的阴影区域所示。注意,由于使用的范数值不同,形状差异很大。2 范数(Ridge 回归)的约束区域是一个球体,而

图 8.8 展示 LASSO 正则化(右)如何用于特征选择,并与岭回归(左)进行对比。选定的参数由红点表示,该点是在可行参数(阴影形状)内最小二乘代价函数的最小值。图中在正文中解释。

1 范数(LASSO)的约束区域是一个正方形。因此,正则化代价函数的最小值由阴影可行区域内最接近最优最小二乘估计 ${\hat{\boldsymbol{\beta}}}.$ 的 $\beta$ 给出,如图中红点所示。

由于 LASSO 回归约束区域的形状,该点通常位于该区域的“角”上,这意味着许多参数往往等于零,从而在此过程中实现了参数选择。

8.2.5 其他正则化方法

降低模型容量 对于许多算法,可以通过改变其容量(即其复杂度或更一般地说其可用的自由度)来控制超参数,使模型更可能过拟合或欠拟合。通过选择某些超参数(见第 8.2.3 节),会影响假设空间,即算法能够选择作为解的函数集合。例如,对于神经网络模型,可训练参数的数量决定了拟合各种函数的能力。类似地,在随机森林中,树的数量决定了其复杂度。低容量的模型可能无法正确拟合训练集(它们具有高偏差)。高容量的模型会在训练数据集上过训练,无法泛化到实际的底层过程(因此不能在测试集中表现良好)。

数据增强 过拟合通常可以通过在更多数据上训练模型来避免。然而在实践中,数据量可能很小,或数据收集成本高昂。提升模型性能的一种方法是在训练集中创建合成数据样本。对于图像数据,这通常很容易通过向图像添加变换(如镜像、旋转、平移)来实现,因为诸如目标检测之类的问题预期对这些操作具有不变性。但对于许多机器学习任务,特别是时间序列预测,这并不简单,因为需要保留数据中的真实模式和相互依赖性。然而,在可能的情况下,应探索数据增强策略。

图 8.9 示例学习曲线,展示高容量模型在训练过程中训练损失和评估损失随时间的关系

早停 对过于简单的任务使用大容量神经网络模型进行训练可能导致过拟合。防止这种情况的一种常用诊断工具是学习曲线,即在训练过程中定期计算训练集上的误差(例如,在每个训练周期之后)。如果超参数选择得合理,训练误差应该下降。为了在训练过程中监控泛化能力,可以创建一个验证数据集并计算误差。如果验证误差增加而训练误差减少,则表明模型开始过拟合。图 8.9 给出了一个高容量模型的示例学习曲线。因此,一种流行的正则化策略是,如果验证误差在特定迭代次数后不再改善,则停止训练。在过程结束时,返回具有最小验证误差的模型,而不是最终的模型配置。这要求算法在训练过程中存储模型配置的检查点(例如,神经网络中的权重值)。

批归一化 另一种用于神经网络训练过程的流行改进是批量归一化(batch normalisation,或 batch norm)。它作为一种加速神经网络训练并使其更稳定的方法被提出,通过对每一层的输入进行重新中心和重新缩放(标准化)来实现归一化。然而,除了提供更快、更稳定的训练外,批量归一化还具有正则化效果。此外,训练对不同的初始化方案和学习率的选择(即可以选择更大的学习率)变得更加鲁棒。

Dropout 在 dropout 中,神经网络训练过程中(第 10.4 节)会随机省略一定比例的人工神经元及其权重。这个过程有效地创建了一个更简单神经网络架构的集成。这与集成方法(如随机森林,结合简单决策树的预测)有关(参见第 10.3.2 节关于随机森林的内容)。dropout 的效果是向训练过程添加噪声。已经证明,对于广泛的任务,一个合理的默认设置是每层使用 0.5 的 dropout 比率。dropout 可以在神经网络的每一层使用和配置,适用于不同类型的层,如密集全连接层,以及卷积层和循环层(参见第 10.5 节和第 10.4 节)。然而,它不应在输出层使用。当仅将 dropout 应用于输入层时,这与添加噪声的思想有关,如去噪自编码器中使用的。它在计算上廉价,并且是一种有效的正则化方法,可以减少多种深度神经网络的过拟合并改善泛化误差。

8.3 问题

  1. 创建你自己的偏差-方差实验。你可以重复图8.1中的多项式拟合,或者选择另一个不同次数的多项式。从该多项式生成100个样本并添加噪声(例如高斯分布)。现在拟合各种次数的多项式,比如从1到20。计算训练误差。将每个多项式的训练误差按次数绘制成图。误差如何变化?最小误差是否出现在正确的多项式次数处?对于更高次数,误差是否增大?现在重新对该多项式采样(并添加与之前相同分布的噪声)。测量拟合多项式与新数据之间的误差?这就是泛化误差。再次将误差按次数绘制成图。最优次数是多少?将此图与原始的训练误差图进行比较。它们之间有什么区别?
  2. 重复上述实验,但这次只采样15个点。训练误差和泛化误差如何变化?如果将采样点数减少到5个呢?
  3. 执行你自己的网格搜索。从一个简单模型生成点,比如一条直线 $y=$ $ax+b$ ,系数a和b已知。在点上添加少量噪声。在系数周围选择一个矩形区域,即 $(a,b)\in[A_{1},A_{2}]\times[B_{1},B_{2}]$ 。在该矩形内生成 $N_{1}\times N_{2}$ 个点的网格(比如 $N_{1}=N_{2}=10)$ ),只需在矩形每条边上均匀取值,即第k个a值 $a_{k}=A_{1}+(k-1)\frac{(A_{2}-A_{1})}{N_{1}-1}$ ,类似地 $b_{l}=A_{2}+(l-1)\overline{{\frac{}{N_{2}-B_{2}}}})$ 对于 $k=1,\ldots,N_{1}$ ,以及 $l=1,\ldots,N_{2}$ 1− 2−。对于矩形内的每一对系数,计算采样数据与对应直线之间的误差。哪一对系数给出的误差最小?它们与真实值有多接近?此外,从矩形内随机采样若干对系数。你需要多少样本才能产生比网格搜索更小的误差?
  4. 证明模型的均方误差可以分解为偏差、方差和不可约误差,如公式8.3所示。

参考文献

  1. G. Shmueli, To explain or to predict? Stat. Sci. 25, 289–310 (2010)

除非在材料的致谢行中另有说明,本章中的图像或其他第三方材料均包含在本章的知识共享许可中。如果材料未包含在本章的知识共享许可中,且您的预期使用不被法定法规允许或超出允许使用范围,您将需要直接获得版权持有人的许可。