Python 的套索回归:简单问题
Lasso Regression with Python: Simple Question
假设我有 table 个值:
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'])
Lasso 只是 "shrinking" 线性模型自变量集的一种方法(通过尝试找到能够很好地预测因变量的自变量子集)。您需要了解的是线性回归在做什么。请记住,线性回归的 objective 是创建一个可用于预测因变量值的线性模型。您可能会提出以下模型(这是您在进行线性回归时试图解决的问题 - 特别是您正在解决系数问题):
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'
,您应该得到 [1, 0, 0, 0]
的系数。
假设我有 table 个值:
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'])
Lasso 只是 "shrinking" 线性模型自变量集的一种方法(通过尝试找到能够很好地预测因变量的自变量子集)。您需要了解的是线性回归在做什么。请记住,线性回归的 objective 是创建一个可用于预测因变量值的线性模型。您可能会提出以下模型(这是您在进行线性回归时试图解决的问题 - 特别是您正在解决系数问题):
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'
,您应该得到 [1, 0, 0, 0]
的系数。