Scikit Learn - LASSO



LASSO(最小絕對收縮和選擇運算元)

LASSO 是一種正則化技術,它執行 L1 正則化。它透過新增等效於係數絕對值之和的懲罰項(收縮量)來修改損失函式。

$$\displaystyle\sum\limits_{j=1}^m\left(Y_{i}-W_{0}-\displaystyle\sum\limits_{i=1}^nW_{i}X_{ji} \right)^{2}+\alpha\displaystyle\sum\limits_{i=1}^n| W_i|=loss_{-}function+\alpha\displaystyle\sum\limits_{i=1}^n|W_i|$$

sklearn.linear_model. Lasso 是一種線性模型,添加了正則化項,用於估計稀疏係數。

引數

下表列出了Lasso模組使用的引數:

序號 引數及描述
1

alpha − float,可選,預設值 = 1.0

Alpha,乘以 L1 項的常數,是決定我們希望對模型進行多少懲罰的調整引數。預設值為 1.0。

2

fit_intercept − 布林值,可選。預設值 = True

此引數指定應將常數(偏差或截距)新增到決策函式中。如果設定為 false,則計算中不會使用截距。

3

tol − float,可選

此引數表示最佳化的容差。tol值和更新將進行比較,如果發現更新小於 tol,則最佳化檢查對偶間隙以確定最優性,並繼續直到它小於tol

4

normalize − 布林值,可選,預設值 = False

如果此引數設定為 True,則迴歸前將對迴歸量 X 進行標準化。標準化將透過減去均值併除以 L2 範數來完成。如果fit_intercept = False,則此引數將被忽略。

5

copy_X − 布林值,可選,預設值 = True

預設情況下,它為 true,這意味著 X 將被複制。但如果將其設定為 false,則 X 可能會被覆蓋。

6

max_iter − int,可選

顧名思義,它表示共軛梯度求解器採用的最大迭代次數。

7

precompute − True|False|array-like,預設值 = False

使用此引數,我們可以決定是否使用預先計算的 Gram 矩陣來加速計算。

8

warm_start − bool,可選,預設值 = false

將此引數設定為 True,我們可以重用先前對 fit 的呼叫的解決方案作為初始化。如果我們選擇預設值,即 false,它將擦除先前的解決方案。

9

random_state − int,RandomState 例項或 None,可選,預設值 = none

此引數表示生成的偽隨機數的種子,該種子在對資料進行洗牌時使用。以下是選項:

  • int − 在這種情況下,random_state是隨機數生成器使用的種子。

  • RandomState 例項 − 在這種情況下,random_state是隨機數生成器。

  • None − 在這種情況下,隨機數生成器是 np.random 使用的 RandonState 例項。

10

selection − str,預設值 = ‘cyclic’

  • Cyclic − 預設值為 cyclic,這意味著特徵預設情況下將按順序迴圈。

  • Random − 如果我們將 selection 設定為 random,則每次迭代都會更新一個隨機係數。

屬性

下表列出了Lasso模組使用的屬性:

序號 屬性及描述
1

coef_ − array,shape(n_features,) 或 (n_target, n_features)

此屬性提供權重向量。

2

Intercept_ − float | array,shape = (n_targets)

它表示決策函式中的獨立項。

3

n_iter_ − int 或 array-like,shape (n_targets)

它給出座標下降求解器為達到指定的容差而執行的迭代次數。

實現示例

以下 Python 指令碼使用 Lasso 模型,該模型進一步使用座標下降作為演算法來擬合係數:

from sklearn import linear_model
Lreg = linear_model.Lasso(alpha = 0.5)
Lreg.fit([[0,0], [1, 1], [2, 2]], [0, 1, 2])

輸出

Lasso(alpha = 0.5, copy_X = True, fit_intercept = True, max_iter = 1000,
   normalize = False, positive = False, precompute = False, random_state = None,
   selection = 'cyclic', tol = 0.0001, warm_start = False)

示例

現在,擬合完成後,模型可以預測新值,如下所示:

Lreg.predict([[0,1]])

輸出

array([0.75])

示例

對於上述示例,我們可以使用以下 Python 指令碼獲取權重向量:

Lreg.coef_

輸出

array([0.25, 0. ])

示例

類似地,我們可以使用以下 Python 指令碼獲取截距的值:

Lreg.intercept_

輸出

0.75

示例

我們可以使用以下 Python 指令碼獲取獲取指定容差的總迭代次數:

Lreg.n_iter_

輸出

2

我們可以更改引數的值以從模型中獲得所需的輸出。

廣告

© . All rights reserved.