我有38个变量,例如氧气,温度,压力等,并且有一个任务来确定每天根据这些变量产生的总产量。当我计算回归系数和截距值时,它们似乎异常且很高(不切实际)。例如,如果发现“温度”系数为+375.456,则我无法给他们任何意义,说温度每升高1个单位,产量将增加375.456g。在我的情况下,这是不切实际的。但是,预测准确性似乎是正确的。我想知道,如何解释以下所示的巨大截距(-5341.27355)和巨大的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])
答案 0 :(得分:2)
所有这些变量都不太可能线性相关,因此我建议您研究一下简单的非线性回归技术,例如决策树或内核岭回归。但是,这些解释起来比较困难。
回到您的问题,这些较高的权重很可能是由于变量之间的相关性很高,或者您只是没有太多的训练数据。 如果您不使用线性回归使用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_)
答案 1 :(得分:0)
如果您具有线性回归,则公式如下所示(y =目标,x =特征输入):
y= x1*b1 +x2*b2 + x3*b3 + x4*b4...+ c
其中b1,b2,b3,b4 ...是您的modl.coef_。正如您已经意识到,更大的数字之一是3.319+02 = 331
,截距也很大,为-5431。
正如您已经提到的,如果系数特征以1单位变化并且所有其他特征是恒定的,则系数变量表示目标变量的变化量。
因此,对于您的解释,绝对系数越高,分析的影响越大。但是需要注意的是,该模型使用了很多高系数,这意味着您的模型不仅依赖于一个变量