scikit-learn是否执行“真正”的多元回归(多个因变量)?

9
我想使用多个预测器来预测多个依赖变量。如果我理解正确的话,原则上可以创建一堆线性回归模型,每个模型都预测一个依赖变量,但是如果依赖变量之间有相关性,使用多元回归更有意义。我想做后者,但不确定如何操作。
到目前为止,我没有找到一个专门支持这种情况的Python包。我已经尝试了scikit-learn,即使他们的线性回归模型示例只显示y是数组的情况(每次观察一个依赖变量),它似乎能够处理多个y。但是当我将此“多元”方法的输出与手动循环遍历每个依赖变量并独立地进行预测时获得的结果进行比较时,结果完全相同。我认为这不应该是这种情况,因为某些依赖变量之间存在强相关性(> 0.5)。
代码看起来像这样,其中y是一个n x 1或n x m的矩阵,而x和newx是各种大小的矩阵(x中的行数== n)。
ols = linear_model.LinearRegression()
ols.fit(x,y)
ols.predict(newx)

这个函数是否确实执行多元回归?

2个回答

7
如果您想考虑依赖变量之间的相关性,可能需要使用偏最小二乘回归。该方法基本上是在寻找独立变量的投影和依赖变量的投影,使得这两个投影之间的协方差最大化。请参见scikit-learn实现此处

谢谢!那似乎更符合我想做的事情,我会尝试一下。 - CSquare

6
这是一个数学/统计问题,但我会尽力在这里回答。
你看到的结果是完全符合预期的。像这样的线性模型不会考虑因变量之间的相关性。
如果你只有一个因变量,你的模型实质上将由一个权重向量组成。
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)的权重完全独立于彼此,由于总平方误差分解为每个输出变量的平方误差之和,因此最小化平方总损失与针对每个输出变量设置一个单变量线性模型并将它们独立地最小化其平方损失完全相同。


谢谢解释!我误解了如何处理多个依赖变量。我会将这个结果与lanenok的答案进行比较。 - CSquare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接