贝叶斯回归器概览

序言

线性回归是机器学习中一种常用的回归方法。线性回归基于这样的假设,即基础数据是正态分布的,并且所有相关的预测变量与结果具有线性关系。但在现实世界中,这并不总是可能的,它将遵循这些假设,贝叶斯回归可能是更好的选择。
贝叶斯回归使用关于数据的先验信念或知识来“学习”更多关于数据的知识,并创建更准确的预测。它还考虑了数据的不确定性,并利用先验知识来提供更精确的数据估计。因此,当数据复杂或不明确时,它是一个理想的选择。

概述

贝叶斯回归使用贝叶斯算法从数据中估计线性回归模型的参数,包括关于参数的先验知识。由于它的概率特性,它可以产生比普通最小二乘(ordinary least squares, OLS)线性回归更精确的回归参数估计,提供了估计中不确定性的度量,并得出比OLS更强的结论。贝叶斯回归还可用于相关的回归分析任务,如模型选择和异常值检测。

贝叶斯回归

  • 贝叶斯回归是什么?
    • 贝叶斯回归是线性回归的一种,它使用贝叶斯统计来估计模型的未知参数。它使用贝氏定理在给定观测数据的情况下,估计一组参数的可能性。
  • 贝叶斯回归的目标
    • 贝叶斯回归的目标是找到描述自变量和因变量之间关系的线性模型参数的最佳估计值。
  • 传统线性回归和贝叶斯回归之间区别
    • 传统线性回归和贝叶斯回归之间的主要区别在于关于数据生成过程的基本假设。
    • 传统的线性回归假设数据服从高斯或正态分布,而贝叶斯回归对数据的性质有更强的假设,并对参数赋予先验概率分布
    • 贝叶斯回归还允许更多的灵活性,因为它允许额外的参数或先验分布,并且可以用于构建任意复杂的模型,该模型明确地表达关于数据的先验信念。
    • 此外,贝叶斯回归从更少的数据点提供更准确的预测测量,并且能够围绕估计构建不确定性的估计。
    • 另一方面,传统的线性回归更容易实现,并且通常使用更简单的模型更快,并且当关于数据的假设有效时,可以提供良好的结果。
  • 当数据集中的数据不足或数据分布不均匀时,贝叶斯回归非常有用。与仅从每个属性的单个值获得输出的常规回归技术相比,贝叶斯回归模型的输出是从概率分布获得的。

贝叶斯回归相关概念

贝叶斯回归中的重要概念如下:

贝叶斯定理

  • 贝叶斯定理,给出了事件的先验概率与考虑证据后的后验概率之间的关系。它指出,事件的条件概率等于给定某些条件下事件的概率乘以事件的先验概率,再除以条件的概率。
  • 公式,即 P ( A|B ) = P ( B|A) ⋅ P ( A ) P ( B ) P(\text{A|B}) = \displaystyle\frac{P(\text{B|A)} \cdot P(\text{A})} {P(\text{B})} P(A|B)=P(B)P(B|A)P(A)
    其中, P ( A|B ) P(\text{A|B}) P(A|B)事件A发生的概率,假设事件B已经发生, P ( B|A ) P(\text{B|A}) P(B|A)是事件B发生的概率,假设事件A已经发生, P ( A ) P(\text{A}) P(A)是事件A发生的概率, P ( B ) P(\text{B}) P(B)是事件B发生的概率。

极大似然估计(MLE)

  • 概念
    • 极大似然估计(Maximum Likelihood Estimation, MLE)是一种通过最大化似然函数来估计统计模型参数的方法。
  • 作用
    • 它试图找到使观测数据在假设模型下最可能的参数值。极大似然估计不包含关于参数的任何先验信息或假设,并且它提供参数的点估计。

最大后验概率估计(MAPE)

  • 概念
    • 最大后验概率估计(Maximum A Posteriori (MAP) Estimation, MAPE)是一种结合先验信息和似然函数来估计参数的贝叶斯方法
  • 作用
    • 它涉及寻找使后验分布最大化的参数值,后验分布是通过应用贝氏定理
    • 在MAP估计中,为参数指定先验分布,表示关于其值的先验信念或知识。
    • 然后将似然函数乘以先验分布以获得联合分布,并且选择最大化该联合分布的参数值作为MAP估计。
    • MAP估计提供参数的点估计,类似于MLE,但是结合了先验信息。

贝叶斯回归使用原因

