【问题标题】:Does scikit-learn perform "real" multivariate regression (multiple dependent variables)?scikit-learn 是否执行“真正的”多元回归(多个因变量)?
【发布时间】:2015-08-08 09:24:46
【问题描述】:

我想使用多个预测变量来预测多个因变量。如果我理解正确,原则上可以制作一堆线性回归模型,每个模型都预测一个因变量,但如果因变量相关,则使用多元回归更有意义。我想做后者,但我不知道怎么做。

到目前为止,我还没有找到专门支持此功能的 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)

这个函数真的执行多元回归吗?

【问题讨论】:

    标签: python machine-learning scikit-learn linear-regression multivariate-testing


    【解决方案1】:

    如果你想考虑因变量之间的相关性,你可能需要Partial least square regression。这种方法基本上是寻找这样的自变量投影和因变量的这种投影,使这两个投影之间的协方差最大化。请参阅 scikit-learn 实现 here

    【讨论】:

    • 谢谢!这似乎对我打算做的事情更有意义,我会尝试的。
    【解决方案2】:

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

    您看到的结果绝对是意料之中的。像这样的线性模型不会考虑因变量之间的相关性。

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

    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's answer 进行比较
    猜你喜欢
    • 2018-02-14
    • 2023-03-25
    • 2016-11-14
    • 2016-10-23
    • 2020-01-02
    • 2016-07-31
    • 2020-10-10
    • 1970-01-01
    • 2017-01-18
    相关资源
    最近更新 更多