Scikit Learn - 贝叶斯岭回归
贝叶斯回归通过使用概率分布而非点估计来构建线性回归,提供了一种自然机制,能够处理数据不足或数据分布不均的情况。输出或响应"y"被假定为来自概率分布,而不是估计为单个值。
从数学上讲,为了获得完全概率模型,响应 y 被假定为围绕 $X_{w}$𝑋 的高斯分布,如下所示
$$p\left(y\arrowvert X,w,\alpha ight)=N\left(y\arrowvert X_{w},\alpha ight)$$最有用的贝叶斯回归类型之一是贝叶斯岭回归,它可以估计回归问题的概率模型。这里,系数 w 的先验由球面高斯分布给出,如下所示 −
$$p\left(w\arrowvert \lambda ight)=N\left(w\arrowvert 0,\lambda^{-1}I_{p} ight)$$由此产生的模型称为贝叶斯岭回归,在 scikit-learn 中,sklearn.linear_model.BeyesianRidge 模块用于贝叶斯岭回归。
参数
下表列出了 BayesianRidge 模块使用的参数 −
| Sr.No | 参数及说明 |
|---|---|
| 1 |
n_iter − int,可选 表示最大迭代次数。默认值为 300,但用户自定义的值必须大于或等于 1。 |
| 2 |
fit_intercept − 布尔值,可选,默认为 True 决定是否计算此模型的截距。如果设置为 false,则计算中不会使用截距。 |
| 3 |
tol − 浮点型,可选,默认值 = 1.e-3 它表示解的精度,如果 w 收敛,则算法将停止。 |
| 4 |
alpha_1 −浮点型,可选,默认值:1.e-6 它是第一个超参数,是 Gamma 分布先验相对于 alpha 参数的形状参数。 |
| 5 |
alpha_2 − 浮点型,可选,默认值:1.e-6 它是第二个超参数,是 Gamma 分布先验相对于 alpha 参数的逆尺度参数。 |
| 6 |
lambda_1 −浮点型,可选,默认值为 1.e-6 它是第一个超参数,是 Gamma 分布先验相对于 lambda 参数的形状参数。 |
| 7 |
lambda_2 − 浮点型,可选,默认值为 1.e-6 它是第二个超参数,是 Gamma 分布先验相对于 lambda 参数的逆尺度参数。 |
| 8 |
copy_X −布尔值,可选,默认值 = True 默认情况下,该值为 True,表示将复制 X。但如果设置为 false,则 X 可能会被覆盖。 |
| 9 |
compute_score − 布尔值,可选,默认值 = False 如果设置为 true,则在优化的每次迭代中计算对数边际似然。 |
| 10 |
verbose −布尔值,可选,默认值为 False 默认情况下,该值为 false,但如果设置为 true,则在拟合模型时将启用详细模式。 |
属性
下表列出了 BayesianRidge 模块使用的属性 −
| Sr.No | 属性和说明 |
|---|---|
| 1 |
coef_ − 数组,shape = n_features 此属性提供权重向量。 |
| 2 |
intercept_ − 浮点型 它表示决策函数中的独立项。 |
| 3 |
alpha_ −浮点型 此属性提供噪声的估计精度。 |
| 4 |
lambda_ − 浮点型 此属性提供权重的估计精度。 |
| 5 |
n_iter_ − int 它提供算法达到停止标准所需的实际迭代次数。 |
| 6 |
sigma_ −数组,形状 = (n_features, n_features) 它提供了权重的估计方差-协方差矩阵。 |
| 7 |
scores_ − 数组,形状 = (n_iter_+1) 它提供了优化每次迭代时对数边际似然的值。在结果得分中,数组以针对 $a\:and\:\lambda$𝜆 的初始值获得的对数边际似然值开始,以针对 $a\:and\:\lambda$ 的估计值结束。 |
实现示例
以下 Python 脚本提供了一个使用 sklearn BayesianRidge 模块拟合贝叶斯岭回归模型的简单示例。
from sklearn import linear_model X = [[0, 0], [1, 1], [2, 2], [3, 3]] Y = [0, 1, 2, 3] BayReg = linear_model.BayesianRidge() BayReg.fit(X, Y)
输出
BayesianRidge(alpha_1 = 1e-06, alpha_2 = 1e-06, compute_score = False, copy_X = True, fit_intercept = True, lambda_1 = 1e-06, lambda_2 = 1e-06, n_iter = 300, normalize = False, tol=0.001, verbose = False)
从上面的输出中,我们可以检查计算中使用的模型参数。
示例
现在,一旦拟合完成,模型可以预测新的值,如下所示:−
BayReg.predict([[1,1]])
输出
array([1.00000007])
示例
类似地,我们可以访问模型的系数 w,如下所示:−
BayReg.coef_
输出
array([0.49999993, 0.49999993])

