豆瓣9.6分统计学神作ISL之第三章读书笔记,带你重新认识线性回归 下篇(持续更新中)


1. 原文内容概要

由于书中第三章的内容较多,故读书笔记分为【上】【下】两节分别输出

本次笔记承接之前【上】节的内容,继续为大家解析第三章——线性回归(Linear Regression)的内容。本次笔记主要包括第三章中作者对于线性回归的一些深度思考(扩展和优化),读完之后大家对于线性回归一定会有更深的认识

2. 算法知识总结

2.1 离散型自变量处理方式

离散型变量(英文一般会说成,categorical variable、qualitative variable等)是跟连续型变量(quantitative variable)相对应的概念,简单理解就是离散型变量的离散值是动态可枚举的。在处理线性回归模型中的离散型变量时,应根据离散值的枚举个数进行分类处理。通常情况下,我们将离散值个数等于2的情况视为一种特殊情况,而将离散值个数大于2的情况视为另一种情况

2.1.1 离散值只有两个的情况

这种情况最简单,直接用哑谜变量(dummy variable)。比如性别这个变量,在训练样本中的值可能显示的是“男”和“女”,在代入线性模型前,需要将其转换成哑谜变量,即“0”(表示男)和“1”(表示女)。这种将离散变量转化成二进制表示的方式,在机器学习领域叫做独热编码(one-hot encoding)。

作者举了一个信贷的实际例子,在信贷的实验数据(credit data set)中,有一个离散变量叫“是否拥有房产”,离散值为“是”和“否”,作者用这个变量来预测一个人的信用卡贷款余额(credit card balance)。作者在代入模型前将其转变为哑谜变量(“0”表示没有房产,“1”表示有房产):
image.png
将变换得到的哑谜变量代入线性模型,表示形式如下所示:
image.png
在上面的公式中, β 0 β_0 β0表示那些没有房产的人平均的贷款余额, β 0 + β 1 β_0+β_1 β0+β1表示那些有房产的人平均的贷款余额, β 1 β_1 β1表示有房产的人和没房产的人在贷款余额上的平均差异。用信贷数据拟合后,模型参数结果如下所示:
image.png
相信大家通过上一节读书笔记的学习,对这些参数的解读应该不在话下了吧~

值得注意的是,我们这里将“是否拥有房产”这个变量的值转变成“0”和“1”不是必须的,我们可以转换成任何其他的枚举值,比如“-1”代表没有房产,“1”代表有房产。只是在最终模型解释方面存在一些差异,但预测结果的数值将保持不变
image.png

就拿“-1”代表没有房产,“1”代表有房产举例,线性模型的变成了如下形式:
image.png
系数的解释也变成 β 0 β_0 β0表示整体的平均贷款余额(有房产者的平均贷款余额和无房产者的平均贷款余额之和的一半); β 1 β_1 β1表示有房产者与无房产者在贷款余额上与整体平均贷款余额的绝对差距。在这个例子中, β 0 β_0 β0最终拟合的值为 519.665 519.665 519.665(它其实是有房者的平均贷款余额 529.53 529.53 529.53与无房者的平均贷款余额 509.80 509.80 509.80两者的均值,大家自己思考下 529.53 529.53 529.53 509.80 509.80 509.80是哪里得到的), β 1 β_1 β1 9.865 9.865 9.865(它其实是 19.73 19.73 19.73的一半,大家找找哪里出现过 19.73 19.73 19.73)。

2.1.2 离散值有多个的情况

上面讲的都是离散值只有2个的情况,那如果一个离线变量的离散值个数大于2个该如何应对呢?比如信贷数据集中,有个叫**“地区”(region)的离散变量,一共有3个枚举值,即“东”(east)、“南”(south)和“西”(west)**。可能大家最直观的反应就是,用“1”、“2”、“3”分别表示“东”、“南”、“西”这样做是有问题的,因为当我们用“1”、“2”、“3”这仨有序数字来表示方位时,会给模型一个错误的指引,让模型认为“西”最大,“东”最小,“南”在中间,并且“东”比“南”就少1个单位。很显然,这看起来是很荒谬的

