线性回归
线性回归,简单而言,就是将输入项分别乘以一些常量,再将结果加起来得到输出。线性回归包括一元线性回归和多元线性回归。
一元线性回归
线型回归分析中,如果仅有一个自变量与一个因变量,且其关系大致上可用一条直线表示,则称之为一元线性回归(简单回归分析)。如果发现因变量Y和自变量X之间存在高度的正相关,可以确定一条直线的方程,使得所有的数据点尽可能接近这条拟合的直线。简单回归分析的模型可以用以下方程表示: 其中:
为自变量,
为因变量,
为截距,
为相关系数,
为模型的误差项。
最小二乘法求解拟合线
简单线性回归模型的求解问题,即如何根据自变量和因变量
,求解回归系数
和
。前面已经提到,误差项
是为了平衡等号两边的值,如果拟合线能够精确地捕捉到每一个点(所有的散点全部落在拟合线上),那么对应的误差项
应该为0。按照这个思路来看,要想得到理想的拟合线,就必须使误差项ε达到最小。由于误差项是
与
的差,结果可能为正值或负值,因此误差项
达到最小的问题需转换为误差平方和最小的问题(**最小二乘法的思路**)。
误差平方和的公式可以表示为:由于建模时的自变量值和因变量值都是已知的,因此求解误差平方和最小值的问题就是求解函数
的最小值,而该函数的参数就是回归系数
和
。该目标函数其实就是一个二元二次函数,如需使得目标函数
达到最小,可以使用偏导数的方法求解出参数
和
,进而得到目标函数的最小值。关于目标函数的求导过程如下:
第一步:展开平方项
(公式1-1)
第二步:求偏导数并设偏导数为0
(公式1-2)
第三步:和公式转换
(公式1-3)
第四步:化解
(公式1-4)
第五步:将参数a带入,求解b
(公式1-5)
如上推导结果所示,参数和
的值都是关于自变量x和因变量y的公式。
最小二乘法实践
问题引入:**通过公式(1-5)计算出工作年限与收入之间回归模型的参数值a和b。
# 导入第三方模块import pandas as pdimport matplotlib.pyplot as plt# 导入数据集income = pd.read_csv(r'E:/Data/6/Salary_Data.csv')x = income['YearsExperience']y = income['Salary']# 绘制散点图plt.scatter(x , y )plt.xlabel("YearsExperience")plt.ylabel("Salary")# 显示图形plt.show()

上图反映的就是自变量YearsExperience与因变量Salary之间的散点图,从散点图的趋势来看,工作年限与收入之间存在明显的正相关关系,即工作年限越长,收入水平越高。下面我们思考如何得到找到一条拟合线,让每个散点基本上都是围绕在拟合线附近。要得到这条拟合曲线,需要先确定其参数和
,进而确定其数学表达式。
income.shape
output:`` (30, 2)
从公式(1-5)中我们可知,需要先计算出自变量、因变量、自变量平方、自变量与因变量乘积的和。
# 样本量n = income.shape[0]# 计算自变量xi、因变量yi、自变量平方xi^2、自变量与因变量乘积xiyi的和sum_x = income.YearsExperience.sum()sum_y = income.Salary.sum()sum_x2 = income.YearsExperience.pow(2).sum()xy = income.YearsExperience * income.Salarysum_xy = xy.sum()
根据上面求出的几个变量,我们可套用公式计算出。
b = (sum_xy-(sum_x*sum_y)/n)/(sum_x2-(sum_x**2/n))a = income.Salary.mean()-b*income.YearsExperience.mean()# 打印出计算结果print('回归参数a的值:',a)print('回归参数b的值:',b)
output:回归参数a的值: 25792.200198668666回归参数b的值: 9449.962321455081
# 绘制拟合曲线pred_y= a + b*xplt.scatter(x , y)plt.plot(x,pred_y,c='r')plt.show()

图中的直线就是关于散点的线性回归拟合线,从图中可知,每个散点基本上都是围绕在拟合线附近。因此,收入的简单线性回归模型可以表示成:Salary=25792.20+9449.96YearsExperience
梯度下降法求解拟合线
多元线性回归
多元线性回归是简单线性回归的推广,指的是多个因变量对多个自变量的回归。其中最常用的是只限于一个因变量但有多个自变量的情况,也叫多重回归。多重回归的一般形式如下:,
代表截距,
为回归系数。
