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