我们可以用多个哑谜变量来解决上面的问题。比如用两个哑谜变量,其中 x 1 x_{1} x1表示这个人是否来自南方(“1”表示来自南方,“0”表示不来自南方), x 2 x_{2} x2表示这个人是否来自西方(“1”表示来自西方,“0”表示不来自西方)。大家注意下,对于枚举值只有3个的离散型变量,我们一般只用2个哑谜变量就能完整表达了。比如上面我们用两个哑谜变量表示了是自“南”方和“西”方的信息,那来自“东”方的信息怎么表示呢?答案就是,不含有这两个哑谜变量的模型,就表示了来自“东”方的信息。我们把这个“不含有哑谜变量的模型”叫做基准模型(baseline)(The level with no dummy variable—East in this example—is known as the baseline)。值得注意的是,这个“基准”的选择是完全随机的,随你的心情,比如这个例子中,你完全可以选择“南”方作为“基准”。
image.png
image.png
image.png
具体来说, β 0 β_0 β0表示东区人的平均贷款余额, β 1 β_1 β1表示南区人与东区人在平均贷款余额上的差距, β 2 β_2 β2表示西区人与东区人在平均贷款余额上的差距。下面是拟合的具体结果:
image.png

2.2 线性回归的扩展

标准的线性模型需要满足很多“苛刻”的前提,其中最重要的是可加性和线性关系
Two of the most important assumptions state that the relationship between the predictors and response are additive and linear
1)可加性意味着,某个自变量 X j X_j Xj跟因变量 Y Y Y的关系完全不受其他变量的影响The additivity assumption means that the association between a predictor X j X_j Xj and the response Y Y Y does not depend on the values of the other predictors)。
2)线性关系意味着 Y Y Y随着某个自变量 X j X_j Xj的一个单位量增加所引起的变化量是恒定的,跟 X j X_j Xj当前值无关(_The linearity assumption states that the change in the response Y Y Y associated with a one-unit change in X j X_j Xj is constant, regardless of the value of X j X_j Xj)。

2.2.1 移除可加性假设

回到我们的广告数据集,当我们用广播市场预算(Radio budget)与电视市场预算(TV budget)来预测市场销售额(sales)时,拟合模型 Y = β ^ 0 + β ^ 1 R a d i o + β ^ 2 T V Y=\hatβ_0+\hatβ_1Radio+\hatβ_2TV Y=β^0+β^1Radio+β^2TV,从几何的角度看,这个回归模型本质上就是一个二维平面。我们将该平面与训练样本点画在一起,如下所示,可以看出,当我们同时在广播和电视市场上投放广告,用拟合模型预测的销售额总是会低估实际的销售额。这给我们什么提示呢?这证明,广播市场预算和电视市场预算存在协同作用(synergy 或者说 interaction effect)。
image.png

那如何表示变量间的协同作用呢?这个时候,交叉项(interaction term)就派上用场了
image.png
合并同类项后得,
image.png
对于系数的解释如下:现在 β 1 ′ = β 1 + β 3 X 2 β_1'=β_1+β_3X_2 β1=β1+β3X2,它是 X 2 X_2 X2的方程,现在每增加一单位的 X 1 X_1 X1所引起的 Y Y Y值的变化已不再是恒定不变的,而是会受到 X 2 X_2 X2当前值的影响。反过来也一样,每增加一单位的 X 2 X_2 X2所引起的 Y Y Y值的变化已不再是恒定不变的,而是会受到 X 1 X_1 X1当前值的影响。下面是用广告数据集拟合的结果:
image.png

这里需要注意的点是,有些情况下,自变量 X 1 X_1 X1 X 2 X_2 X2结合成交叉项 X 1 X 2 X_1X_2 X1X2后,代入模型做拟合时,会发现 X 1 X 2 X_1X_2 X1X2非常的显著,但其中一个变量(比如 X 1 X_1 X1)在一定置信度下变得不显著了。遇到这种情况,不要慌,我们不要看着 X 1 X_1 X1不显著了就把它移除模型,相反,我们还得保留它。原因是,既然 X 1 X 2 X_1X_2 X1X2是显著的,那单独的 X 1 X_1 X1或者 X 2 X_2 X2是否显著已经不那么重要了。

