机器学习中的高斯过程2025年2月28日 | 阅读 12 分钟 高斯过程是一种非常强大的非参数机器学习方法,最初应用于回归,但最近也被成功地应用于分类任务以及许多更高级的应用,如时间序列分析。它们在建模复杂数据关系方面的灵活性,使其在常规模型失败的情况下表现出色,尤其是在普通模型(特别是线性回归模型)失效时。 高斯过程本质上是一组不同的变量;其中任何有限的子集都构成一个多元正态分布。在机器学习中,GP 是一种表示函数上概率分布的方法。也就是说,对于一些有噪声的观测点,GP 可以表示一个无限的、有噪声的可能解释数据的函数集,以及每个函数的置信度。 简单来说,与传统的回归方法(如线性或多项式)假设固定函数形式不同,GP 直接从数据中推断出最可能的函数。更重要的是,它允许预测输出以及与预测相关的置信度。 它可用于直接推断函数上的分布,而不是参数化函数参数上的分布。高斯过程定义了函数上的先验。一旦观察到一些函数值,就可以将其转换为函数上的后验。高斯过程回归是指此处连续函数值的解释。然而,高斯过程也可用于分类。 数学上高斯过程是一个随机过程,对于属于回归不连续性的任何点 o,我们都附加一个未经验证的变量 f(o)。对于这些变量的任何有限数量,联合分布碰巧是高斯分布。这可以用数学术语表示如下: ![]() 此处,
因此,高斯过程可以被解释为函数上的分布,其函数的属性——例如,它们的平滑度——由核 K 规定。如果核表明点 xi 和 xj 是同一种类的,那么我们期望函数 f(xi) 和 f(xj ) 的相应值也应该是同一种类的。 先验和后验分布首先,我们有一个 GP 先验 p(f∣X)。在观察到一些数据 y 后,我们更新这个先验以获得 GP 后验 p(f∣X,y)。然后可以使用这个后验来预测刚观察到的输入 X* 的函数值 f*。 ![]() 后验预测分布再次是高斯分布,这次具有均值 μ∗ 和协方差 Σ*。现在让我们来看一下观测数据 y 和预测 f* 的联合分布如下: 观测数据和预测的联合分布现在让我们来看一下观测数据 y 和预测 f* 的联合分布如下: ![]() 后验预测充分统计量后验预测分布的充分统计量 μ* 和 Σ* 可以通过以下方式计算: ![]() 这些方程构成了评估回归问题高斯过程计算的总和。 现在我们将用代码实现它。 让我们从指定函数上的先验开始,这将是我们看到任何数据之前的假设,关于这些函数可能如何表现。在这里,我们的假设是函数的均值为零。也就是说,平均而言,我们期望函数值围绕零线波动,尽管个体样本可能差异很大。我们还需要一个协方差矩阵,它告诉我们不同输入点上的函数值预计如何共变。它由核函数构建,核函数代表在输入空间中的点之间建立关系的数学方法。 对于我们的设置,我们将使用核参数,其中我们将长度尺度*设置为 l=1,并将信号方差设置为 f_sigma = 1。长度尺度 l 决定了函数的平滑度:对于 l = 1,我们期望函数在输入空间中的变化相对平滑,并且近邻点具有高度相关的函数值。这个振幅取决于信号的方差 f_sigma = 1,它衡量函数与其均值的偏差程度。一旦我们使用这个核计算了协方差矩阵,我们就可以从代表该高斯过程的多元正态分布中抽取随机样本。每个随机样本都是函数可能的一种外观,假设这是 GP 的先验。我们在示例中抽取三个,以便可以看到函数行为的差异有多大。 然后,我们绘制这三个随机样本,并叠加零均值参考线和 95% 的置信区间。 协方差矩阵的对角线元素给出函数最可能位于的范围,置信度为 95%:这将为我们提供函数的可能形状,并能了解 GP 预测的不确定性。 输出 ![]() 假设训练数据是无噪声的;在这种情况下,我们将有兴趣计算描述后验预测分布的关键统计数据,该分布反映了我们在观察数据后更新的信念。我们尝试计算后验预测分布的均值和协方差。这些是能够对新数据点进行有意义预测的关键统计数据。 我们从两个基本方程中得出这些值,这两个方程在高斯过程文献中被称为后验预测分布均值的方程,另一个用于计算后验预测分布的协方差。这些是我们如何用实际训练数据更新先验信念(即我们在看到任何数据之前的假设),以获得后验预测分布。 现在,让我们使用这些方程处理无噪声训练数据,将 train_X 设置为输入数据,将 train_Y 设置为相应的输出。在下一个示例中,我们从后验预测分布中抽取三个随机样本并绘制它们。然后将这些样本与均值预测、置信区间和原始训练数据一起绘制。 只要模型是无噪声的,那么训练数据点处的方差将为零,并且我们对这些点处的函数值是精确的。因此,从这个后验分布中抽取的任何随机函数都将完全穿过训练点。这意味着,如果场景是无噪声的,我们的模型应该精确地命中训练数据,因此在这些位置上永远不会有偏差;因此,函数与观测值完美对齐。 输出 ![]() 输出 ![]() 核参数和噪声参数的影响对于确定高斯过程 (GP) 模型的行为和性能至关重要。参数 l(长度尺度)、σf(信号方差)和 σy(噪声方差)各自在塑造 GP 生成的函数及其对数据的拟合方面发挥着独特的作用。 首先,函数的流动性由长度尺度 (l) 决定。较高的 l 值会导致更平滑的函数,从而对训练数据进行更广泛、更渐进的近似。这种平滑度有助于模型更好地泛化到未见数据。相比之下,较低的 l 值会产生更“扭曲”或不规则的函数,这意味着模型可以捕捉数据点之间的快速变化,通常会导致更紧密的拟合,但泛化能力可能较差。l 的影响在训练点之间的区间宽度上尤其明显,而较小的 l 会导致更宽的区间。 然后是 σf,它控制函数的垂直变化。它作为模型可能显示的波动振幅的参数。对于较高的 σf 值,垂直轴上的分布倾向于更大,尤其是在考虑训练数据之外的更宽置信区间时。实际上,σf 允许 GP 探索更多样的输出,从而增加了模型捕获数据潜在模式的灵活性。 噪声方差 (σy) 是训练数据上假定的噪声水平。σy 越大,生成的近似越粗糙,不确定性越大,并且允许模型避免在噪声数据点上过拟合。这在数据具有内在噪声时很有用——一个嘈杂的数据集,模型对离群值或随机波动会更宽容。然而,当 σy 非常低时,模型会紧密拟合训练数据,如果数据集嘈杂,则存在过拟合的风险。 输出 ![]() 因此,我们最小化负对数边际似然关于参数 l(长度尺度)和 σf(信号方差)。这本质上是一种找到最能解释数据的这些核参数的最佳值的方法。负对数边际似然恰好是衡量高斯过程模型对观测数据的拟合程度的指标,通过最小化它,我们试图提高其泛化能力。 输出 ![]() GaussianProcessRegressor 用于 GP 回归模型。它可以配置预定义的核和用户定义的核。此外,核还可以组合。在 scikit-learn 中,平方指数核称为 rabaf 核。rabaf 核只有一个 scale_length 参数,它对应于上面提到的 l 参数。为了获得 σf,我们也必须使用参数:将 rabaf 核与 ConstantKernel 组合。 输出 ![]() GPy 是谢菲尔德机器学习小组开发的高斯过程软件框架。它包含 gaparegression 类,用于 GP 回归模型。gaparegression 默认情况下还会从数据中估计噪声参数 σy。因此,为了复制上述结果,我们必须固定()此参数。 输出 ![]() 输出 ![]() 下一主题机器学习中的遗传算法 |
我们请求您订阅我们的新闻通讯以获取最新更新。