scikit-learn是否执行"真实"多元回归(多个因变量)?

CSq*_*are 6 python machine-learning linear-regression multivariate-testing scikit-learn

我想使用多个预测变量来预测多个因变量.如果我理解正确,原则上可以制作一组线性回归模型,每个模型预测一个因变量,但如果因变量是相关的,那么使用多元回归更有意义.我想做后者,但我不确定如何.

到目前为止,我还没有找到专门支持此功能的Python包.我尝试过scikit-learn,尽管他们的线性回归模型示例仅显示y是一个数组(每个观察一个因变量)的情况,但它似乎能够处理多个y.但是,当我将这种"多变量"方法的输出与我通过手动循环每个因变量并相互独立地预测它们得到的结果进行比较时,结果完全相同.我不认为应该是这种情况,因为一些因变量(> 0.5)之间存在很强的相关性.

代码只是看起来像这样,与y任一个n x 1矩阵或n x m矩阵,并且xnewx各种尺寸的矩阵(行数中x == n).

ols = linear_model.LinearRegression()
ols.fit(x,y)
ols.predict(newx)
Run Code Online (Sandbox Code Playgroud)

此功能是否实际执行多元回归?

lan*_*nok 6

如果要考虑因变量之间的相关性,则可能需要偏最小二乘回归.该方法基本上是搜索自变量的这种投影和因变量的这种投影,这两个投影之间的协方差最大化.见scikit学习落实这里.


cfh*_*cfh 5

这是一个数学/统计问题,但无论如何我都会尝试回答它.

你看到的结果绝对是预期的.像这样的线性模型不会考虑因变量之间的相关性.

如果您只有一个因变量,那么您的模型基本上由权重向量组成

w_0  w_1  ...  w_n,
Run Code Online (Sandbox Code Playgroud)

n功能的数量在哪里.对于m因变量,您可以使用权重矩阵

w_10  w_11  ...  w_1n
w_20  w_21  ...  w_2n
....             ....
w_m0  w_m1  ...  w_mn
Run Code Online (Sandbox Code Playgroud)

但是不同输出变量(1,...,m)的权重完全相互独立,并且由于误差平方和总和分成每个输出变量的误差平方和,所以最小化平方总损失是与为每个输出变量设置一个单变量线性模型并将它们的平方损失彼此独立地最小化完全相同.