贝叶斯回归比其他回归技术有用的原因有几个。其中一些如下:

  • 原因一:
    • 贝叶斯回归也在分析中使用关于参数的先验信念。这使得它在可用数据有限并且先验知识相关时非常有用。
    • 通过将先验知识与观测数据相结合,贝叶斯回归提供了对回归参数的更有根据且可能更准确的估计。
  • 原因二:
    • 与标准回归技术产生的单点估计相反,贝叶斯回归提供了一种通过生成后验分布来测量回归参数估计中的不确定性的自然方法,该后验分布捕获参数值中的不确定性。
    • 该分布为参数提供了一系列可接受的值,并可用于计算可信区间或贝叶斯置信区间。
  • 原因三:
    • 为了合并复杂的相关性和非线性,贝叶斯回归通过提供用于整合各种先验分布的框架来提供灵活性,这使得它能够处理标准回归技术的基本假设(如线性或方差齐性)可能不成立的情况。
    • 它能够对预测变量和响应变量之间更现实和更微妙的关系进行建模。
  • 原因四:
    • 贝叶斯回归通过计算不同模型的后验概率来促进模型选择和比较。
  • 原因五:
    • 与经典回归方法相比,贝叶斯回归可以更有效地处理异常值和有影响的观测值。
    • 它为回归分析提供了一种更稳健的方法,因为极端或有影响力的观测对估计的影响较小。

贝叶斯回归如何实现

  • 假设线性回归的独立特征是 X = { x 1 , x 2 , . . . , x p } X = \{x_1, x_2, ..., x_p\} X={x1,x2,...,xp},其中 X X X表示第 i i i独立特征,目标变量将是 y y y
  • 假设我们有 n n n个样本 ( X , y ) (X,y) (X,y),因变量 y y y和独立特征 X X X之间的线性关系可以表示为:
    y = w ₀ + w ₁ x ₁ + w ₂ x ₂ + . . . + w ₚ x ₚ + ϵ y = w_₀ + w_₁x_₁ + w_₂x_₂ + ... + w_ₚx_ₚ + \epsilon y=w+wx+wx+...+wx+ϵ
    y = f ( x , w ) + ϵ y = f(x,w) + \epsilon y=f(x,w)+ϵ
  • 这里, w = { w ₀ , w ₁ , w ₂ , . . . , w ₚ } w = \{w_₀, w_₁, w_₂, ..., w_ₚ\} w={w,w,w,...,w} 是回归系数,表示自变量和因变量之间的关系, ϵ \epsilon ϵ是误差项。
  • 我们假设误差 ϵ \epsilon ϵ服从均值为0且方差为常数的正态分布 σ 2 \sigma^2 σ2, 即( ϵ ∼ N ( 0 , σ 2 ) \epsilon \sim N(0, \sigma^2) ϵN(0,σ2)) 。
  • 该假设允许我们对预测值周围的目标变量的分布进行建模。

似然函数

在独立特征和回归系数之间建立关系的概率分布被称为相似性。它描述了在给定某些回归系数组合的情况下,获得某个结果的概率。

假设条件:
误差 ϵ = { ϵ 1 , ϵ ₂ , . . . , ϵ ₙ } \epsilon = \{\epsilon_1, \epsilon_₂, ..., \epsilon_ₙ\} ϵ={ϵ1,ϵ,...,ϵ} 是独立和相同的,并且服从均值为 0 0 0、方差为 σ 2 \sigma^2 σ2的正态分布。
这意味着目标变量 y y y,给定预测器 x 1 , x 2 , . . . , x p x_1, x_2, ..., x_p x1,x2,...,xp服从均值正态分布:
μ = f ( x , w ) = w 0 + w 1 x 1 + w 2 x 2 + . . . + w p x p \mu = f(x,w) = w_0 + w_1x_1 + w_2x_2 + ... + w_px_p μ=f(x,w)=w0+w1x1+w2x2+...+wpxp和方差 σ 2 \sigma^2 σ2

因此,给定预测变量, y y y的条件概率密度函数(PDF)为:

P ( y ∣ x , w , σ 2 ) = N ( f ( x , w ) , σ 2 ) = 1 2 π σ 2 e [ − ( y − f ( x , w ) ) 2 2 σ 2 ] = 1 2 π σ 2 exp ⁡ [ y − ( w 0 + w 1 x 1 + w 2 x 2 + ⋯ + w P x P ) 2 σ 2 ] \begin{aligned} P(y|x,w,\sigma^2) &= N(f(x,w),\sigma^2) \\&=\frac{1}{\sqrt{2\pi\sigma^2}}e^{\left[-\displaystyle\frac{(y -f(x,w))^{2}}{2\sigma^{2}}\right]} \\&=\frac{1}{\sqrt{2\pi\sigma^2}}\exp{\left[\frac{y-(w_0+w_1x_{1}+w_2x_{2}+\cdots +w_P x_{P})}{2\sigma^2}\right]} \end{aligned} P(yx,w,σ2)=N(f(x,w),σ2)=2πσ2 1e[2σ2(yf(x,w))2]=2πσ2 1exp[2σ2y(w0+w1x1+w2x2++wPxP)]

似然函数,用于具有每个观测值的N个观测值 ( x i 1 , x i 2 , ⋯   , x i P , y i ) (x_{i1}, x_{i2}, \cdots, x_{iP}, yᵢ) (xi1,xi2,,xiP,yi) 服从均值为正态分布的 μ i = w 0 + w 1 x i 1 + w 2 x i 2 + ⋯ + w P x i P \mu_i = w_{0} + w_1x_{i1} + w_2x_{i2} + \cdots + w_{P}x_{iP} μi=w0+w1xi1+w2xi2++wPxiP和方差 σ 2 \sigma^2 σ2,将是因变量的联合概率密度函数(PDF),并且可以写为各个PDF的乘积:
L ( Y ∣ X , w , σ 2 ) = P ( y 1 ∣ x 11 , x 12 , ⋯   , x 1 P ) ⋅ P ( y 2 ∣ x 21 , x 22 , ⋯   , x 2 P ) ⋯ P ( y n ∣ x n 1 , x n 2 , ⋯   , x n P ) = N ( f ( x 1 p , w ) , σ 2 ) ⋅ N ( f ( x 2 p , w ) , σ 2 ) ⋯ N ( f ( x n p , w ) , σ 2 ) ⋅ = ∏ i = 1 N [ N ( f ( x i p , w ) , σ 2 ) ] \begin{aligned} L(Y|X,w,\sigma^2) &= P(y_1 | x_{11}, x_{12},\cdots, x_{1P}) \cdot P(y_2 | x_{21}, x_{22},\cdots, x_{2P})\cdots P(y_n | x_{n1}, x_{n2},\cdots, x_{nP}) \\ &= N(f(x_{1p},w),\sigma^{2})\cdot N(f(x_{2p},w),\sigma^{2}) \cdots N(f(x_{np},w),\sigma^{2})\cdot \\& = \prod_{i=1}^{N}[N(f(x_{ip},w),\sigma^{2})] \end{aligned} L(YX,w,σ2)=P(y1x11,x12,,x1P)P(y2x21,x22,,x2P)P(ynxn1,xn2,,xnP)=N(f(x1p,w),σ2)N(f(x2p,w),σ2)N(f(xnp,w),σ2)=i=1N[N(f(xip,w),σ2)]

为了简化计算,我们可以取似然函数的对数:
ln ⁡ ( L ( Y ∣ X , w , σ 2 ) ) = ln ⁡ [ ∏ i = 1 N [ N ( f ( x i p , w ) , σ 2 ) ] ] = ln ⁡ [ N ( f ( x 1 p , w ) , σ 2 ) ] + ln ⁡ [ N ( f ( x 2 p , w ) , σ 2 ) ] + ⋯ + ln ⁡ [ N ( f ( x n p , w ) , σ 2 ) ] = ∑ i = 1 N ln ⁡ [ 1 2 π σ 2 exp ⁡ ( − ( y i − ( w 0 + w 1 x i 1 + w 2 x i 2 + ⋯ + w P x i P ) ) 2 2 σ 2 ) ] \begin{aligned} \ln(L(Y|X,w,\sigma^2)) &= \ln{\left[ \prod_{i=1}^{N}[N(f(x_{ip},w),\sigma^{2})]\right ]} \\&= \ln{[N(f(x_{1p},w),\sigma^{2})}] + \ln[N(f(x_{2p},w),\sigma^{2})] + \cdots + \ln{[N(f(x_{np},w),\sigma^{2})]} \\&=\sum_{i=1}^{N}\ln\left[ \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(y_i-(w_0+w_1x_{i1}+w_2x_{i2}+\cdots +w_P x_{iP}))^2}{2\sigma^2}\right) \right] \end{aligned} ln(L(YX,w,σ2))=ln[i=1N[N(f(xip,w),σ2)]]=ln[N(f(x1p,w),σ2)]+ln[N(f(x2p,w),σ2)]++ln[N(f(xnp,w),σ2)]=i=1Nln[2πσ2 1exp(2σ2(yi(w0+w1xi1+w2xi2++wPxiP))2)]

