线性回归中确定系数背后的直觉

Posted

技术标签:

【中文标题】线性回归中确定系数背后的直觉【英文标题】:Intuition Behind Coefficient of Determination in Linear Regression 【发布时间】:2018-06-06 16:12:30 【问题描述】:

这是我的代码的 sn-p:

from sklearn.linear_model import LinearRegression

reg = LinearRegression()
reg.fit(feature_train,target_train)
print(reg.coef_)
print(reg.intercept_,reg.score(feature_test,target_test))

P.S:如果我对reg.score()的理解有误,请纠正我。

我对@9​​87654325@ 有疑问,这是最后一个声明。我知道这个分数越大,模型越好,这也是 r 平方值。

r 平方值:据我所知,它表示 X 的变化可以解释 Y 值的多少变化。所以它的值必须在 0 和 1 之间。

但是当我运行它时,我得到的价值约为 -1.4,低于 0. 我不明白为什么会这样。请解释一下,如果它可以取负值,这个负值意味着什么。

【问题讨论】:

stats.stackexchange.com/questions/183265/…。这有我需要的。 可以说,您的问题的答案在于链接的 SE 帖子;另外,根据scikit-learn docs,R^2 确实可以是负数。 【参考方案1】:

但是当我运行它时,我得到的值在 -1.4 左右,低于 大于 0。我不明白为什么会这样。

adjusted R-squared 可能会发生这种情况。解释是这样的:您的一组预测值在预测实际值方面做得比在实际值的平均值处水平绘制的直线更差。这就是 sklearn 文档中提到的,当他们指出拟合模型“可以任意变差”时。

【讨论】:

【参考方案2】:

R 平方值 (R2) 可以计算为:

R2 = 1.0 - (absolute_error_variance /dependent_variable_variance)

如果你使用 numpy 数组,你可以很容易地找到这些值:

absolute_error_array.var()

dependent_variable_array.var()

并手动计算 R 平方值以找出问题。

【讨论】:

是的,你说得对,我们可以做到。但我担心的是,在回归模型中,r^2 值介于 0 和 1 之间。但我也得到了否定,我也没有得到这个负值的含义。 我描述的手动计算将验证该值是否正确。如果手动计算也给出了 -1.4 的值,这意味着 1 -(方差比)的 R 平方值给出了 1 - 2.4,并且误差方差比数据方差本身,或者换句话说,模型在描述数据方面做得非常糟糕。

以上是关于线性回归中确定系数背后的直觉的主要内容,如果未能解决你的问题,请参考以下文章

Python - 多元线性回归 - 每个输入变量的确定系数

线性回归中相关性确定的相关系数

线性回归

logistic回归模型的参数呈现线性关系

多元线性回归方程公式

一元线性回归方程的计算步骤