上面讲的是两个连续型变量(quantitative variable)之间做交叉项,这种方式在离散型变量中也是适用的。比如,用信贷数据集(credit data set)中的“收入变量” (连续型) 和 “是否为学生的变量” (离散型) 去预测贷款余额,忽略误差项的话,在不考虑交叉项的情况下模型形式为:
image.png
从几何的角度看,这个模型就是两条截距不同的平行线,具体的系数含义我就不废话了,相信经过前面的学习已经能举一反三了。平行线就意味着,一单位量的收入(income)提升,对预测最后的贷款余额的影响量是恒定的,无论这个人是不是学生。显然,这种情况是不符合现实的。(The fact that the lines are parallel means that the average effect on balance of a one-unit increase in income does not depend on whether or not the individual is a student. This represents a potentially serious limitation of the model, since in fact a change in income may have a very different effect on the credit card balance of a student versus a non-student
image.png
为了让模型更合理,我们加入了“是否为学生”和“收入”的交叉项,模型形式如下:
image.png
同理,模型系数的解释我就不多费口舌了,大家有问题的话就在下面留言吧~模型对应的几何图形如下所示,两条线的斜率出现差异了,表明“是否为学生”这个因素会影响“收入”对“贷款余额”的预测。
image.png

2.2.2 移除线性假设

要移除线性关系,最直接的做法就是在原始线性模型中加入多项式Here we present a very simple way to directly extend the linear model to accommodate non-linear relationships, using polynomial regression)。下面就是一个多项式回归的模型例子,表示每加仑燃油能够行驶的英里数( m p g mpg mpg)与马力( h o r s e p o w e r horsepower horsepower)的关系。本质上仍然是线性模型,所以依旧可以用最小二乘法去预估参数。
image.png
下面的图直观对比了简单线性回归和多项式回归的几何形状,明显看出,多项式回归具备拟合非线性关系的能力(直线变曲线)。多项式的指数(degree)越大,曲线越弯曲,拟合非线性关系的能力越强。不过,并非指数(degree)越大越好,因为考虑到解释性和过拟合的问题
image.png

2.2.3 发现潜在的问题

在用线性模型进行数据拟合时,我们通常会通过一些方法和技巧识别出影响模型精度的问题。

2.2.3.1 问题一:数据间具有非线性关系

如何判定样本数据中存在非线性的关系呢?一种常用的方法就是画残差图(residual plot)。对于一元线性回归方程来说,横坐标是残差值(residuals),纵坐标是自变量( X X X);对于多元线性回归方程来说,横坐标是残差值(residuals),纵坐标是预测值( Y ^ \hat{Y} Y^)。如果残差图呈现了某种显而易见的趋势(pattern),就说明样本中存在非线性关系,且当前的模型缺少对这种关系的拟合能力。(Residual plots are a useful graphical tool for identifying non-linearity。Ideally, the residual plot will show no discernible pattern. The presence of a pattern may indicate a problem with some aspect of the linear model

下面左边的图表示用简单线性回归拟合的模型,我们可以发现图形明显呈现出了非线性的趋势;右边的图则是在简单线性回归模型中加入了多项式,残差图中的非线性趋势被显著降低了,证明拟合的精度提高了。
image.png

2.2.3.2 问题二:误差项具有相关性

线性回归有一个重要的假设前提就是误差项是不相关的An important assumption of the linear regression model is that the error terms, ε 1 , ε 2 , . . . , ε n ε_1,ε_2,...,ε_n ε1,ε2,...,εn,are uncorrelated)。也就是是,误差项 ε 1 ε_1 ε1的大小和正负号,不影响误差项 ε 2 ε_2 ε2的表现在时序数据(time series data)中,这种问题比较突出,比如股价数据,前一天的股价对后一天的股价肯定是有影响的(Such correlations frequently occur in the context of time series data, which consists of observations for which measurements are obtained at discrete points in time)。

那如何识别出这种相关性呢?常用的办法就是将残差(residual)与时间(time)做图,观察图中数据点的分布情况In order to determine if this is the case for a given data set, we can plot the residuals from our model as a function of time)。下图分别展示了误差项相关系数为0、0.5和0.9情况下,残差的分布情况。能明显看到,残差相关性越高,分布就越“扎堆”关于如何消除误差项的相关性,书中没有提及,一般常见的解决办法有增加样本量、剔除异常值、使用广义最小二乘法等
image.png