精密度:
β = 1 Σ 2 \beta=\displaystyle\frac{1}{\Sigma^2} β=Σ21
使用来自先前响应的条件PDF表达式,我们将其代入似然函数:

ln ⁡ ( L ( y ∣ x , w , σ 2 ) ) = N 2 ln ⁡ ( 2 π ) − N 2 ln ⁡ ( β ) − β 2 ∑ i = 1 N [ ( y − f ( x i , w ) ) 2 ] \ln(L(y|x,w,\sigma^2))=\displaystyle\frac{N}{2}\ln(2\pi)-\frac{N}{2}\ln(\beta)-\frac{\beta}{2}\sum_{i=1}^{N}\left[(y-f(x_i,w))^2 \right ] ln(L(yx,w,σ2))=2Nln(2π)2Nln(β)2βi=1N[(yf(xi,w))2]

负对数可能性:
− ln ⁡ ( L ( y ∣ x , w , σ 2 ) ) = β 2 ∑ i = 1 N [ ( y − f ( x i , w ) ) 2 ] − N 2 ln ⁡ ( 2 π ) + N 2 ln ⁡ ( β ) -\ln(L(y|x,w,\sigma^2))=\displaystyle\frac{\beta}{2}\sum_{i=1}^{N}\left[(y-f(x_i,w))^2 \right ]-\frac{N}{2}\ln(2\pi)+\frac{N}{2}\ln(\beta) ln(L(yx,w,σ2))=2βi=1N[(yf(xi,w))2]2Nln(2π)+2Nln(β)

这里, ln ⁡ ( 2 π ) \ln(2\pi) ln(2π) ln ⁡ ( β ) \ln(\beta) ln(β)是恒定的,所以,

− ln ⁡ ( L ( y ∣ x , w , σ 2 ) ) = β 2 ∑ i = 1 N [ ( y − f ( x i , w ) ) 2 ] + const -\ln(L(y|x,w,\sigma^2))=\displaystyle\frac{\beta}{2}\sum_{i=1}^{N}\left[(y-f(x_i,w))^2 \right ] + \text{const} ln(L(yx,w,σ2))=2βi=1N[(yf(xi,w))2]+const

先验:
先验是在观察数据之前关于参数的初始信念或概率。它是关于参数的信息或假设。
在最大后验概率(MAP)估计中,我们将关于参数的先验知识或信念结合到估计过程中。我们使用先验分布来表示该先验信息,表示为 P ( W ∣ α ) = N ( 0 , α − 1 I ) P(W|\alpha)=N(0,\alpha^{-1}I) P(Wα)=N(0α1I)

后验分布:
后验分布是在考虑了参数的先验分布和观测数据后得到的参数的更新后的信念或概率分布。
使用贝氏定理,我们可以用似然函数和先验分布来表示后验分布:

P ( w ∣ X , α , β − 1 ) = L ( Y ∣ X , w , β − 1 ) ⋅ P ( w ∣ α ) P ( Y ∣ X ) P(w|X,\alpha, \beta^{-1}) = \displaystyle\frac{L(Y|X,w, \beta^{-1}) \cdot P(w|\alpha)}{P(Y|X)} P(wX,α,β1)=P(YX)L(YX,w,β1)P(wα)

P ( y ∣ X ) P(y|X) P(yX)是观测数据的边际概率,其充当归一化常数。由于它不依赖于参数值,我们可以在优化过程中忽略它。

P ( w ∣ X , α , β − 1 ) ∝ ( L ( Y ∣ X , w , β − 1 ) ⋅ P ( w ∣ α ) ) P(w | X,\alpha, \beta^{-1}) \propto(L(Y|X,w, \beta^{-1}) \cdot P(w|\alpha)) P(wX,α,β1)(L(YX,w,β1)P(wα))

在上述公式中,

  • 对数似然: L ( Y ∣ X , w , β − 1 ) L(Y|X, w, \beta^{-1}) L(YX,w,β1)是正态分布。
  • 先验: P ( w ∣ α ) P(w|\alpha) P(wα)是统一的。
  • 所以,后验也将是正态分布。

