回归分析系列15— 贝叶斯回归进阶

18 贝叶斯回归进阶

18.1 简介

贝叶斯回归是通过贝叶斯推断来估计回归模型参数的方法。与经典的最小二乘法不同,贝叶斯回归在估计参数时结合了先验信息。通过贝叶斯方法,可以得到参数的后验分布,而不仅仅是一个点估计。

18.2 贝叶斯回归模型

贝叶斯回归模型将回归系数视为随机变量,假设其服从某个先验分布。然后根据观测数据更新先验分布,得到回归系数的后验分布。贝叶斯回归模型的核心公式如下:

其中,是回归系数的后验分布, 是似然函数,是先验分布。

在Python中,scikit-learn提供了BayesianRidge类来实现贝叶斯回归。

python 复制代码
from sklearn.linear_model import BayesianRidge
import numpy as np
import matplotlib.pyplot as plt

# 生成模拟数据
np.random.seed(42)
X = np.random.rand(100, 1)
y = 3 * X.squeeze() + 2 + np.random.randn(100)

# 构建贝叶斯回归模型
bayes_ridge = BayesianRidge()
bayes_ridge.fit(X, y)

# 预测
X_fit = np.linspace(0, 1, 100).reshape(-1, 1)
y_pred, y_std = bayes_ridge.predict(X_fit, return_std=True)

# 绘图
plt.scatter(X, y, color='blue')
plt.plot(X_fit, y_pred, color='red')
plt.fill_between(X_fit.squeeze(), y_pred - y_std, y_pred + y_std, color='pink', alpha=0.5)
plt.xlabel('X')
plt.ylabel('y')
plt.title('Bayesian Ridge Regression')
plt.show()

18.3 先验选择

贝叶斯回归的结果依赖于先验分布的选择。常用的先验分布有正态分布和拉普拉斯分布。正态分布通常用于岭回归的贝叶斯版本,而拉普拉斯分布则适用于套索回归的贝叶斯版本。

python 复制代码
# 设置不同的先验参数
bayes_ridge = BayesianRidge(alpha_1=1e-6, lambda_1=1e-6)
bayes_ridge.fit(X, y)

# 预测
y_pred, y_std = bayes_ridge.predict(X_fit, return_std=True)

# 绘图
plt.scatter(X, y, color='blue')
plt.plot(X_fit, y_pred, color='red')
plt.fill_between(X_fit.squeeze(), y_pred - y_std, y_pred + y_std, color='pink', alpha=0.5)
plt.xlabel('X')
plt.ylabel('y')
plt.title('Bayesian Ridge Regression with Different Priors')
plt.show()

18.4 后验推断与预测

贝叶斯回归的一个主要优点是可以通过后验分布来进行不确定性量化。通过后验分布,可以直接得到参数的置信区间,这对于模型解释非常有用。

18.5 高维数据中的贝叶斯回归

在高维数据中,贝叶斯回归可以通过选择适当的先验来控制模型复杂度,避免过拟合。贝叶斯回归还可以通过自动相关确定性推断技术(Automatic Relevance Determination, ARD)来识别重要的特征。

python 复制代码
from sklearn.linear_model import ARDRegression

# 构建ARD回归模型
ard = ARDRegression()
ard.fit(X, y)

# 预测
y_pred_ard, y_std_ard = ard.predict(X_fit, return_std=True)

# 绘图
plt.scatter(X, y, color='blue')
plt.plot(X_fit, y_pred_ard, color='red')
plt.fill_between(X_fit.squeeze(), y_pred_ard - y_std_ard, y_pred_ard + y_std_ard, color='pink', alpha=0.5)
plt.xlabel('X')
plt.ylabel('y')
plt.title('ARD Bayesian Regression')
plt.show()
相关推荐
几两春秋梦_2 小时前
符号回归概念
人工智能·数据挖掘·回归
小码贾1 天前
评估 机器学习 回归模型 的性能和准确度
人工智能·机器学习·回归·scikit-learn·性能评估
spssau1 天前
多分类logistic回归分析案例教程
分类·数据挖掘·数据分析·回归·回归分析·logistic回归·spssau
qq_433716951 天前
测试分层:减少对全链路回归依赖的探索!
自动化测试·软件测试·功能测试·测试工具·回归·pytest·postman
小馒头学python1 天前
【机器学习】机器学习回归模型全解析:线性回归、多项式回归、过拟合与泛化、向量相关性与岭回归的理论与实践
人工智能·python·机器学习·回归·线性回归
机器学习之心1 天前
粒子群优化双向深度学习!PSO-BiTCN-BiGRU-Attention多输入单输出回归预测
人工智能·深度学习·回归·多输入单输出回归预测·pso-bitcn-bigru
机器学习之心3 天前
回归预测 | MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输入单输出回归预测
随机森林·matlab·回归·多输入单输出回归预测·rf-adaboost
武子康3 天前
大数据-206 数据挖掘 机器学习理论 - 多元线性回归 回归算法实现 算法评估指标
大数据·算法·机器学习·数据挖掘·回归·scikit-learn
高山莫衣5 天前
局部加权回归
人工智能·数据挖掘·回归
T0uken6 天前
【机器学习】回归树
人工智能·机器学习·回归