回归分析是统计学的核心算法,是机器学习最基本算法,也是数学建模最常用的算法之一。
简单来说,回归分析就是用一个或多个自变量来预测因变量的方法,具体是通过多组自变量和因变量的样本数据,拟合出最佳的函数关系。
本篇由前入深将线性回归的原理讲清楚,并用案例演示实际操作。
一、最小二乘法
设有 

例1,现有10期的广告费用与销售额的数据:

先画散点图观察一下:
cost<-c(30,40,40,50,60,70,70,70,80,90)
sale<-c(143.5,192.2,204.7,266,318.2,457,333.8,312.1,386.4,503.9)
dat<-as.data.frame(cbind(cost,sale))
plot(dat)

可见,这些散点大致在一条直线上,一元线性回归就是寻找一条直线,使得与这些散点拟合程度最好(越接近直线越好)。

比如画这样一条直线,方程可写为:


那么,怎么刻画这种“最接近”?





适合描述散点到直线的“接近程度”。
但绝对值不容易计算,改用:

我们需要让所有散点总体上最接近该直线,故需要让总的预测误差
![【预测算法】01. 线性回归原理及R语言实现插图25 J(\beta_0, \beta_1) = \sum_{i=1}^n (y_i - \hat{y}_i)^2 = \sum_{i=1}^n [y_i - (\beta_0+\beta_1 x_i)]^2](https://bianchenghao.cn/wp-content/uploads/2022/12/2022122605452522.jpg)
最小。
于是问题转化为优化问题,选取 
![【预测算法】01. 线性回归原理及R语言实现插图27 \min \, J(\beta_0, \beta_1) = \sum_{i=1}^n [y_i - (\beta_0+\beta_1 x_i)]^2](https://bianchenghao.cn/wp-content/uploads/2022/12/2022122605452522.jpg)
这就是“最小二乘法”,有着很直观的几何解释。
二、问题(1)求解
这是个求二元函数极小值问题。
根据微积分知识,二元函数极值是在一阶偏导等于0点处取到:
![【预测算法】01. 线性回归原理及R语言实现插图29 \left\{ \begin{array}{l} \dfrac{\partial J}{\partial \beta_0} = -2 \sum\limits_{i=1}^n \big[ y_i - \beta_0 - \beta_1 x_i ) \big] =0 \\[0.1cm] \dfrac{\partial J}{\partial \beta_1} = -2 \sum\limits_{i=1}^n \big[ y_i - \beta_0 - \beta_1 x_i ) \big] x_i =0 \end{array} \right.](https://bianchenghao.cn/wp-content/uploads/2022/12/2022122605452522.jpg)
解关于 
![【预测算法】01. 线性回归原理及R语言实现插图31 \left\{ \begin{array}{l} \beta_0 = \bar{y} - \beta_1 \bar{x} \\[0.2cm] \beta_1 = \dfrac{\sum\limits_{i=1}^n x_i y_i - \bar{y} \sum_\limits{i=1}^n x_i}{\sum\limits_{i=1}^n x^2_i - \bar{x} \sum\limits_{i=1}^n x_i} = \dfrac{\sum\limits_{i=1}^n (x_i - \bar{x})(y_i - \bar{y})}{\sum\limits_{i=1}^n (x_i - \bar{x})^2} \end{array} \right.](https://bianchenghao.cn/wp-content/uploads/2022/12/2022122605452522.jpg)
其中,
![【预测算法】01. 线性回归原理及R语言实现插图33 \left\{ \begin{array}{l} \bar{x} = \dfrac{1}{n} \sum\limits_{i=1}^n x_i \\[0.2cm] \bar{y} = \dfrac{1}{n} \sum\limits_{i=1}^n y_i \end{array} \right.](https://bianchenghao.cn/wp-content/uploads/2022/12/2022122605452522.jpg)
三、 提升:矩阵形式推导
将线性模型的全部预测值,用矩阵来写:

记

则矩阵表示为

于是,让预测误差最小的“最小二乘法”优化问题就表示为

这里 

同样 




于是,令

若 


注1:最小二乘法求解需要矩阵 
注2:矩阵形式非常便于Matlab求解,同时也可以很容易地推广到多元线性回归:取

即可,对应 




![【预测算法】01. 线性回归原理及R语言实现插图73 \beta = [\beta_0, \beta_1, \cdots, \beta_m]^T](https://bianchenghao.cn/wp-content/uploads/2022/12/2022122605452522.jpg)
注3:一些非线性回归也可以转化为线性回归来做:
例如,人口指数增长模型 






其它可变换为线性回归的函数形式:

再例如,自变量 


令 

四、最小二乘法的概率解释
真实数据中,一个 




那么,什么时候拟合效果最好,当然是预测值 
记

其中,


假设 


该假设由中心极限定理可以保证,顺便说一句,理想的误差都得服从 
则 

这就意味着,在给定 



其中, 
定义所有样本数据关于参数 

为了便于最大化似然函数,先取对数:

于是最大化对数似然函数,就相当于最小化:

这就从概率学角度完美地解释了最小二乘法的合理性。
五、模型检验
1. 拟合优度检验
计算 
总平方和: 
解释平方和: 
残差平方和: 
则 



2. 回归方程参数的检验
回归方程反应了因变量 





① 
若 





来检验原假设 
② 
对 



3. 用回归方程做预测
得到回归方程 




其中 



六、回到案例——例1
1. 做一元线性回归
lreg<-lm(sale~cost,data=dat)
summary(lreg)

结果说明:
(1) 回归方程为
sale= 5.58*cost – 23
(2) 回归系数显著不为0,其p值=5.94e-5 < 0.05
(3) 拟合优度R2=0.88,说明拟合效果很好
2. 回归系数的置信区间
confint(lreg,parm="cost",level=0.95)

回归系数 
3. 回归诊断
par(mfrow=c(2,2))
plot(lreg) #绘制回归诊断图

图1是残差拟合,越没有趋势越好,有趋势说明可能需要二次项;
图2是残差正态性检验,越落在虚线上越好(理想的残差服从0附件的正态分布,否则说明模型不够充分还有趋势没有提取出来);
图3检验残差是否等方差;
图4检验离群点,第6个样本点偏离较远,应该剔除掉重新做回归。
4. 剔除离群点,重新做一元线性回归
dat2<-dat[-6,]
lreg2<-lm(sale~cost,data=dat2)
summary(lreg2)

新回归模型拟合优度R2=0.946有了明显改进。新回归方程为:
sale = 5.28*cost – 15.15
plot(dat2)
abline(lreg2)
points(dat[6,],pch=8,col="red")

5. 用回归模型做预测
x<-data.frame(cost=c(100,110,120))
predict(lreg2,x,interval="prediction",level=0.95)

注意:做预测的自变量数据需要存为数据框格式。
参考文献:
- 《R语言实战》,Robort I. Kabacoff
- 矩阵简介与最小二乘法, 耿修瑞,中国科学院电子学研究所
- 最小二乘法解的矩阵形式推导
- 最小二乘法的极大似然解释
- 《数学建模与数学实验》,吴刚,张敬信等,中国商业出版社
版权所有,转载请注明
今天的文章【预测算法】01. 线性回归原理及R语言实现分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/15453.html