预测还能告诉你有多靠谱?高斯过程入门,Python代码实操
你是否遇到过这样的困境:模型预测了一个数字,但你完全不知道它靠不靠谱。比如预测股票明天涨2%,你该信多少?如果模型告诉你“涨2%,±0.5%的置信区间”,决策就清晰多了。
传统机器学习模型,大多数只给出“点估计”——一个冷冰冰的数字。而高斯过程,天生自带不确定性,能告诉你每个预测的可靠程度。
这不是科幻,是数学。更棒的是,Python 几行代码就能实现。
01 高斯过程是什么?一句话:函数的分布
我们学过概率论,知道随机变量可以是一个标量,比如“一个人的身高服从正态分布”。但高斯过程把“整条函数”当作随机变量。
什么意思?
形式化地说,高斯过程由两部分定义:
- 均值函数 m(x)
- 协方差函数(核函数)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 能告诉你哪个时间点的预测更可靠
- 地质统计学:根据少量钻孔数据,推断整个矿区的矿藏分布,并标出置信区间
写在最后
高斯过程的魅力在于:它不仅告诉你“是什么”,还告诉你“有多可信”。
在现实决策中,知道“我不知道”往往比盲目自信更有价值。下次做预测时,试试高斯过程——它可能会改变你对“预测”的理解。
你用过带不确定性输出的模型吗?在什么场景下你觉得“知道不确定性”特别重要?评论区聊聊。