在实践中,使用后验分布的对数(称为对数-后验)通常更方便,为了得到最大后验分布,我们使用负似然:
w ^ = ln ⁡ [ ( L ( Y ∣ X , w , β − 1 ) ⋅ P ( w ∣ α ) ) ] = ln ⁡ [ L ( Y ∣ X , w , β − 1 ) ] + ln ⁡ [ P ( w ∣ α ) ] = β 2 ∑ i = 1 N ( y i − f ( x i , w ) ) 2 + α 2 w T w \begin{aligned} \hat{w}&= \ln[(L(Y|X,w, \beta^{-1}) \cdot P(w|\alpha))] \\ &= \ln[L(Y|X,w, \beta^{-1})] + \ln[P(w|\alpha)] \\&=\frac{ \beta}{2}\sum_{i=1}^{N}(y_i-f(xᵢ,w))² + \frac{\alpha}{2} w^T w \end{aligned} w^=ln[(L(YX,w,β1)P(wα))]=ln[L(YX,w,β1)]+ln[P(wα)]=2βi=1N(yif(xi,w))2+2αwTw
后验的最大值由最小值给出 β 2 ∑ i = 1 N ( y i − f ( x i , w ) ) 2 + α 2 w T w \displaystyle\frac{\beta}{2}\sum_{i=1}^{N}(y_i-f(xᵢ,w))² + \displaystyle\frac{\alpha}{2} w^T w 2βi=1N(yif(xi,w))2+2αwTw

贝叶斯回归案例

# coding: utf-8
'''
下面代码实现了贝叶斯线性回归的推断过程。
首先,它生成了一组样本数据,并定义了贝叶斯回归模型和伴随的向导函数(用于近似后验分布)。
然后,使用SVI(Stochastic Variational Inference)进行推断,优化模型参数。
在推断过程中,通过迭代优化损失函数来更新参数。
最后,使用Predictive函数从模型中获取后验样本,并可视化后验分布。
代码中使用了PyTorch和Pyro库进行概率编程和推断。
'''
# 导入PyTorch库,用于科学计算和深度学习基础支持
import torch

# 导入Pyro库,用于概率编程
import pyro

# 导入Pyro的概率分布模块,用于定义概率模型
import pyro.distributions as dist

# 导入Pyro的推理模块,用于实现变分推理
from pyro.infer import SVI, Trace_ELBO, Predictive

# 导入Pyro的优化器模块,用于优化变分参数
from pyro.optim import Adam

# 导入Matplotlib库,用于数据可视化
import matplotlib.pyplot as plt

# 导入Seaborn库,用于改进Matplotlib的可视化效果
import seaborn as sns


# 生成一些示例数据
# 设置随机数种子,确保实验可复现
torch.manual_seed(0)

# 生成一个等差数列,用于模拟自变量X
# torch.linspace(0, 10, 100) 生成一个起始值为0,结束值为10,包含100个元素的等差数列
X = torch.linspace(0, 10, 100)

# 定义真实斜率和截距,用于生成模拟因变量Y
true_slope = 2
true_intercept = 1

# 根据真实斜率、截距和随机噪声生成模拟因变量Y
# 这里使用torch.randn(100)生成一个均值为0,标准差为1的100个元素的随机数列,用于模拟噪声
Y = true_intercept + true_slope * X + torch.randn(100)

# 定义贝叶斯回归模型
def model(X, Y):
	"""
	通过概率图模型进行线性回归的模型定义。
	
	Args:
	    X (torch.Tensor): 输入特征,形状为(n_samples,)的一维张量。
	    Y (torch.Tensor): 目标变量,形状为(n_samples,)的一维张量。
	
	Returns:
	    None: 该函数不返回任何值,而是使用Pyro库中的采样操作定义了一个概率图模型。
	
	"""
	# 从正态分布中采样斜率
	slope = pyro.sample("slope", dist.Normal(0, 10))
	# 从正态分布中采样截距
	intercept = pyro.sample("intercept", dist.Normal(0, 10))
	# 从半正态分布中采样标准差
	sigma = pyro.sample("sigma", dist.HalfNormal(1))

	# 计算预测值(均值)
	mu = intercept + slope * X

	# 观测值的可能性(采样分布)
	# Likelihood (sampling distribution) of the observations
	with pyro.plate("data", len(X)):
		# 采样观测值,并使用实际观测值Y作为观察值
		pyro.sample("obs", dist.Normal(mu, sigma), obs=Y)

