多元线性回归的数学原理和代码实现 | 更文挑战

1,500 阅读3分钟

“这是我参与更文挑战的第15天,活动详情查看: 更文挑战

多元线性回归的原理和一元线性回归的原理在本质上是一样的,不过因为多元线性回归可以考虑到多个因素对目标变量的影响,所以在商业实战中应用更为广泛。

多元线性回归模型可以表示为如下所示的公式。

image.png

其中x1、x2、x3……为不同的特征变量,k1、k2、k3……则为这些特征变量前的系数,k0为常数项。多元线性回归模型的搭建也是通过数学计算来获取合适的系数,使得如下所示的残差平方和最小

image.png

数学上通过最小二乘法和梯度下降法来求解系数,其核心代码和一元线性回归其实是一致的,具体如下。

from sklearn.linear_model import LinearRegression
regr = LinearRegression()
regr.fit(X,Y)

上述代码和一元线性回归代码的区别在于这里的X包含多个特征变量信息。利用多元线性回归可以构建更加丰富和实用的模型,例如,根据工龄、地域、行业等因素来预测薪水,根据房屋大小、所处位置、是否靠近地铁等因素来预测房价等。

客户价值预测模型

1.案例背景

以信用卡客户的客户价值为例来解释客户价值预测的具体含义

2.读取数据

通过如下代码读取相关数据。这里共选取了100多组已有的客户价值数据,其中部分数据经过简单的预处理。

import pandas as pd 
df = pd.read_excel('客户价值数据表.xlsx')
df.head()

打印输出的前5行数据如下。“客户价值”列为1年的客户价值,即在1年里能给银行带来的收益;“学历”列的数据已经做了预处理,其中2代表高中学历,3代表本科学历,4代表研究生学历;“性别”列中,0代表女,1代表男

image.png

此时后5列为自变量,“客户价值”为因变量,通过如下代码进行自变量、因变量选取.

X=df[['历史贷款金额','贷款次数','学历','月收入','性别']]
Y=df['客户价值']

3.模型搭建

通过如下代码搭建线性回归模型。

from sklearn.linear_model import LinearRegression
regr = LinearRegreesion()
regr.fit(X,Y)

4.线性回归方程构造

通过如下代码查看线性回归方程的系数和常数项。

print('各系数:'+str(regr.coef_))
print('常数项k0:'+str(regr.intercept_))

5.模型评估

评估搭建的多元线性回归模型,代码如下。

import statsmodels.api as sm
X2 = sm.add_constant(X)
est = sm.OLS(Y,X2).fit()
print(est.summary())

此时运行结果如下图所示。可以看到,模型的R-squared值为0.571,Adj.R-squared值为0.553,整体拟合效果不是特别好,可能是因为本案例的数据量偏少,不过在此数据量条件下也算可以接受的结果。再来观察P值,可以发现大部分特征变量的P值都较小,的确与目标变量(即“客户价值”)显著相关,而“性别”这一特征变量的P值达到了0.951,即与目标变量没有显著相关性,这个结论也符合经验认知,因此,在之后的建模中可以舍去“性别”这一特征变量。

image.png