簡體   English   中英

使用Python進行套索回歸:簡單問題

[英]Lasso Regression with Python: Simple Question

假設我有一個值表:

df = pd.DataFrame({'Y1':[1, 2, 3, 4, 5, 6], 'X1':[1, 2, 3, 4, 5, 6], 'X2':[1, 1, 2, 1, 1, 1], 
              'X3':[6, 6, 6, 5, 6, 4], 'X4':[6, 5, 4, 3, 2, 1]})

我想使用所有這些值作為測試集進行簡單的套索回歸,其中Y1是因變量,所有X1 ... X4是自變量。 我嘗試使用以下方法:

from sklearn.linear_model import Lasso
Lasso(alpha = 0.0001).fit(df, df['Y1'])

但這並沒有給我我想要的系數。 我該如何執行這個簡單的任務? 謝謝。

我認為您不完全理解這些系數的含義。 首先,您不應該對所有變量都回歸'Y1' (包括'Y1' )。 不要在自變量中包含'Y1'

Lasso(alpha = 0.0001).fit(df[['X1','X2','X3','X4']], df['Y1'])

套索只是一種“收縮”線性模型的自變量集的方法(通過嘗試找到可以很好地預測因變量的自變量子集)。 您需要了解的是線性回歸在做什么。 請記住,線性回歸的目的是創建可用於預測因變量值的線性模型。 您可能會提出以下模型(這是進行線性回歸時要解決的問題-特別是要解決系數問題):

Y1 = b1*X1 + b2*X2 + b3*X3 + b4*X4

現在,如果我們使用您建議的系數(保留'Y1' ),則模型將為:

Y1 = Y1 + X1 - X4

但是您顯然可以看出,這並不能很好地預測'Y1' 我們可以將模型更改為:

Y1 = Y1

'Y1'完美地預測'Y1' (duh)。 這就是為什么系數輸出為[ 1, 0, -0, -0, -0] 但是,這不是我們進行回歸時想要的。 就像我之前說過的,您希望將'Y1'排除在回歸之外。 因此,使用您建議的系數並省略'Y1' ,您的模型將是:

Y1 = X1 - X4

再次注意,這不能很好地預測'Y1' (您可以從數據集中測試一些點)。 相反,您可以使用以下模型完美地預測'Y1'

Y1 = X1

因此,如果套索在'X1','X2','X3','X4' 'Y1'上回歸'Y1' ,則系數應為[1, 0, 0, 0]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM