上篇详细介绍了线性回归的原理、优缺点、应用场景等内容,大家一定觉得意犹未尽,线性回归如何实施落地呢?本节内容主要介绍线性回归的步骤和案例分享。
四、怎么做线性回归
线性回归基本可以按照以下6个步骤进行:
1.探索分析。计算自变量的描述性统计量,作散点图,分析因变量与自变量的相关性
2.变量和模型选择。根据业务及模型选择自变量,并进行模型和参数估计
3.假设条件验证。根据第2步结果,查看评价指标、需满足的假设检验结果(整个模型的F检验、自变量系数的t检验,残差图等)
4.共线性和异常值检查。通过VIF、COLLIN、Collinoint进行共线性检查,通过Rstudent残差、Cook’s D统计量及DFFITS进行强影响点检查
5.模型修改。如果第3、4步的检验结果表名模型有问题,则需重新进行模型选择和拟合,并返回第3、4步的检验
6.模型验证。确定最终拟合模型后,将模型应用于验证数据集进行模型的验证。
(来源:《深入解析SAS》)
五、线性回归实例分析
由于数据机密原因,因此未使用实际工作数据,以R自带的iris以鸢尾花的特征作为数据来源。
该数据集由3种不同类型的鸢尾花的150个样本数据构成。其中的一个种类与另外两个种类是线性可分离的,后两个种类是非线性可分离的。
该数据集包含了5个属性:
Sepal.Length(花萼长度),单位是cm;
Sepal.Width(花萼宽度),单位是cm;
Petal.Length(花瓣长度),单位是cm;
Petal.Width(花瓣宽度),单位是cm;
Species(种类):Setosa(山鸢尾)、Versicolour(杂色鸢尾),Virginica(维吉尼亚鸢尾)。
模型目标:Petal.length作为因变量,探索与其他自变量的线性关系
Step1:首先对数据集的变量及内容做一个初步探索,由于数据的量纲在同一层级,且单位一致,因此未做标准化处理
Step2:发现Species为分类变量,包括:setosa、versicolor、virginica三类,因此做转化成哑变量:issetosa、isversicolor、isvirginica
Step3:以Petal.length作为因变量,其他连续性变量做散点图,观察相关关系
由散点图比较明显看出:Petal.length与Petal.width、Sepal.length有比较明显的相关关系
Step4:以Petal.length为因变量,除Sepcies外的变量为自变量,利用step()逐步筛选变量法,做初步的多元回归拟合,选定自变量为:
Petal.Length~Sepal.Length + Petal.Width + isVirginica + isVersicolor
模型分析:
1. 选入的自变量除Sepal.Width外,均明显与因变量显著相关
2. Adjusted R-squared为0.9778,& 整体模型的F检验p-value
3. 残差为0.2627,也是比较小的
Step 5: 回归诊断及共线性检查
分析:
1. 如第三部分介绍,样本数低于2000,采用Shapiro-Wilk(W)检验,p-value 大于0.05,说明不能拒绝原假设(样本服从正态分布),即残差服从正态分布
2. KAPPA值大于100,说明选取的自变量中包含共线性问题(即自变量间具有强相关性)
因此,需要对选定的自变量进行修正。
Step 6:模型修改。
自变量的选择是不断探索的过程,但是优先的选择方法应该是来源于实际业务,也可以结合主成份分析、因子分析等技术进行选择。
经过多轮测试,选定模型为:
Petal.Length~Sepal.Length + Sepal.Width + Petal.Width
分析结果同Step4。但总体误差略有增加。
Step 7: 回归诊断及共线性检查
分析结果,同Step5。残差服从正态分布,且不存在多重共线性
由残差图,也得出未存在强影响点(一般认为Cook距离大于1即是异常值)
综上步骤后,得出最终选定的模型为:
Petal.Length=-0.2671+0.72914×Sepal.Length - 0.64601×Sepal.Width + 1.44679Petal.Width
至此,已详细介绍了线性回归如何应用于实际案例。显然模型的选择不是一蹴而就的工作。实际场景中,如果样本量允许,建议将原始数据集拆分成训练数据集,验证数据集。训练数据集用于搭建模型,验证数据集用于模型的验证,避免选定的模型过度依赖于训练数据集,而造成过度拟合。两部分比例建议为7:3。
作为数据挖掘实战中最常用的模型之一,只有在实战中不断的优化总结,才能有的放矢,扬长避短,实现有效的挖掘应用。
领取专属 10元无门槛券
私享最新 技术干货