在此系列之前的文章中,已经讨论了关于统计学习的关键概念和假设验证相关内容。在本篇文章中,将进入线性回归模型的讨论。
首先回顾一下之前统计学习中比较重要的几个关键点:
#
自变量和因变量
在统计学习的背景下,有两种类型的数据:
- 自变量:可以直接控制的数据。
- 因变量:无法直接控制的数据。
无法控制的数据,即因变量,需要进行预测或估计。
#
模型
模型本质上就是一个转换引擎,主要的作用就是找到自变量和因变量之间的关系函数。
#
参数
参数是添加到模型中用于输出预测的要素。
基本概念
线性回归模型提供了一个监督学习的简单方法,它们简单而有效。
但是,到底什么是线性?
线性的意思是:数据点排成一条直线(或接近直线),或者沿直线延长。线性意味着,因变量和自变量之间的关系可以用直线表示。
回顾高中时的数学课程,一条直线的方程式是什么呢?
y = mx + c
线性回归只不过是这个简单方程的表现。
上述公式中:
- y 是因变量,是需要估计或者预测的变量
- x 是自变量,是可控的变量,也是输入变量
- m 是斜率,体现了直线的倾斜程度,一般使用符号β表示
- c是截距,是当x为0时,用来确定y值的一个常数
英国著名统计学家George Box曾说:
“All models are wrong; some are useful.”
所有模型都是错的,但其中有一些是有用的。
线性回归模型并不完美,它试图用直线来粗略表示自变量和因变量之间的关系。而粗略总会导致误差。一些误差是可以避免的,一些误差则是问题本身所固有的,无法被消除,因而称之为不可约误差(irreducible error),即在实际关系中无法从根本上被任何模型消除的的噪声项。
上述线方程因此可以重写为:
- β0和β1是代表截距和斜率的两个未知常数,它们是参数。
- ε是误差项。
简述公式
下面通过一个例子来说明线性回归模型的术语和工作原理。
费尔南多是一名数据科学家,他想要买一辆车。他想先预估一下最终需要为汽车支付多少钱。正好有一个朋友在一家汽车经销商上班,费尔南多向这位朋友咨询了各种汽车的价格以及特点,他的朋友向他提供了如下的信息:
- make: 车辆品牌
- fuelType:所使用的燃料类型
- nDoor:车门数量
- engineSize:发动机大小(马力)
- price:价格
首先,费尔南多想看看是否可以根据发动机大小来预测汽车价格。第一组分析旨在回答以下问题:
- 汽车价格与发动机大小相关吗?
- 这种关系有多强?
- 关系是线性的吗?
- 可以根据发动机大小来预测/估算汽车价格吗?
费尔南多进行了相关分析。相关性通过相关系数(correlation coefficient)来衡量两个变量之间从相关程度,值在0和1之间。
如果相关系数是一个较大的数(>0.7),则意味着随着一个变量的增加,另一个变量也会增加。也就是说,相关系数体现了变量间“同向变化”情况。
费尔南多进行了相关性的分析,绘制出了价格与发动机大小之间的关系。
他将数据集分为训练和测试两部分,其中75%的数据用来训练,剩下的用来测试来。
他使用统计软件包构建了一个线性回归模型,模型又得出一个线性方程,将汽车价格表示为发动机大小的函数。
于是就可以回答费尔南多的几个问题了:
- 汽车价格与发动机大小有关吗?— 是的,它们之间是有关系的。
- 这种关系有多强?— 它们间的相关系数为0.872→是一种很强的关系。
- 关系是线性的吗?— 可以拟合为一条直线→基本可以用发动机大小预测出价格。
- 我们可以根据发动机大小来预测/估算汽车价格吗?
— 可以。
对于价格和发动机大小的关系显而易见,其实这个模型的最终表达式也很简单,如下:
价格 = β0 + β1 × 发动机大小
模型构建与解释
模型
在前面的内容中,将原始数据集分为了训练数据集和测试数据集,训练数据被用于学习数据和构建模型,测试集被用于评估模型的性能。
他将数据集分为训练和测试两部分,其中75%的数据用来训练,剩下的用来测试来。
他使用统计软件包构建了一个线性回归模型,模型又得出一个线性方程,将汽车价格表示为发动机大小的函数。
模型估算出的参数值为:
- β0:-6870.1
- β1:156.9
从而得到线性方程为:
价格 = -6870.1 + 156.9 × 发动机大小
解释
该模型最终提供了根据不同发动机大小来预测汽车平均价格的方程式。这个方程式显示:
发动机的大小增加一个单位,
使汽车的平均价格提高156.9个单位。
评估
模型创建好了,但是模型的稳健性还需要评估。我们如何确定该模型能够给出令人满意的价格预测?这项评估分两部分完成。首先,测试模型的稳健性;其次,评估模型的准确性。
费尔南多首先在训练数据上评估模型,他得到了如下的统计数据:
图上有多个数据,先来关注红框标注出的关键数据。在上一篇文章中讨论了假设检验,这里就使用假设检验来评估模型的稳健性。
首先来定义H0和Ha需要被首先定义,如下:
- H0(零假设):x 和 y 之间没有任何关系,即发动机大小和车辆价格没有关系;
- Ha(备择假设):x 和 y 之间存在某种关系,即发动机大小和车辆价格之间存在关系。
β1:β1 的值决定了价格和发动机大小之间的关系。如果 β1 = 0,则它们之间没有关系,否则就存在关系。而从上述参数中可知,β1 = 156.933,说明到价格和发动机大小之间存在某种关系。
t-stat:t-stat值是系数估计值(β1)与零点间的标准差。其值越远离零,价格与发动机大小之间的关系越强,从上述参数中可以看到t-stat = 21.09。
p-value:p值是一个概率值。它表示在零假设为真的情况下得到给定t-statistics的机会。如果p值小,例如<0.0001,这意味着两者之间纯属偶然而没有实际关联的概率非常低。在这种情况下,p值很小则说明价格和发动机大小之间的关系并非偶然。
通过这些指标,我们可以放心的拒绝零假设,并且接受备择假设。车辆价格和发动机大小之间存在着稳定的关系。
相关性已经确定,但是模型的准确性又如何呢?为了能够感受模型的准确度,一个称为R-squared(或决定系数)的衡量指标非常重要。
R-squared:为了理解这个衡量指标,首先来分别说明其组成部分。
- 误差(e)是实际y与预测y之间的差异。预测的y表示为ŷ。每次观察都会评估这个误差,这种误差也称为残差(residual)。
- 然后将所有残差值平方并相加,称为残差平方和(Residual Sum of Squares,RSS)。RSS越低越好。
- 为了计算出R-squared方程的结果,首先要计算实际目标的平均值,即估计汽车价格的平均值。然后计算平均值和实际值之间的差异。再将这些差值平方并相加,得出总平方和(total sum of squares,TSS)。
- R-squared(即决定系数)由 1- RSS / TSS 计算得出。该衡量指标解释了模型预测值与实际值的平均值之间的方差分数(fraction of the variance)。该值介于0和1之间,它越高,模型对方差的解释就越好。
用一个例子来说明:
在上面的例子中,RSS 是根据三辆车的预测价格计算出来的,值是41450201.63。汽车实际价格的平均值是11,021。TSS 计算得出44,444,546。R-squared为6.737%。对于这三个具体数据点,该模型只能解释6.73%的变化,还不够好!!
但是,对于费尔南多的模型来说,其训练数据集的R-squared为0.7503,即75.03%。这意味着该模型可以解释超过75%的变化。
结语
费尔南多现在有一个很好的模型。它在训练数据上表现令人满意。但是,有25%的数据没有得到解释,还有改进的空间。为价格预测增加更多的自变量如何?在预测因变量时,如果添加多个自变量(即变量多于一个),则需要创建多元回归模型。
本系列的下篇文章将详解多元回归模型,敬请期待。
翻译:TalkingData
作者:Pradeep Menon