# 使用 SVI(随机变分推理)运行贝叶斯推理
def guide(X, Y):
	"""
	根据给定的数据集X和Y,使用近似后验分布来估计线性回归模型的参数。
	
	Args:
	    X (torch.Tensor): 输入特征矩阵,形状为 (N, D),其中N为样本数量,D为特征维度。
	    Y (torch.Tensor): 目标变量向量,形状为 (N,)。
	
	Returns:
	    tuple: 包含三个元素的元组,分别为:
	        - slope (torch.Tensor): 斜率参数,形状为 (1,)。
	        - intercept (torch.Tensor): 截距参数,形状为 (1,)。
	        - sigma (torch.Tensor): 标准差参数,形状为 (1,)。
	
	"""
	# 近似参数的后验分布
	# Approximate posterior distributions for the parameters
	# 斜率的位置参数
	slope_loc = pyro.param("slope_loc", torch.tensor(0.0))
	# 斜率的尺度参数
	slope_scale = pyro.param("slope_scale", torch.tensor(1.0),
							# 尺度参数必须是正数
							constraint=dist.constraints.positive)
	# 截距的位置参数
	intercept_loc = pyro.param("intercept_loc", torch.tensor(0.0))
	# 截距的尺度参数
	intercept_scale = pyro.param("intercept_scale", torch.tensor(1.0),
								# 尺度参数必须是正数
								constraint=dist.constraints.positive)
	# 标准差的位置参数
	sigma_loc = pyro.param("sigma_loc", torch.tensor(1.0), 
						# 标准差必须是正数
						constraint=dist.constraints.positive)

	# 从近似的后验分布中采样
	# Sample from the approximate posterior distributions
	# 采样斜率
	slope = pyro.sample("slope", dist.Normal(slope_loc, slope_scale))
	# 采样截距
	intercept = pyro.sample("intercept", dist.Normal(intercept_loc, 
													# 采样截距
													intercept_scale))
	# 采样标准差
	sigma = pyro.sample("sigma", dist.HalfNormal(sigma_loc))

# 初始化 SVI 和优化器
optim = Adam({"lr": 0.01})
svi = SVI(model, guide, optim, loss=Trace_ELBO())

# 运行推理循环
num_iterations = 1000
for i in range(num_iterations):
	loss = svi.step(X, Y)
	if (i + 1) % 100 == 0:
		print(f"Iteration {i + 1}/{num_iterations} - Loss: {loss}")

# 使用 Predictive 获取后验样本
predictive = Predictive(model, guide=guide, num_samples=1000)
posterior = predictive(X, Y)

# 提取参数样本
slope_samples = posterior["slope"]
intercept_samples = posterior["intercept"]
sigma_samples = posterior["sigma"]

# 计算后验均值
slope_mean = slope_samples.mean()
intercept_mean = intercept_samples.mean()
sigma_mean = sigma_samples.mean()

# 打印估计参数
print("Estimated Slope:", slope_mean.item())
print("Estimated Intercept:", intercept_mean.item())
print("Estimated Sigma:", sigma_mean.item())

# 创建子图
fig, axs = plt.subplots(1, 3, figsize=(15, 5))

# 绘制斜率的后验分布
sns.kdeplot(slope_samples, shade=True, ax=axs[0])
axs[0].set_title("Posterior Distribution of Slope")
axs[0].set_xlabel("Slope")
axs[0].set_ylabel("Density")

# 绘制截距的后验分布
sns.kdeplot(intercept_samples, shade=True, ax=axs[1])
axs[1].set_title("Posterior Distribution of Intercept")
axs[1].set_xlabel("Intercept")
axs[1].set_ylabel("Density")

# 绘制sigma的后验分布
sns.kdeplot(sigma_samples, shade=True, ax=axs[2])
axs[2].set_title("Posterior Distribution of Sigma")
axs[2].set_xlabel("Sigma")
axs[2].set_ylabel("Density")

# 调整布局
plt.tight_layout()

# 显示图
plt.show()

贝叶斯回归优点

贝叶斯回归有如下优点:

  • 当数据集的大小很小时非常有效。
  • 与基于批处理的学习相比,特别适合基于在线的学习(实时接收数据),在基于批处理的学习中,我们在开始训练模型之前就已经掌握了整个数据集。这是因为贝叶斯回归不需要存储数据。
  • 贝叶斯方法是一种久经考验的方法,在数学上非常稳健。因此,人们可以在没有任何关于数据集的额外先验知识的情况下使用它。
  • 贝叶斯回归方法采用偏态分布,使您可以在模型中包含外部信息。

