线性回归简介

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

SSE & RMSE

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

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

案例

许多研究表明,全球平均气温在过去几十年中有所升高,以此引起的海平面上升和极端天气频现将会影响无数人。本文所讲案例就试图研究全球平均气温与一些其它因素的关系。
读者可由此下载本文所使用的数据climate_change.csv。
https://courses.edx.org/c4x/MITx/15.071x_2/asset/climate_change.csv
此数据集包含了从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函数算出其Adjusted R2为0.7371。

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

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

Feature Adjusted R2
CO2 + CH4 + N2O + CFC.11 + CFC.12 + TSI + Aerosols 0.6373
MEI + CH4 + N2O + CFC.11 + CFC.12 + TSI + Aerosols 0.7331
MEI + CO2 + N2O + CFC.11 + CFC.12 + TSI + Aerosols 0.738
MEI + CO2 + CH4 + CFC.11 + CFC.12 + TSI + Aerosols 0.7339
MEI + CO2 + CH4 + N2O + CFC.12 + TSI + Aerosols 0.7163
MEI + CO2 + CH4 + N2O + CFC.11 + TSI + Aerosols 0.7172
MEI + CO2 + CH4 + N2O + CFC.11 + CFC.12 + Aerosols 0.697
MEI + CO2 + CH4 + N2O + CFC.11 + CFC.12 + TSI 0.6883

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

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

Feature Adjusted R2
CO2 + N2O + CFC.11 + CFC.12 + TSI + Aerosols 0.6377
MEI + N2O + CFC.11 + CFC.12 + TSI + Aerosols 0.7339
MEI + CO2 + CFC.11 + CFC.12 + TSI + Aerosols 0.7346
MEI + CO2 + N2O + CFC.12 + TSI + Aerosols 0.7171
MEI + CO2 + N2O + CFC.11 + TSI + Aerosols 0.7166
MEI + CO2 + N2O + CFC.11 + CFC.12 + Aerosols 0.698
MEI + CO2 + N2O + CFC.11 + CFC.12 + TSI 0.6891

任一组合的Adjusted R2都比上一轮小,因此选择上一轮的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)

 

从一个R语言案例学线性回归的更多相关文章

  1. 机器学习(一) 从一个R语言案例学线性回归

    写在前面的话 按照正常的顺序,本文应该先讲一些线性回归的基本概念,比如什么叫线性回归,线性回规的常用解法等.但既然本文名为<从一个R语言案例学会线性回归>,那就更重视如何使用R语言去解决线 ...

  2. 概率图模型 基于R语言 这本书中的第一个R语言程序

    概率图模型 基于R语言 这本书中的第一个R语言程序 prior <- c(working =0.99,broken =0.01) likelihood <- rbind(working = ...

  3. R语言-简单线性回归图-方法

    目标:利用R语言统计描绘50组实验对比结果 第一步:导入.csv文件 X <- read.table("D:abc11.csv",header = TRUE, sep = & ...

  4. R语言 一元线性回归

    #一元线性回归的基本步骤#1.载入数据 给出散点图 x<-c(0.10,0.11,0.12,0.13,0.14,0.15,0.16,0.17,0.18,0.20,0.21,0.23) y< ...

  5. 大数据平台R语言web UI应用架构 设计与开发

    1. 系统拓扑图 在日常业务分析中,R是非常常用的分析工具,而当数据量较大时,用R语言需要需用更多的时间来完成训练模型,spark作为大规模数据处理框架,采用内存计算,可以短时间内完成大量的数据的处理 ...

  6. R语言中常用包(二)

    数据导入 以下R包主要用于数据导入和保存数据 feather:一种快速,轻量级的文件格式.在R和python上都可使用readr:实现表格数据的快速导入.中文介绍可参考这里readxl:读取Micro ...

  7. r语言 包说明

    [在实际工作中,每个数据科学项目各不相同,但基本都遵循一定的通用流程.具体如下]   [下面列出每个步骤最有用的一些R包] 1.数据导入以下R包主要用于数据导入和保存数据:feather:一种快速,轻 ...

  8. R语言最好的IDE——RStudio

    转自http://www.dataguru.cn/article-1602-1.html 看到很多的R语言教材,介绍的编辑器或者IDE都是很简陋的那些,就没有见到有人提到RStudio.对于不使用Em ...

  9. 如何高效地学好R语言?

    如何高效地学好R语言? 学R语言主要在于5点三阶段: 第一阶段有一点:基础的文件操作(read.*, write.*).数据结构知识,认识什么是数据框(data.frame).列表(list).矩阵( ...

随机推荐

  1. Android <Android应用开发实战> 资源类型<二>

    1.菜单资源菜单不仅可以在onCreateContextMenu或onCreateOptionsMenu方法中通过代码创建,还可以在res/menu目录中建立相应的菜单资源文件,并在上面两个方法中加载 ...

  2. BZOJ4355:Play with sequence——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4355 维护一个长度为N的序列a,现在有三种操作: 1)给出参数U,V,C,将a[U],a[U+1] ...

  3. BZOJ5335:[TJOI2018]智力竞赛——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=5335 小豆报名参加智力竞赛,他带上了n个好朋友作为亲友团一块来参加比赛. 比赛规则如下: 一共有m ...

  4. BZOJ4889 & 洛谷3759:[TJOI2017]不勤劳的图书管理员——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4889 https://www.luogu.org/problemnew/show/P3759 加里 ...

  5. GSM之AT操作命令详解20160615

    因工作接触到GSM模块,所以收集整理了一下关于操作GSM模块的AT命令的资料: 1.AT的历史与应用 1.1 AT的历史AT命令集是由拨号调制解调器(MODEM)的发明者贺氏公司(Hayes)为了控制 ...

  6. JQuery学习一

    第一个JQuery程序 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <he ...

  7. hbase的Region分裂代码分析

    region分裂有2种触发情景:1是用户手动触发(参见HRegionServer的splitRegion方法),2是后台flush线程flush完一个region的memstore时,会去检查这个re ...

  8. Moodle配置

    Moodle配置 1.   内部设置 在 Moodle 站点管理员界面中有一系列的配置页面(可以从'设置' 块中访问 '网站管理'区).这里有一些重要的系统设置,你需要进行检查. 根据提示信息并结合实 ...

  9. 我的CCF备考指南

    CCF计算机软件能力认证(简称CCF CSP认证). 认证涉及知识点: 认证内容主要覆盖大学计算机专业所学习的程序设计.数据结构.算法以及相关的数学基础知识.包括但不限于: (1)程序设计基础 逻辑与 ...

  10. homebrew常见用法

    1. 安装 Homebrew是mac下安装软件的好帮手, 是使用 ruby 写的,采用 github 来存放信息库,很方便吧. Ruby 已经内置,最好装上 Xcode,因为可能需要一些编译包.然后在 ...