2.2.3.3 问题三:误差项的方差并非恒定值

线性模型另外一个非常重要的假设前提就是,误差项的方差要一样。许多重要的跟线性回归相关的统计值(如标准误差、置信区间、假设检验)都会基于这个假设。(Another important assumption of the linear regression model is that the error terms have a constant variance, V a r ( ε i ) = σ 2 Var(ε_i) = σ^2 Var(εi)=σ2. The standard errors, confidence intervals, and hypothesis tests associated with the linear model rely upon this assumption

那怎么去判断这个假设条件成立与否呢?玄机还是藏在了残差图里如果图中蓝色的线呈现出漏斗型(如下面左图所示),则证明残差中存在相关性,专业术语上称为异方差性(heteroscedasticity)One can identify non-constant variances in the errors, or heteroscedasticity, from the presence of a funnel shape in the residual plot)。那我们该怎么去解决这个异方差性呢?
1)一种比较简单的办法就是对因变量 Y Y Y l o g log log或者开根号,变成 l o g ( Y ) log(Y) log(Y)或者 Y \sqrt{Y} Y 。下面右图就是将因变量转换成了 l o g ( Y ) log(Y) log(Y),然后残差图的形状就变成了我们期望得到的效果,有效消除了异方差性。
2)还有一种比较“高级”的解决办法,就是用加权最小二乘法(Weighted Least Squares,WLS),但这有一个前提,就是我们得事先知道每个因变量值的方差,然后将权值与误差方差的倒数成正比。

image.png

2.2.3.4 问题四:样本数据具有异常值

虽然书中对异常值(outlier)的定义与我们日常描述的有所不同,但深入思考后,其本质含义是相同的书中定义是说“真实 Y Y Y值与预测出来的 Y ^ \hat{Y} Y^值有很大差异的样本点叫做异常值”(An outlier is a point for which y i y_i yi is far from the value predicted by the model)。值得注意的是,这种异常值或许对线性模型的拟合过程表面上造成不了太大的影响(也就是说移除某些异常值从拟合的图形上来看你用肉眼似乎看不出太明显的差别,如下图中红色的实线与蓝色的虚线,红色代表包含了异常值,蓝色代表去除了异常值),但对 R S E RSE RSE的影响很大,又由于 R S E RSE RSE是计算其他统计量(如置信区间、标准误差等)的基础,因此对于整个模型的有效性影响很大。(However, even if an outlier does not have much effect on the least squares fit, it can cause other problems. For instance, in this example, the R S E RSE RSE is 1.09 when the outlier is included in the regression, but it is only 0.77 when the outlier is removed. Since the R S E RSE RSE is used to compute all confidence intervals and p-values, such a dramatic increase caused by a single data point can have implications for the interpretation of the fit. Similarly, inclusion of the outlier causes the R 2 R^2 R2 to decline from 0.892 to 0.805
image.png

那如何去识别样本数据中有没有异常值呢?万能的残差图又排上了用场(Residual plots can be used to identify outliers)。我们会将每个残差分别去除以它的标准误差,得到学生化残差(studentized residuals),当某个样本点学生化残差大于3时,我们就可以怀疑这个点属于异常值了,如下图标红的数据点。
image.png

2.2.3.5 问题五:样本数据具有高杠杆值

高杠杆值(high-leverage point)的定义,跟异常值(outlier)的容易混淆,两者的侧重点不同。简单来说,高杠杆值指的是那些具有异常 X X X值的样本点,而异常值是指具有异常 Y Y Y值的样本点We just saw that outliers are observations for which the response y i y_i yi_is unusual given the predictor x i x_i xi. In contrast, observations with high leverage have an unusual value for x i x_i xi)。某个样本点如果具有高杠杆值,说明它的存在与否对于线性模型拟合结果影响很大(相较于异常值点),通俗来讲,就是能肉眼看出拟合出来的模型在图像上的差异Removing the high leverage observation has a much more substantial impact on the least squares line than removing the outlier. In fact, high leverage observations tend to have a sizable impact on the estimated regression line)。如下图,红圈41就是一个高杠杆值点,红色线是包含了红圈41的拟合线,蓝色虚线是剔除了红圈41的拟合线,能很明显地看出差别(The red line is the fit to all the data, and the blue line is the fit with observation 41 removed)。这里要注意下,高杠杆值点与异常值点并不是互斥的,一个样本点可以既是高杠杆值点,也可以说异常值点。
image.png
那如何去识别高杠杆值呢?按照自变量的个数,这里分三种情况来讨论:
1)对于自变量个数为一个的情况,可以直接按照箱型图的逻辑识别出高杠杆值
image.png
2)对于自变量个数为两个的情况,可以直接画出两个变量的散点图识别出高杠杆值
image.png
3)对于自变量个数大于两个的情况,我们就只能借助一个定量公式来计算每个样本点的杠杆值,杠杆值都会在 1 / n 1/n 1/n 1 1 1之间。如果这个值超过了 ( p + 1 ) / n (p+1)/n (p+1)/n(其中 p p p为变量数, n n n为样本数),我们就高度怀疑这个样本点是高杠杆值点。计算公式书中只给出了一元线性回归的公式,没有写出多远线性回归的计算公式,但作者说扩展起来很简单。
image.png