贝叶斯回归缺点

贝叶斯回归有如下缺点:

  • 模型的推断可能是耗时的。
  • 如果有大量的数据可用于我们的数据集,贝叶斯方法是不值得的,而常规的频率主义方法可以更有效地完成工作
  • 如果您的代码所处的环境中,安装新包很有挑战性,并且有很强的依赖控制,那么这可能是一个问题。
  • 通常困扰传统频率回归模型的许多基本错误仍然适用于贝叶斯模型。例如,贝叶斯模型仍然依赖于特征和结果变量之间的线性关系。

贝叶斯回归何时使用

  • 样本量小
    • 当你有一个很小的样本量时,贝叶斯推断通常很有帮助。
    • 如果你需要开发一个非常复杂的模型,但又不能访问大量数据,那么贝叶斯回归是一个很好的选择。
    • 事实上,这可能是你最好的选择!大样本量对于许多其他机器学习模型正常工作是必要的。
  • 强大的先验知识
    • 将强大的外部知识纳入模型的最简单方法是利用贝叶斯模型
    • 使用的数据集越小,先验知识的影响就越明显。

总结

因此,现在您知道了贝叶斯回归器的工作原理以及何时使用它们,您应该在下次执行回归任务时尝试使用它,尤其是在数据集很小的情况下。

往期重要内容回顾

朴素贝叶斯分类器概览
应用数学与机器学习基础 - 概率与信息论篇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/766410.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

检索增强生成RAG系列5--RAG提升之路由(routing)

在系列3和系列4我讲了关于一个基本流程下,RAG的提高准确率的关键点,那么接下来,我们再次讲解2个方面,这2个方面可能与RAG的准确率有关系,但是更多的它们是有其它用途。本期先来讲解RAG路由。 目录 1 基本思想2 Logica…

Linux基础 - LNMP 架构部署动态网站环境

目录 零. 简介 一. 部署 二. 安装 Nginx 三. 安装MySQL 四. 安装PHP 五. 配置网站目录 六. 测试环境 零. 简介 LNMP 是指 Linux Nginx MySQL PHP 这一组合架构,用于部署动态网站环境。 Linux 作为操作系统,提供了稳定、安全和高效的基础平台。…

Swift 中强大的 Key Paths(键路径)机制趣谈(上)

概览 小伙伴们可能不知道:在 Swift 语言中隐藏着大量看似“其貌不扬”实则却让秃头码农们“高世骇俗”,堪称卧虎藏龙的各种秘技。 其中,有一枚“不起眼”的小家伙称之为键路径(Key Paths)。如若将其善加利用&#xff…

MYSQL函数进阶详解:案例解析(第19天)

系列文章目录 一、MySQL的函数(重点) 二、MySQL的窗口函数(重点) 三、MySQL的视图(熟悉) 四、MySQL的事务(熟悉) 文章目录 系列文章目录前言一、MySQL的函数1. 聚合函数2. group_c…

Linux基础 - MariaDB 数据库管理系统

目录 零. 简介 一. 安装 二. 基本使用 1. 设置root密码 2. 创建库 3. 创建表 4.添加数据 5. 查看数据 三. 管理表单及数据 四. 数据库的备份及恢复 零. 简介 MariaDB 是一种流行的开源数据库管理系统,它是 MySQL 的一个分支。 MariaDB 保留了与 MySQL 的…

HarmonyOS APP应用开发项目- MCA助手(Day01持续更新中~)

简言: gitee地址:https://gitee.com/whltaoin_admin/money-controller-app.git端云一体化开发在线文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/agc-harmonyos-clouddev-view-0000001700053733-V5 注&#xff1…

激光粒度分析仪校准步骤详解:提升测量精度的秘诀

在材料科学、环境监测、医药研发等众多领域,激光粒度分析仪以其高精度、高效率的测量性能,成为了不可或缺的测试工具。然而,为了保持其测量结果的准确性和可靠性,定期校准是不可或缺的步骤。 接下来,佰德将为您详细介…

可视化低代码平台之:RayData光启元的震撼作品。

RayData家的可视化作品,贝格前端工场是经常碰到,制作十分的精良,业内很有影响力。他们也有自己的低代码平台,分为了桌面版和网页版,本期分享一下他们的作品。

