scikit-learn 是否执行 "real" 多元回归(多个因变量)?
Does scikit-learn perform "real" multivariate regression (multiple dependent variables)?
我想使用多个预测变量来预测多个因变量。如果我理解正确,原则上可以制作一堆线性回归模型,每个模型预测一个因变量,但如果因变量相关,则使用多元回归更有意义。我想做后者,但我不知道怎么做。
到目前为止我还没有找到专门支持这个的Python包。我已经尝试过 scikit-learn,尽管他们的线性回归模型示例只显示了 y 是一个数组的情况(每次观察一个因变量),但它似乎能够处理多个 y。但是,当我将此 "multivariate" 方法的输出与我通过手动遍历每个因变量并相互独立地预测它们所获得的结果进行比较时,结果是完全相同的。我认为情况不应该如此,因为某些因变量 (>0.5) 之间存在很强的相关性。
代码看起来像这样,其中 y
是 n x 1
矩阵或 n x m
矩阵,以及各种大小的 x
和 newx
矩阵(x == n
中的行数)。
ols = linear_model.LinearRegression()
ols.fit(x,y)
ols.predict(newx)
这个函数真的执行多元回归吗?
这是一个mathematical/stats问题,但我还是会尽量在这里回答。
你看到的结果绝对是意料之中的。像这样的线性模型不会考虑因变量之间的相关性。
如果你只有一个因变量,你的模型基本上由一个权重向量组成
w_0 w_1 ... w_n,
其中 n
是特征的数量。使用 m
个因变量,您将得到一个权重矩阵
w_10 w_11 ... w_1n
w_20 w_21 ... w_2n
.... ....
w_m0 w_m1 ... w_mn
但不同输出变量 (1, ..., m) 的权重彼此完全独立,并且由于平方误差的总和拆分为每个输出变量的平方误差之和,因此最小化平方总损失与为每个输出变量建立一个单变量线性模型并相互独立地最小化它们的平方损失完全相同。
如果要考虑因变量之间的相关性,大概需要Partial least square regression. This method is basically searching for such projection of independent variables and such projection of the dependent variables, that the covariance between these two projections is maximized. See scikit-learn implementation here。
我想使用多个预测变量来预测多个因变量。如果我理解正确,原则上可以制作一堆线性回归模型,每个模型预测一个因变量,但如果因变量相关,则使用多元回归更有意义。我想做后者,但我不知道怎么做。
到目前为止我还没有找到专门支持这个的Python包。我已经尝试过 scikit-learn,尽管他们的线性回归模型示例只显示了 y 是一个数组的情况(每次观察一个因变量),但它似乎能够处理多个 y。但是,当我将此 "multivariate" 方法的输出与我通过手动遍历每个因变量并相互独立地预测它们所获得的结果进行比较时,结果是完全相同的。我认为情况不应该如此,因为某些因变量 (>0.5) 之间存在很强的相关性。
代码看起来像这样,其中 y
是 n x 1
矩阵或 n x m
矩阵,以及各种大小的 x
和 newx
矩阵(x == n
中的行数)。
ols = linear_model.LinearRegression()
ols.fit(x,y)
ols.predict(newx)
这个函数真的执行多元回归吗?
这是一个mathematical/stats问题,但我还是会尽量在这里回答。
你看到的结果绝对是意料之中的。像这样的线性模型不会考虑因变量之间的相关性。
如果你只有一个因变量,你的模型基本上由一个权重向量组成
w_0 w_1 ... w_n,
其中 n
是特征的数量。使用 m
个因变量,您将得到一个权重矩阵
w_10 w_11 ... w_1n
w_20 w_21 ... w_2n
.... ....
w_m0 w_m1 ... w_mn
但不同输出变量 (1, ..., m) 的权重彼此完全独立,并且由于平方误差的总和拆分为每个输出变量的平方误差之和,因此最小化平方总损失与为每个输出变量建立一个单变量线性模型并相互独立地最小化它们的平方损失完全相同。
如果要考虑因变量之间的相关性,大概需要Partial least square regression. This method is basically searching for such projection of independent variables and such projection of the dependent variables, that the covariance between these two projections is maximized. See scikit-learn implementation here。