您的当前位置:首页正文

从一个R语言案例学线性回归

来源:要发发知识网

线性回归简介

如下图所示,如果把自变量(也叫independent variable)和因变量(也叫dependent variable)画在二维坐标上,则每条记录对应一个点。线性回规最常见的应用场景则是用一条直线去拟和已知的点,并对给定的x值预测其y值。而我们要做的就是找出一条合适的曲线,也就是找出合适的斜率及纵截矩。

SSE & RMSE

上图中的SSE指sum of squared error,也即预测值与实际值之差的平方和,可由此判断该模型的误差。但使用SSE表征模型的误差有些弊端,比如它依赖于点的个数,且不好定其单位。所以我们有另外一个值去称量模型的误差。RMSE(Root-Mean-Square Error)。

由N将其标准化,并且其单位与变量单位相同。

案例

许多研究表明,全球平均气温在过去几十年中有所升高,以此引起的海平面上升和极端天气频现将会影响无数人。本文所讲案例就试图研究全球平均气温与一些其它因素的关系。

此数据集包含了从1983年5月到2008年12月的数据。

本例我们以1983年5月到2006年12月的数据作为训练数据集,以之后的数据作为测试数据集。

数据

首先加载数据

temp<-read.csv("climate_change.csv")

数据解释

Year 年份 M

Month 月份 T

emp 当前周期内的全球平均气温与一个参考值之差

CO2, N2O,CH4,CFC.11,CFC.12:这几个气体的大气浓度 Aerosols

模型选择

线性回归模型保留两部分。

选择目标feature。我们数据中,有多个feature,但并非所有的feature都对预测有帮助,或者并非所有的feature都需要一起工作来做预测,因此我们需要筛选出最小的最能预测出接近事实的feature组合。

确定feature系数(coefficient)。feature选出来后,我们要确定每个feature对预测结果所占的权重,这个权重即为coefficient

结合实例选择模型

初始选择所有feature

选择所有feature作为第一个model1,并使用summary函数算出其AdjustedR2为0.7371。

model1<-lm(Temp~MEI+CO2+CH4+N2O+CFC.11+CFC.12+TSI+Aerosols,temp)summary(model1)

逐一去掉feature

在model1中去掉任一个feature,并记下相应的AdjustedR2如下

FeatureAdjustedR2

CO2 + CH4 + N2O + CFC.11 + CFC.12 + TSI + Aerosols0.6373

MEI + CH4 + N2O + CFC.11 + CFC.12 + TSI + Aerosols0.7331

MEI + CO2 + N2O + CFC.11 + CFC.12 + TSI + Aerosols0.738

MEI + CO2 + CH4 + CFC.11 + CFC.12 + TSI + Aerosols0.7339

MEI + CO2 + CH4 + N2O + CFC.12 + TSI + Aerosols0.7163

MEI + CO2 + CH4 + N2O + CFC.11 + TSI + Aerosols0.7172

MEI + CO2 + CH4 + N2O + CFC.11 + CFC.12 + Aerosols0.697

MEI + CO2 + CH4 + N2O + CFC.11 + CFC.12 + TSI0.6883

本轮得到Temp ~ MEI + CO2 + N2O + CFC.11 + CFC.12 + TSI + Aerosols

从model2中任意去掉1个feature,并记下相应的AdjustedR2如下

FeatureAdjustedR2

CO2 + N2O + CFC.11 + CFC.12 + TSI + Aerosols0.6377

MEI + N2O + CFC.11 + CFC.12 + TSI + Aerosols0.7339

MEI + CO2 + CFC.11 + CFC.12 + TSI + Aerosols0.7346

MEI + CO2 + N2O + CFC.12 + TSI + Aerosols0.7171

MEI + CO2 + N2O + CFC.11 + TSI + Aerosols0.7166

MEI + CO2 + N2O + CFC.11 + CFC.12 + Aerosols0.698

MEI + CO2 + N2O + CFC.11 + CFC.12 + TSI0.6891

任一组合的AdjustedR2都比上一轮小,因此选择上一轮的feature组合作为最终的模型,也即Temp ~ MEI + CO2 + N2O + CFC.11 + CFC.12 + TSI + Aerosols

由summary(model2)可算出每个feature的coefficient如下 。

线性回归介绍

在线性回归中,数据使用线性预测函数来建模,并且未知的模型参数也是通过数据来估计。这些模型被叫做线性模型。最常用的线性回归建模是给定X值的y的条件均值是X的仿射函数。

这个错误估计函数是去对x(i)的估计值与真实值y(i)差的平方和作为错误估计函数,前面乘上的1/2m是为了在求导的时候,这个系数就不见了。至于为何选择平方和作为错误估计函数,就得从概率分布的角度来解释了。

如何调整θ以使得J(θ)取得最小值有很多方法,本文会重点介绍梯度下降法和正规方程法。

梯度下降

在选定线性回归模型后,只需要确定参数θ,就可以将模型用来预测。然而θ需要使得J(θ)最小。因此问题归结为求极小值问题。

梯度下降法流程如下:

1. 首先对θ赋值,这个值可以是随机的,也可以让θ为一个全零向量。

2. 改变θ的值,使得J(θ)按梯度下降的方向进行调整。

梯度方向由J(θ)对θ的偏导数确定,由于求的是极小值,因此梯度方向是偏导数的反方向。更新公式为为:

这种方法需要对全部的训练数据求得误差后再对θ进行更新。(α为学习速度)

正规方程(Normal Equation)