基于拉普拉斯逼近的高斯过程分类器
项目介绍
本项目实现了一个基于拉普拉斯逼近(Laplace Approximation)的高斯过程(Gaussian Process, GP)分类框架。在高斯过程分类中,由于逻辑回归似然函数与高斯先验结合后的后验分布不具备解析形式,无法直接进行贝叶斯推理。为了解决这一问题,本项目采用了拉普拉斯逼近技术,通过在后验分布的众数处进行二阶泰勒展开,将复杂的后验分布近似为多维高斯分布。该框架能够解决非线性二分类问题,并在提供类别预测的同时,给出预测的不确定性量化指标。
功能特性
- 非线性分类:利用 RBF 核函数捕捉数据中的非线性模式,构建灵活的决策边界。
- 概率预测:不仅输出类别标签,还计算样本属于某一特定类别的预测概率。
- 不确定性量化:通过计算预测标准差,识别模型在输入空间中缺乏数据的区域或模糊区域。
- 自动超参数优化:通过最小化负边缘对数似然(Negative Log Marginal Likelihood, NLML),利用数值优化算法自动调整核函数的长度尺度和信号方差。
- 稳健的数值计算:在实现过程中使用了 Cholesky 分解以及添加抖动项(Jitter)的技术,确保矩阵求逆和对数行列式计算的数值稳定性。
- 可视化分析:多维度展示预测概率分布、潜变量均值及预测不确定性分布。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 必备工具箱:MATLAB 优化工具箱(Optimization Toolbox,用于运行 fminsearch 进行超参数搜索)。
实现逻辑与功能模块
数据生成与预处理
程序随机生成两组服从二维正态分布的合成点,分别代表不同的类别。数据标签被转化为 +1 和 -1 的格式。所有计算均在对数空间内处理超参数,以保证核参数在优化过程中始终保持为正值。
核函数计算
核心逻辑使用了径向基函数(RBF),又称平方指数核。该函数衡量输入样本间的相似度。为了防止核矩阵在计算过程中出现奇异性,程序在对角线上添加了微小的偏置项。
拉普拉斯逼近与牛顿-拉夫逊迭代
由于后验分布无法通过闭合形式获得,程序通过牛顿-拉夫逊(Newton-Raphson)算法查找潜变量后验分布的众数。
- 迭代更新:在每一步迭代中,计算逻辑回归似然函数的二阶导数矩阵(Hessian)。
- 计算更新步长:利用 Cholesky 分解计算新的潜变量估计值,直到潜变量的变化量低于设定的阈值。
- 获取状态:在众数处,程序记录潜变量的估计值、Hessian 矩阵的对角元素以及用于后续计算的 Cholesky 分解矩阵。
边缘似然函数计算
该部分是超参数优化的核心目标。程序实现了近似边缘对数似然的计算,公式包含了对数似然项、潜变量先验项以及反映模型复杂度的对数行列式项(通过 Cholesky 分解计算以提高精度)。
预测推断
预测阶段分为两步:
- 潜变量预测:计算测试点在后验分布下的潜变量均值和方差。均值由核矩阵与观测值的线性组合决定,方差则反映了后验分布的广度。
- 分类概率映射:利用 Probit 近似法求解逻辑函数与高斯分布的积分。该方法通过一个比例因子调整潜变量均值,从而获得平滑的预测概率 P(y=1|x)。
可视化展示
程序最后通过三个子图直观展示结果:
- 概率分布图:展示测试区域内样本属于正类的概率,越接近红色代表概率越高。
- 决策边界图:通过绘制潜变量均值为 0 的等高线,清晰地界定模型的分类界限。
- 不确定性图:展示预测标准差的分布,反映模型对不同区域分类预测的信心程度。
关键算法分析
- 负对数边缘似然(NLML):它是衡量模型对观测数据解释能力的指标,通过 fminsearch 进行最小化,实现了从数据中自动学习核函数参数的功能。
- Cholesky 分解:在计算 (I + W^1/2 K W^1/2) 的过程中,使用 Cholesky 分解代替直接求逆,有效地避免了矩阵不适定带来的数值计算问题。
- 潜变量变换:通过逻辑回归似然(Logit link function),将连续的 GP 先验映射到 [0, 1] 空间,解决了离散标签的建模问题。
- 准则收敛:牛顿法通过极少的迭代次数(通常少于 10 次)即可在复杂的后验空间中找到最优众数,保证了在大样本下的计算效率。