当前位置:首页>python>预测还能告诉你有多靠谱?高斯过程入门,Python代码实操

预测还能告诉你有多靠谱?高斯过程入门,Python代码实操

  • 2026-09-08 14:08:27
预测还能告诉你有多靠谱?高斯过程入门,Python代码实操

预测还能告诉你有多靠谱?高斯过程入门,Python代码实操

你是否遇到过这样的困境:模型预测了一个数字,但你完全不知道它靠不靠谱。比如预测股票明天涨2%,你该信多少?如果模型告诉你“涨2%,±0.5%的置信区间”,决策就清晰多了。

传统机器学习模型,大多数只给出“点估计”——一个冷冰冰的数字。而高斯过程,天生自带不确定性,能告诉你每个预测的可靠程度。

这不是科幻,是数学。更棒的是,Python 几行代码就能实现。

01 高斯过程是什么?一句话:函数的分布

我们学过概率论,知道随机变量可以是一个标量,比如“一个人的身高服从正态分布”。但高斯过程把“整条函数”当作随机变量。

什么意思?

  • 普通分布:采样一次,得到一个数字
  • 高斯过程:采样一次,得到一条完整的函数曲线

形式化地说,高斯过程由两部分定义:

  • 均值函数 m(x)
    :通常设为0,让数据自己说话
  • 协方差函数(核函数)k(x, x′)
    :决定了函数形状、平滑度、波动频率

任意有限个输入点对应的函数值,都服从联合高斯分布。这就是高斯过程的“灵魂公式”。

02 核函数:决定函数“长相”的关键

核函数 k(x, x′) 衡量两个输入点的“相似度”。它决定了你希望函数长什么样。

最常用的是径向基核(RBF),也叫高斯核:

  • 长度尺度 l
    :控制函数起伏快慢。l 越大,函数越平滑(像慢速波浪);l 越小,函数越剧烈(像锯齿)
  • 信号方差 σ²
    :控制函数的振幅(波峰多高)

通过选择不同的核函数,你可以把先验知识编码进模型:- 数据有周期性?用周期核- 数据有线性趋势?用线性核- 纯平滑?用 RBF

核函数是高斯过程的“灵魂”,决定了模型对函数形状的假设。

03 从先验到后验:看到数据后,模型如何更新?

高斯过程的工作流程非常优雅:

先验分布:没有数据时,GP 给出“先验函数分布”。比如零均值 + RBF 核,会生成一堆平滑波动的曲线——这就是你对函数的所有“先验信念”。

后验分布:当你有了训练数据 (X, y),GP 利用高斯分布的条件公式,推导出在测试点上的预测后验。这个公式直接给出:

  • 预测均值
    :最可能的函数值
  • 预测协方差
    :每个点的置信区间

核心公式:后验 = 先验 + 数据修正

这就是为什么 GP 能告诉你“不确定性”有多大——距离训练数据越远的点,置信区间越宽,说明模型越没底。

04 完整 Python 实操:拟合带噪声的正弦函数

下面这段代码,用 sklearn 的高斯过程回归,拟合一个带噪声的正弦函数,并输出三张图。

import numpy as npimport matplotlib.pyplot as pltfrom sklearn.gaussian_process import GaussianProcessRegressorfrom sklearn.gaussian_process.kernels import RBF, WhiteKernel# 1. 生成模拟数据np.random.seed(42)X_train = np.array([1, 3, 5, 6, 7, 8, 9]).reshape(-1, 1)y_train = np.sin(X_train.ravel()) + 0.2 * np.random.randn(len(X_train))X_test = np.linspace(0, 10, 200).reshape(-1, 1)# 2. 定义核函数 (RBF + 白噪声)kernel = 1.0 * RBF(length_scale=1.0) + WhiteKernel(noise_level=0.1)# 3. 训练模型gp = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=10)gp.fit(X_train, y_train)# 4. 预测 & 获取不确定性y_pred, y_std = gp.predict(X_test, return_std=True)

关键点:- WhiteKernel 用于建模数据中的噪声- return_std=True 返回每个预测点的标准差- 95% 置信区间 = 均值 ± 1.96 × 标准差

05 可视化:三张图看懂 GP

第一张图:先验函数采样

在没有数据时,GP 从零均值 + RBF 核中随机采样5条函数。它们平滑但形状各异——这就是你的“先验信念”。

第二张图:后验预测

有了7个训练点后,GP 更新了信念。红色点是训练数据,蓝色曲线是预测均值,粉色区域是95%置信区间。

你会发现:- 靠近训练点的地方,置信区间很窄(模型很确定)- 离开训练点越远,区间越宽(模型越来越没底)

第三张图:不同长度尺度对比

长度尺度 l 越大,函数越平滑;l 越小,函数越“抖动”。这展示了核函数如何控制模型复杂度。

06 现实中的应用场景

高斯过程不是学术玩具,它在很多领域有实际价值:

  • 贝叶斯优化
    :在超参数调优中,GP 不仅给出下一组参数的建议,还告诉你这个建议的可信度
  • 机器人控制
    :当传感器数据稀疏时,GP 能给出控制信号的不确定性,避免危险操作
  • 时间序列预测
    :尤其是短期预测,GP 能告诉你哪个时间点的预测更可靠
  • 地质统计学
    :根据少量钻孔数据,推断整个矿区的矿藏分布,并标出置信区间

写在最后

高斯过程的魅力在于:它不仅告诉你“是什么”,还告诉你“有多可信”。

在现实决策中,知道“我不知道”往往比盲目自信更有价值。下次做预测时,试试高斯过程——它可能会改变你对“预测”的理解。

你用过带不确定性输出的模型吗?在什么场景下你觉得“知道不确定性”特别重要?评论区聊聊。

最新文章

随机文章