- Scikit Learn 教程
- Scikit Learn - 首页
- Scikit Learn - 简介
- Scikit Learn - 建模过程
- Scikit Learn - 数据表示
- Scikit Learn - 估计器 API
- Scikit Learn - 约定
- Scikit Learn - 线性建模
- Scikit Learn - 扩展线性建模
- 随机梯度下降
- Scikit Learn - 支持向量机
- Scikit Learn - 异常检测
- Scikit Learn - K 近邻
- Scikit Learn - KNN 学习
- 朴素贝叶斯分类
- Scikit Learn - 决策树
- 随机决策树
- Scikit Learn - 集成方法
- Scikit Learn - 聚类方法
- 聚类性能评估
- 使用 PCA 的降维
- Scikit Learn 有用资源
- Scikit Learn - 快速指南
- Scikit Learn - 有用资源
- Scikit Learn - 讨论
Scikit Learn - 贝叶斯岭回归
贝叶斯回归通过使用概率分布而不是点估计来制定线性回归,提供了一种应对数据不足或数据分布不佳的自然机制。输出或响应“y”被假定是从概率分布中抽取的,而不是估计为单个值。
在数学上,为了获得一个完全概率模型,响应 y 假定围绕 $X_{w}$𝑋服从高斯分布,如下所示
$$p\left(y\arrowvert X,w,\alpha\right)=N\left(y\arrowvert X_{w},\alpha\right)$$最有用的一种贝叶斯回归是贝叶斯岭回归,它估计回归问题的概率模型。这里系数 w 的先验由球形高斯分布给出,如下所示:
$$p\left(w\arrowvert \lambda\right)=N\left(w\arrowvert 0,\lambda^{-1}I_{p}\right)$$这个结果模型称为贝叶斯岭回归,在 scikit-learn 中,sklearn.linear_model.BayesianRidge 模块用于贝叶斯岭回归。
参数
下表列出了BayesianRidge 模块使用的参数:
序号 | 参数及描述 |
---|---|
1 |
n_iter − int,可选 它表示最大迭代次数。默认值为 300,但用户定义的值必须大于或等于 1。 |
2 |
fit_intercept − 布尔值,可选,默认为 True 它决定是否为该模型计算截距。如果设置为 false,则计算中不会使用截距。 |
3 |
tol − float,可选,默认为 1.e-3 它表示解的精度,如果 w 收敛,则会停止算法。 |
4 |
alpha_1 − float,可选,默认为 1.e-6 它是第一个超参数,它是 alpha 参数的 Gamma 分布先验的形状参数。 |
5 |
alpha_2 − float,可选,默认为 1.e-6 它是第二个超参数,它是 alpha 参数的 Gamma 分布先验的逆尺度参数。 |
6 |
lambda_1 − float,可选,默认为 1.e-6 它是第一个超参数,它是 lambda 参数的 Gamma 分布先验的形状参数。 |
7 |
lambda_2 − float,可选,默认为 1.e-6 它是第二个超参数,它是 lambda 参数的 Gamma 分布先验的逆尺度参数。 |
8 |
copy_X − 布尔值,可选,默认为 True 默认情况下,它是 true,这意味着 X 将被复制。但是如果设置为 false,X 可能会被覆盖。 |
9 |
compute_score − 布尔值,可选,默认为 False 如果设置为 true,它会在优化的每次迭代中计算对数边际似然。 |
10 |
verbose − 布尔值,可选,默认为 False 默认情况下,它是 false,但如果设置为 true,则在拟合模型时将启用详细模式。 |
属性
下表列出了BayesianRidge 模块使用的属性:
序号 | 属性及描述 |
---|---|
1 |
coef_ − array,shape = n_features 此属性提供权重向量。 |
2 |
intercept_ − float 它表示决策函数中的独立项。 |
3 |
alpha_ − float 此属性提供估计的噪声精度。 |
4 |
lambda_ − float 此属性提供估计的权重精度。 |
5 |
n_iter_ − int 它提供算法达到停止准则的实际迭代次数。 |
6 |
sigma_ − array,shape = (n_features, n_features) 它提供估计的权重的方差-协方差矩阵。 |
7 |
scores_ − array,shape = (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])