2.2.3.6 问题六:自变量之间存在共线性现象

共线性是指两个或多个自变量之间存在密切关系的情况Collinearity refers to the situation in which two or more predictor variables are closely related to one another)。下面的左图表示变量间没有共线性,而右图表示有共线性
image.png

共线性对模型拟合的负面影响显而易见,因为我们压根分不清到底是谁最终在影响因变量The presence of collinearity can pose problems in the regression context, since it can be difficult to separate out the individual effects of collinear variables on the response)。下面是两组具体案例,在模型1(Model 1)中,因为“年龄”(age)和“最大借款额度”(limit)没有共线性,所以“最大借款额度”表现出了很强的显著性;在模型2(Model 2)中,由于“信用评级”(rating)与“最大借款额度”(limit)有强共线性,所以“最大借款额度”变得不再显著。这明显是不合理的。
image.png

那如何去识别这种共线性现象呢?一般有两种方法
1)比较简单直接的办法就是看自变量之间的相关性系数矩阵A simple way to detect collinearity is to look at the correlation matrix of the predictors)。该方法虽然简单直接,但存在明显的局限性:相关系数矩阵只能单独观察两个变量之间的相关性,无法同时识别三个及以上变量的相关性。因此,在模型中存在三个或更多变量之间高度相关,但两两变量之间不是高度相关的情况下,该方法无法有效应对It is possible for collinearity to exist between three or more variables even if no pair of variables has a particularly high correlation)。我们将这种情况称为多重共线性(multicollinearity)。
2)既然相关性矩阵面对多重共线性无能为力,那么只能请出更“高级”的方法了,统计学家们使用“方差膨胀因子”(variance inflation factor,VIF)来解决这个问题 Instead of inspecting the correlation matrix, a better way to assess multicollinearity is to compute the variance inflation factor (VIF))。这个“方差膨胀因子”计算逻辑可以简单理解为:

  • 对于模型中的每个预测变量 X i X_i Xi,进行线性回归分析,即把 X i X_i Xi作为因变量,而将其他预测变量作为自变量。
  • 计算上面回归分析的可决系数 R i 2 R_i² Ri2,它表示 X i X_i Xi作为因变量时,其他预测变量对它的解释程度。
  • 通过公式 V I F = 1 / ( 1 − R i 2 ) VIF=1/(1-R_i²) VIF=1/1Ri2计算每个预测变量的方差膨胀因子。

“方差膨胀因子” 最小为1,表示模型中完全没有共线性的问题The smallest possible value for VIF is 1, which indicates the complete absence of collinearity),但实际情况中,变量间总会存在或多或少的共线性。因此,一般情况下,“方差膨胀因子”只要是超过5或者10,就证明存在很明显的共线性问题令人As a rule of thumb, a VIF value that exceeds 5 or 10 indicates a problematic amount of collinearity)。注意,“方差膨胀因子”是针对每一个自变量的值,也就是说,每一个自变量都会有一个“方差膨胀因子”的值

*发现共线性问题后,我们该如何去解决呢?一般有两种**思路:
1)去掉多余的变量。需要考虑精度的降幅,从而绝对舍弃哪个。
2)把具有共线性的变量合成一个变量。需要考虑能否合起来,以及合起来的解释性。

引用

image.png

  • 37
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值