当前位置: 首页 > news >正文

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

 18 贝叶斯回归进阶

18.1 简介

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

18.2 贝叶斯回归模型

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

eq?p%28%5Cboldsymbol%7B%5Cbeta%7D%20%7C%20%5Cmathbf%7BX%7D%2C%20%5Cmathbf%7By%7D%29%20%3D%20%5Cfrac%7Bp%28%5Cmathbf%7By%7D%20%7C%20%5Cmathbf%7BX%7D%2C%20%5Cboldsymbol%7B%5Cbeta%7D%29%20p%28%5Cboldsymbol%7B%5Cbeta%7D%29%7D%7Bp%28%5Cmathbf%7By%7D%20%7C%20%5Cmathbf%7BX%7D%29%7D

其中,eq?p%28%5Cboldsymbol%7B%5Cbeta%7D%20%7C%20%5Cmathbf%7BX%7D%2C%20%5Cmathbf%7By%7D%29是回归系数的后验分布,eq?p%28%5Cmathbf%7By%7D%20%7C%20%5Cmathbf%7BX%7D%2C%20%5Cboldsymbol%7B%5Cbeta%7D%29 是似然函数,eq?p%28%5Cboldsymbol%7B%5Cbeta%7D%29是先验分布。

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

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 先验选择

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

# 设置不同的先验参数
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)来识别重要的特征。

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()

 

 


http://www.mrgr.cn/news/5125.html

相关文章:

  • safari扩展程序开发
  • C++:继承(protected、隐藏、不能被继承的类、)
  • 【HTML】使用Javascript制作网页
  • 【python报错已解决】`Traceback (most recent call last)`
  • 手机麻将APP开发违法吗,有哪些注意的地方呢?
  • 苹果上架没有iphone、没有ipad也可以生成截屏
  • Scratch编程深度探索:解锁递归与分治算法的奥秘
  • 数据库学习
  • jmeter中导入java方法并使用
  • 基于深度学习的用户行为建模
  • 制造企业为什么要数字化转型?面临哪些困难?
  • 8、深入理解AQS之共享锁Semaphore
  • C++基础知识五
  • uniapp分包echarts
  • MySQL 触发器(Trigger)
  • ES聚合,SQL查询
  • gitlab迁移至新的服务器
  • python 异常处理详解带(3分钟速通)
  • 大数据与大模型技术赋能:革新智能客服系统知识库管理的策略与实践
  • 【具体数学 Concrete Mathematics】1.1 递归问题 讲义