【问题标题】:Can intercept and regression coefficients (Beta values) be very high?截距和回归系数(Beta 值)可以很高吗?
【发布时间】:2019-08-20 22:26:26
【问题描述】:

我有 38 个变量,例如氧气、温度、压力等,我的任务是根据这些变量确定每天产生的总产量。当我计算回归系数和截距值时,它们似乎异常且非常高(不切实际)。例如,如果发现“温度”系数为 +375.456,我无法给他们一个含义,即温度增加一个单位会增加 375.456 克的产量。这在我的场景中是不切实际的。然而,预测的准确性似乎是正确的。我想知道,如何解释下面显示的这些巨大的截距(-5341.27355)和巨大的 beta 值。另一个重要的一点是,我删除了多共线性列,而且,我没有缩放变量/标准化它们,因为我需要 beta 系数具有意义,这样我可以说,温度增加一个单位会使产量增加 10g 左右。非常感谢您的意见!

modl.intercept_
Out[375]: -5341.27354961415

modl.coef_
Out[376]: 
array([ 1.38096017e+00, -7.62388829e+00,  5.64611255e+00,  2.26124164e-01,
        4.21908571e-01,  4.50695302e-01, -8.15167717e-01,  1.82390184e+00,
       -3.32849969e+02,  3.31942553e+02,  3.58830763e+02, -2.05076898e-01,
       -3.06404757e+02,  7.86012402e+00,  3.21339318e+02, -7.00817205e-01,
       -1.09676321e+04,  1.91481734e+00,  6.02929848e+01,  8.33731416e+00,
       -6.23433431e+01, -1.88442804e+00,  6.86526274e+00, -6.76103795e+01,
       -1.11406021e+02,  2.48270706e+02,  2.94836048e+01,  1.00279016e+02,
        1.42906659e-02, -2.13019683e-03, -6.71427100e+02, -2.03158515e+02,
        9.32094007e-03,  5.56457014e+01, -2.91724945e+00,  4.78691176e-01,
        8.78121854e+00, -4.93696073e+00])

【问题讨论】:

    标签: machine-learning linear-regression


    【解决方案1】:

    所有这些变量都不太可能是线性相关的,因此我建议您查看简单的非线性回归技术,例如决策树或核岭回归。然而,这些更难解释。

    回到您的问题,这些高权重很可能是由于变量之间存在一定程度的相关性,或者您根本没有太多的训练数据。 如果您使用 Lasso 回归而不是线性回归,则解决方案会偏离高回归系数,并且拟合度也可能会提高。

    关于如何在scikit-learn 中执行此操作的小示例,包括正则化超参数的交叉验证:

    from sklearn.linear_model LassoCV
    
    # Make up some data
    n_samples = 100
    n_features = 5
    X = np.random.random((n_samples, n_features))
    # Make y linear dependent on the features
    y = np.sum(np.random.random((1,n_features)) * X, axis=1)
    
    model = LassoCV(cv=5, n_alphas=100, fit_intercept=True)
    model.fit(X,y)
    print(model.intercept_)
    

    【讨论】:

    • 非常感谢:)。我会做套索,让你知道它是如何工作的。
    • 嗨,我照你说的做了。现在,beta 值和截距看起来很合理,谢谢。但我的大多数 beta 系数往往为零,这是我不喜欢的。如果可能的话,我想在方程中包含所有这些变量:)。你能帮我解决一下吗?
    • 这是 coef 现在的样子:[ 0.74321934, -0. , 2.3479449 , -1.39034172, 0.43315551, 0.33641404, -0.04482985, 0. , 0. , 0. , 0. , 0. , -0. , -0。 , -0。 , -0。 , -0。 , -0。 , 0. , -0. , -0。 , -0。 , -0。 , -0。 , -0。 , 0. , -0. , 0. , 0.01676537, -0.00663812, -0. , -0。 , 0.00600775, 0. , -0. , 0. , 0. , 0. ]
    • 可能是 CV 中使用的 alpha 值(正则化参数)不是最优的。您可以使用alphas 关键字自己指定一个列表。如果更改 alpha 值,您将获得或多或少的稀疏解。但总的来说,您希望数据自己说话,而不是强制执行您认为合理的事情。系数为 0 的特征很可能对预测不是很重要。
    • 有道理 :) 谢谢
    【解决方案2】:

    如果您有线性回归,公式如下所示(y= 目标,x= 特征输入):

    y= x1*b1 +x2*b2 + x3*b3 + x4*b4...+ c
    

    其中 b1,b2,b3,b4... 是您的 modl.coef_。正如您已经意识到您的一个大数字是3.319+02 = 331 并且截距也很大,有-5431。 正如您已经提到的,系数变量意味着目标变量的变化量,如果系数特征随着 1 个单位的变化而变化并且所有其他特征都是恒定的。

    所以对于您的解释,绝对系数越高,您的分析的影响就越大。但重要的是要注意模型使用了很多高系数,这意味着您的模型不仅仅依赖于一个变量

    【讨论】:

      猜你喜欢
      • 2017-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-12
      • 2022-08-06
      • 2020-08-18
      • 2020-12-12
      • 2021-02-03
      相关资源
      最近更新 更多