【单片机毕业设计选题24043】-可旋转式电视支架控制系统设计与实现

系统功能: 系统操作说明: 上电后OLED显示 “欢迎使用电视支架系统请稍后”,两秒后进入正常界面显示 第一页面第一行显示 Mode:Key, 第二行显示 TV:Middle 短按B5按键可控制步进电机左转, 第二行显示 TV:Left 后正常显示 TV:…

六、资产安全—信息分级资产管理与隐私保护练习题(CISSP)

六、资产安全—信息分级资产管理与隐私保护(CISSP): 六、资产安全—信息分级资产管理与隐私保护(C

语义检索-BAAI Embedding语义向量模型深度解析:微调Cross-Encoder以提升语义检索精度

语义检索-BAAI Embedding语义向量模型深度解析:微调Cross-Encoder以提升语义检索精度 语义向量模型(Embedding Model)已经被广泛应用于搜索、推荐、数据挖掘等重要领域。在大模型时代,它更是用于解决幻觉问题、知识时效问题、超长文本问题等各种大模型本身制约或不足的必要…

【Python】已解决:ModuleNotFoundError: No module named ‘pyhanlp’

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例五、注意事项 已解决:ModuleNotFoundError: No module named ‘pyhanlp’ 一、分析问题背景 在使用Python进行自然语言处理时,有时我们可能会用到pyhanlp这个库,它是一个基于J…

煤矿安全大模型:微调internlm2模型实现针对煤矿事故和煤矿安全知识的智能问答

煤矿安全大模型————矿途智护者 使用煤矿历史事故案例,事故处理报告、安全规程规章制度、技术文档、煤矿从业人员入职考试题库等数据,微调internlm2模型实现针对煤矿事故和煤矿安全知识的智能问答。 本项目简介: 近年来,国家对煤矿安全生产的重视程度不断提升。为了确…

STM32 中断编程入门

目录 一、中断系统 1、中断的原理 2、中断类型 外部中断 定时器中断 DMA中断 3、中断处理函数 中断标志位清除 中断服务程序退出 二、实际应用 中断控制LED 任务要求 代码示例 中断控制串口通信 任务要求1 代码示例 任务要求2 代码示例 总结 学习目标&…

【第三版 系统集成项目管理工程师】第5 章 软件工程

持续更新。。。。。。。。。。。。。。。 【第三版】第五章 软件工程 5.1软件工程定义练习 5.2软件需求5.2.1雾求的层次1.业务需求-P2032.用户需求-P2033.系统需求-P203 5.2.2质量功能部署 P2035.2.3需求获取 P2045.2.4需求分析1.结构化分析-P2042.面向对象分析-P207 5.2.5号求…

第二证券:可转债基础知识?想玩可转债一定要搞懂的交易规则!

可转债,全称是“可转化公司债券”,是上市公司为了融资,向社会公众所发行的一种债券,具有股票和债券的双重特点,投资者可以选择按照发行时约定的价格将债券转化成公司一般股票,也可作为债券持有到期后收取本…

格式化选NTFS还是exFAT 格式化NTFS后Mac不能用怎么办 移动硬盘格式化ntfs和exfat的区别

面对硬盘、U盘或移动硬盘的格式化决策,NTFS与exFAT作为主流的文件系统,用户在选择时可以根据它们的不同特点来选择适用场景。下面我们来看看格式化选NTFS还是exFAT,格式化NTFS后Mac不能用怎么办的相关内容。 一、格式化选NTFS还是exFAT 在数…

DevOps认证是什么?DevOps工具介绍

DevOps 这个词是由Development(开发) 和 Operations(运维)组合起来的,你可以把它理解成为一种让开发团队和运维团队紧密合作的方法。 DevOps从2009年诞生到现在已经14年多了,一开始大家还在摸索&#xff0…

Webpack: 插件架构之Hook体系

概述 Webpack 之所以能够应对 Web 场景下极度复杂、多样的构建需求,关键就在于其健壮、扩展性极强的插件架构,而插件架构的精髓又在于其灵活多变的 Hook 体系,可以说,只有真正掌握 Hook 底层设计与实现逻辑,深入理解不…

Git新仓库创建流程

平时需要创建新仓库,老要去查代码特别烦,在此写下流程方便备用. 1.创建新的云仓库 无论使用GitHub还是Gitee,首先要创建一个云仓库,这里就直接用国内的gitee做演示了,githup老挂加速器太烦,偷个懒. 我这里创建的是一个空仓库&…