[英]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.