1. 原文内容概要
1)首先阐释了线性回归模型(linear regression)的核心概念,包括线性关系的假设(assumption)、参数估计(coefficient estimate)以及最小二乘法(least squares)的应用,并详细讨论了如何评估系数和模型的有效性和精度;
2)然后,作者还深入探讨了线性回归在实际问题中的应用,并介绍了如何处理复杂的数据问题,如分类变量(Qualitative Predictor)和异常值(outlier);
2. 算法知识总结
作者上来就用一句话阐述了线性回归的江湖地位:“Moreover, it serves as a good jumping-off point for newer approaches: as we will see in later chapters, many fancy statistical learning approaches can be seen as generalizations or extensions of linear regression.”。简单翻译过来就是:线性回归是许多复杂统计学习方法的基础。在后续章节中,我们会深入探讨许多基于线性回归泛化或扩展的方法。
基于书中内置的广告数据(Advertising data),作者在随后就向我们抛来一堆非常实际的营销问题:
广告预算和销售额之间是否存在关系?(Is there a relationship between advertising budget and sales?) 广告预算和销售额之间的关系有多强?(How strong is the relationship between advertising budget and sales?) 哪些媒体与销售额有关?(Which media are associated with sales?) 每种媒体与销售额之间的关联程度有多大?(How large is the association between each medium and sales?) 我们能多么准确地预测未来的销售额?(How accurately can we predict future sales?) 这种关系是线性的吗?(Is the relationship linear?) 广告媒体之间是否存在协同效应?(Is there synergy among the advertising media?)
深入剖析这些问题,你会发现它们是有逻辑关系的,并且层层递进。相应的答案将会在下面的讲解中,逐渐解开迷雾。
2.1 一元线性回归
2.1.1 一般表达式
一元线性回归(simple linear regression)的一般表现形式如下所示:
这里插一句题外话,大家知道为啥这里要写“”吗?原因就藏在第二章的读书笔记里,大家可以思考下。说回正题,上面的公式向我们透露出了如下信息:
1)一元回归方程的意思就是自变量只有一个(英文对自变量有很多叫法,如:input variable、predictor、independent variable、feature等);
2)我们的目的就是要找到一对儿和的数值,使得当代入自变量的值后得到的预测值与的差距要足够的小。从几何的角度来讲,就是使得最终得到的线性方程(也就是那条直线),能尽可能的靠近所有的样本点;
3)这个方程的斜率(也就是)量化了因变量()与自变量()的关系。
2.1.2 方程参数的拟合
那么随之而来的问题就是,该怎么去找到那个理想的和的数值呢?目前最常用的方法就是最小二乘法(least squares)。(_ By far the most common approach involves minimizing the least squares criterion_)
下面这张图很好地诠释了最小二乘法的思想。图中电视的广告预算(TV advertising budget)代表,销售金额代表,红点代表样本点,蓝线代表通过最小二乘法拟合出来的线性方程(即最佳的和的数值组合,我们用和来表示),而红点与蓝线之间的灰色直线段则代表通过蓝线得到的预测值与样本真实值的差距。最小二乘法的核心思想就是寻找一条最佳的蓝线,让这些灰色直线段的平方和最小。
从数学的角度看,最小二乘法就是在寻找和的估计值,使得残差平方和(,residual sum of squares)变得最小。公式如下,其中、。或者等同于
这里有个小知识点需要提一下:上面的公式中,作者用的是和,而不是和,这是有寓意的。原因是现实问题中,我们不可能得到全量的样本数据(population data),只能得到有限的样本数据(sample data),我们利用最小二乘法基于有限的样本数据只能得到近似的和的值,所以写成了和。理论上和的最优真实值我们是不可能知道的,因为我们不可能得到全量的样本数据。这点在后面的小节中还会提到。
最小二乘法拟合参数和的细节书中没有展开,只给了最后的计算结论,即我们可以通过下面的这两个公式直接计算和的值。其中,
从上述公式中可以看出, 可以近似理解为与的相关系数,可以近似理解为“误差补偿”的含义(这里大家可以细品下)。
2.1.3 参数的精度评估
在第二章中我们有讲到,统计分析或者机器学习模型的数学公式最一般的表达式如下所示:如果我们确定用线性模型去拟合数据的话,则上面的一般表达式就演变成了下面的公式:
上面这个方程我们就叫做总体回归线(population regression line),是一条理论上存在但我们始终无法精确获得的方程,原因有二:
1)因为无法获得全量样本,所以我们无法精确拟合和的值;
2)代表与独立的误差变量,涵盖了所有因我们考虑不周而导致的偏差量。(The error term is a catch-all for what we miss with this simple model: the true relationship is probably not linear, there may be other variables that cause variation in Y , and there may be measurement error. We typically assume that the error term is independent of X)
下面这张图展示了总体回归线(population regression line)与最小二乘线(least squares line)的关系,其中红色代表总体回归线,蓝色代表最小二乘线。读到这里,大家可能会疑问:不是说总体回归线是无法得知的吗?怎么还能被画出来?这是因为图中的样本数据是作者自己模拟生成的,所以总体回归线就是已知的。换句话说,作者自己先定义了总体回归方程(即和的值,以及误差项的概率分布),再由这个方程生成了有限的样本数据,再由这些有限的样本拟合得到最小二乘线,我们在现实世界中能得到的就是最小二乘线。
下图中左边的小图对比了总体回归线和通过有限样本拟合的最小二乘线,可以看出两者的差距并不大;而右边的小图则展示了基于总体回归线生成的不同样本集(比如随机生成10个样本集,由于的取值和误差项随机性,这10个样本集里的数据肯定不会一样)拟合得到的不同最小二乘线(对应10条不同的拟合方程)的变化幅度,可以看出变化的幅度并不大,总是围绕着总体回归线略微摆动。因此,我们可以推断,最小二乘线能够很好地拟合总体回归线,正如样本均值(sample mean)能够无偏估计总体均值(population mean)一样。
讲到这里,就要讲讲什么叫无偏估计(unbias estimate),什么叫做有偏估计了(bias estimate)?
1)无偏估计:估计量的数学期望等于被估计参数的真实值,这意味着在多次重复抽样的情况下,无偏估计的平均值将接近被估计参数的真实值。举个例子,我们用科学抽样得到的样本均值去估计总体均值,这种就算是无偏估计。这是因为单次的样本均值可能高于或者低于总体均值,但只要从总体样本中抽取足够多次的子样本集,对应计算足够多次的样本均值,由于这些样本均值存在部分高于总体均值,部分低于总体均值的情况,那么我们有理由相信,将这些样本均值进行再次取平均,结果或许真就等于总体均值了。
2)有偏估计:是指由样本值求得的估计值与待估参数的真值之间存在系统误差,其期望值不等于待估参数的真实值。换句话说,有偏估计的平均值不能准确反映参数的真实值,存在一种倾向性偏差。举个例子,我们用不科学抽样得到的样本均值去估计总体均值,这种就算是有偏估计。比如在预测全班的总体平均身高时,我们故意只在最后两排的同学中抽选样本进行身高平均值的计算,可想而知,这种方式不管我们抽样多少次,计算多少次的身高平均值,始终比全班的总体平均身高要高,这种就叫倾向性偏差,得到的样本平均身高就叫有偏估计。
接下来,我们需要深入思考的是,在实际情况中,我们往往只有一个训练集。那么,如何评估只用这一个训练集拟合出的系数的准确性?就好比我们已经知道了很多个样本均值的平均值与总体均值非常接近,但如何量化单独某一个样本均值与总体均值的误差呢?(How accurate is the sample mean as an estimate of ? We have established that the average of 's over many data sets will be very close to, but that a single estimate may be a substantial underestimate or overestimate of__. How far off will that single estimate of be?)
要回答上面的问题,我们就得引出标准误差(standard error)的概念了,样本均值 的标准误差计算公式如下所示:其中代表了变量的方差,代表样本数量。简单来说,这里的标准误差表示我们这次预测的 与真实的的偏差值。(Roughly speaking, the standard error tells us the average amount that this estimate __differs from the actual value of _)
我们将标准误差的概念引入一元线性回归方程的参数预估上(不必知道具体的推导过程):
其中,,也就是等于误差项的方差。上面的公式如果要完全成立,需要满足一个前提,就是误差项在每一个样本点上是互不相关的,并且方差要相同(For these formulas to be strictly valid, we need to assume that the errors for each observation have common variance and are uncorrelated)。这个条件着实比较苛刻,幸运的是,即使不满足这个的前提,我们依然能用上面的公式去估计和的标准误差。仔细品味上面的公式,我们可以大致得出两个结论:
1)样本()之间越分散,的值就越大,最终和的标准误差也就更小;
2)样本量越大,最终的标准误差也就更小。通常,是未知的,但我们可以从有限的训练样本里得到它的近似值,即残差标准误差(residual standard error,简称)(In general, is not known, but can be estimated from the data.This estimate of is known as the residual standard error)。
残差标准误差可由得到:
标准误差(用残差标准误差代替)得到之后,我们就能计算非常重要的置信区间了(confidence interval)!!(Standard errors can be used to compute confidence intervals)在的分布接近正态分布时(通常情况下我们都这么假设),上面的公式就表示了关于的95%置信区间,其含义我们可以直接理解为“大约有95%的概率,这个区间包含有的真实值“(虽然肯定会被说不严谨,但在实际运用中,基本都是这么用的)(A 95% confidence interval is defined as a range of values such that with 95% probability, the range will contain the true unknown value of the parameter. The range is defined in terms of lower and upper limits computed from the sample of data. A 95% confidence interval has the following property: if we take repeated samples and construct the confidence interval for each sample, 95% of the intervals will contain the true unknown value of the parameter)
除了计算置信区间,标准误差还能被用来做系数的假设检验(hypothesis test)。(Standard errors can also be used to perform hypothesis tests on the coefficients)
假设检验一般分为原始假设(null hypothesis)和备择假设(alternative hypothesis)。比如,我们要对中的进行假设检验,则原始假设和备择假设如下所示::与没有任何关系(即):与有关系(即) 假设检验的思路如下:
1)我们通过有限的训练样本得到的估计值;
2)计算的标准误差(用残差标准误差代替);
3)用下面的公式计算相应的统计量(t-statistics),这个公式表示了与的差值有多少倍标准误差。这个统计量的值越大,表示离越远,又因为是对的估计(说白了,就是把看做),所以就越不可能为;4)那统计量要大到何种程度才能让我们确定呢?这就要说到统计量的概率分布了。
如果与没有任何关系(即),那么我们认为统计量服从自由度为的分布;(If there really is no relationship between X and Y , then we expect that t-statistics will have a t-distribution with __degrees of freedom) 当样本数量超过30个后,这个分布就非常接近标准的正态分布了(所以你知道为啥在统计学领域,经常会看到“样本数量至少30个”的原因了吧);(The t-distribution has a bell shape and for values of n greater than approximately 30 it is quite similar to the standard normal distribution) 当数据近似呈现正态分布时,我们可以轻松地计算在假设的条件下,观测到数值大于或等于的概率,我们将这个概率称为p-value;(Consequently, it is a simple matter to compute the probability of observing any number equal to or larger in absolute value, assuming . We call this probability the p-value)
5)当这个 p-value 小于某个阈值(通常会选择0.01或者0.05)的时候,我们就能确定与有关系(即),从而拒绝假设。大家可以这么去理解 p-value 的含义:它是在假设与没有任何关系的前提下(即默认成立的情况下),你能观察到你刚计算出的这个统计量(比如算出等于3.456)的概率,就是 p-value。在置信度选择95%的情况下,这个 p-value 只要小于0.05,我们就认为你“不可能”在成立的情况下观察到了统计量等于3.456,因此我们就可以拒绝,认为与有关系。(p-value indicates that it is unlikely to observe such a substantial association between the predictor and the response due to chance, in the absence of any real association between the predictor and the response. Hence, if we see a small p-value, then we can infer that there is an association between the predictor and the response. We reject the null hypothesis—that is, we declare a relationship to exist between X and Y —if the p-value is small enough. Typical p-value cutoffs for rejecting the null hypothesis are 5% or 1%)
下面是给大家的一个具体例子,拟合的是这个一元线性方程:,其中系数,系数,对应的标准误差等于,对应的标准误差等于;接着把系数值和其对应的标准误差相除,即可得到对应系数的统计量;再根据标准正态分布的概率函数计算对应的p-value(这个过程可以不用掌握,现在的软件都能算)。我们可以看到,每个系数的p-value都是小于0.0001的,所以我们有充分的理由相信,这两个系数存在的必要性。
2.1.4 模型的精度评估
上面我们讲到了如何评估系数预测的精度,接下来就该轮到整个线性模型的精度评估了。一般来说,评价回归模型的精度有两种度量,一个是前面提到过的残差标准差(residual standard error),另一个就是统计量。(The quality of a linear regression fit is typically assessed,using two related quantities: the residual standard error (RSE) and the R2 statistic)
1)前面有提到,其实是对总体回归线(population regression line)中独立误差项的估计,表示的是拟合的模型相对于总体回归线的平均偏移量。这个值越小,表示拟合得越好。(The RSE is an estimate of the standard deviation of ε. Roughly speaking, it is the average amount that the response will deviate from the true regression line. The RSE is considered a measure of the lack of fit of the model to the data)2)有个缺点,就是这个值的绝对大小受到目标变量的单元的影响,所以对于不同场景下的线性回归模型,计算出来的千差万别,不会落到一个固定的域值区间,无法形成一个统一的界定模型好坏的阈值。为了解决上述问题,统计学家们提出了统计量,它是一个取值永远介于到的数,表示拟合的模型可以解释目标变量的内在变化规律(variability inherent in the response)的比例。这个值越大,表示模型拟合的精度越高。下面的公式中,。(TSS measures the total variance in the response Y , and can be thought of as the amount of variability inherent in the response before the regression is performed. In contrast, RSS measures the amount of variability that is left unexplained after performing the regression. Hence, TSS − RSS measures the amount of variability in the response that is explained (or removed) by performing the regression, and R2 measures the proportion of variability in Y that can be explained using X)
2.2 多元线性回归
2.2.1 一般表达式
上面讲的是只有一个变量(电视广告预算)的回归方程,如果有多个变量该如何应对呢?比如除了电视这个媒介外,我们还有广播和报纸,如果我们在这三个媒介上同时投放广告,那对于最终销售额的影响该怎么评估呢?
一个直接的策略是对每个变量(即每个媒介的广告预算)分别与目标变量(即销售额)建立一元线性回归模型。然而,这种方法存在两个主要问题:
1)当我们在三个媒介上都进行投资时,由于存在三个不同的线性模型,我们无法得出一个唯一且准确的预测值;
2)每个单独的一元线性模型忽略了其他两个媒介的潜在影响。如果各媒介的投资额之间存在相关性,那么仅使用单个模型进行预测可能会导致较大的误差。
这个时候,多元线性回归就有用武之地了,其一般函数形式如下所示:
用广告数据集的变量对模型进行具象化后,可表示为:
2.2.2 方程参数的拟合
表达式出来了,接下来的问题就是如何去估计这些参数()。在多元线性回归中,参数的预估方法跟一元线性回归一样,都是采用最小二乘法,让尽可能小。
2.2.3 一些重要的问题
当我们在做多元回归模型的时候,通常会有以下4个问题:
1)至少有一个自变量_ _在预测因变量方面有用吗?(Is at least one of the predictors useful in predicting the response?)
2)所有的自变量都能解释吗,还是只有一部分自变量是有用的?(Do all the predictors help to explain , or is only a subset of the predictors useful?)
3)模型拟合的精度如何?(How well does the model fit the data?)
4)在测试样本上得到的预测值精度如何?(Given a set of predictor values, what response value should we predict, and how accurate is our prediction?)
接下来我们会一一解答上面的问题。
1)问题一:至少有一个自变量_ 在预测因变量方面有用吗?
(Is at least one of the predictors useful in predicting the response?)
跟一元线性回归模型一样,我们需要做假设检验,检测内容如下:
:所有的与都没有任何关系(即)
:至少有一个与有关系(即至少一个)
与一元线性回归不同,多元线性回归采用统计量进行假设检验(This hypothesis test is performed by computing the F-statistic)。下面的公式中,是样本量,是自变量的个数,分子可以看成自变量对因变量的解释程度,分母可以看做未被自变量解释的因变量的内在变化程度。在线性假设的前提下,分母的期望就等于误差项的方差,而如果的假设成立,则分子的期望也会等于误差项的方差,这个时候统计量的值就恰好等于了。因此,当统计量的值越接近于,则说明自变量们与因变量的关系越弱,离越远,则越有理由相信至少有一个自变量与因变量相关。那到底统计量要多大我们才能很自信地认为是成立的呢?还记得在一元线性模型中我们提到的p-value吗?同样的道理,在这里我们也要计算统计量的p-value。
当样本量足够大时,我们认为统计量服从分布(F-distribution); 拟合多元线性模型,得到对应的和,计算统计量的具体数值; 根据分布的概率函数,计算出观察到大于等于当前这个值的概率,即得到了p-value; 根据p-value是否小于相应置信度对应的拒绝阈值。
上面讲的都是对全部自变量做的假设检验,如果我们只想对其中一部分自变量做假设检验也是可以的。比如一共有个变量,我们假设末尾的个变量的系数均为,则原始假设和备择假设如下所示:::末尾的个变量中即至少一个然后将待检验的这个变量进行多元线性回归的拟合,得到对应的;再结合前面用全量变量拟合模型得到的,计算这次的统计量;最后根据这次统计量对应的p-value来判断是否拒绝。大家可以慢慢品味上面的公式,实际上它衡量的是,这末尾的个变量对整个线性模型的影响程度。因为表示用全部的变量拟合后,模型仍然剩下的残差,而表示只用一部分变量(比如去掉末尾的个变量)拟合后,模型附带的残差,所以两者的差值就表示末尾的个变量如果加入模型后对于整个模型拟合度的提升程度。
下面的表格图展示了用广告数据集回归多元线性模型的结果:
有个特别的点要注意,就是这里的每个统计量的平方,实际上就可以理解成将对应的那个变量剔除后,留下剩余所有变量所做的检验。也就是说,每个统计量表示对应变量对整个模型的影响显著度。(It turns out that each of these is exactly equivalent to the F-test that omits that single variable from the model, leaving all the others in. So it reports the partial effect of adding that variable to the model)
看到这里,可能大家又有些懵了。既然统计量有显示某个自变量是否与因变量显著相关的功能,那为何还要用统计量来判定至少有一个自变量与因变量有显著关系呢?原因在于:
1)统计量是根据整个模型来计算的,而统计量是针对每个系数来计算的;2)在自变量的数量()变得很大时,我们很有可能会看到即使这个自变量很显然跟因变量毫无关系,但其对应的统计量很小(小于或者)的情况,这就会给我们的判断造成错误引导(具体原因我们在本书的第13章会讲到)。而统计量则不会被自变量的个数所影响。(Given these individual p-values for each variable, why do we need to look at the overall F-statistic? After all, it seems likely that if any one of the p-values for the individual variables is very small, then at least one of the predictors is related to the response. However, this logic is flawed, especially when the number of predictors p is large)
2)问题二:所有的自变量都能解释吗,还是只有一部分自变量是有用的?
(Do all the predictors help to explain , or is only a subset of the predictors useful?)
在问题一里,我们用检验知道了至少有一个自变量跟因变量有显著关系,那到底是哪些变量呢?如果我们单纯看每个变量对应的统计量,在自变量数量较多的情况下,这样的判断逻辑是有误差的,原因上面有提到。那么这时候,就要引出一个新的概念,变量选择(variable selection)。(The task of determining which predictors are associated with the response, in order to fit a single model involving only those predictors, is referred to as variable selection)
假设待筛选的变量个数共有个,最简单粗暴但最精准的办法,就是,我们穷举所有可能的变量组合。通过排列组合的知识,我们知道一共有个模型需要拟合。如果有个变量,则需要拟合个模型,的值再大点,模型的数量就不敢想了。所以,得用一些简化的方法,一般会有三种筛选变量的方法:
1)逐步回归法向前选择(Forward Selection):它的基本思想是从空模型开始,每次添加一个与目标变量最相关的特征,直到达到预设的特征数量或者特征选择停止准则。在前向选择过程中,特征被按照其对模型的贡献程度进行排序,贡献度最高的特征首先被选中。通过逐步添加特征,前向选择旨在找到一个最佳的特征子集,该子集能够最大化模型的预测性能。这种方法的好处是计算效率较高,因为它每次只考虑一个特征。然而,前向选择可能不是全局最优的,因为它只考虑了局部最优的特征组合。
2)逐步回归法向后消除(Backward Selection):与前向选择相反,后向选择从包含所有特征的模型开始,然后逐个删除最不相关的特征,直到达到预设的特征数量或者特征选择停止准则。在后向选择过程中,特征被按照其对模型的贡献程度进行排序,贡献度最低的特征首先被删除。通过逐步删除特征,后向选择旨在找到一个最小的特征子集,该子集能够保持模型的可解释性和预测性能。后向选择的好处是它可以从所有特征开始,考虑到所有可能的特征组合,从而有可能找到全局最优的特征子集。然而,随着特征数量的减少,计算复杂度会逐渐增加。
3)逐步回归法混合选择(Mixed Selection):混合选择结合了前向选择和后向选择的优点。它首先使用前向选择方法将特征添加到模型中,然后使用后向选择方法从模型中删除特征。通过同时考虑特征的添加和删除,混合选择旨在找到一个既高效又全面的特征子集。这种方法的好处是它可以避免前向选择和后向选择的局限性,同时保持计算效率。然而,混合选择需要更多的计算资源和时间,因为它同时考虑了特征的添加和删除。
3)问题三:模型拟合的精度如何?
(How well does the model fit the data?)
跟一元线性回归模型类似,我们常用和来评估模型拟合的精度。但会有一个缺陷,就是它会随着加入模型的自变量个数增加而单调下降,即使新加入的自变量跟因变量没有显著关系(It turns out that will always increase when more variables are added to the model, even if those vari- ables are only weakly associated with the response)。为什么呢?因为自变量的个数越多,训练样本上的总会减小(This is due to the fact that adding another variable always results in a decrease in the residual sum of squares on the training data (though not necessarily the testing data))。
为了避免这个弱点,统计学家们提出了调整**(Adjusted **)的概念。它通过引入自由度来校正原本的。自由度通常与模型中的参数数量相关,因此,当模型中包含许多不必要的参数时,自由度会增加,随之会对原始的造成负面影响。调整的目的是惩罚过拟合模型,即包含过多参数但并未显著提高模型性能的模型。
值得注意的是,并未有一样的问题,因为在计算过程中已经考虑到了自由度的问题了。
4)问题四:在测试样本上得到的预测值精度如何?
(Given a set of predictor values, what response value should we predict, and how accurate is our prediction?)
用广告数据集拟合得到的线性回归模型进行未来销售金额的预测时,误差一般来自以下几个方面:
1)这些参数本身是无法精确知道的,我们只是通过有限的训练样本得到了它们的近似估计值。换句话说,我们用最小二乘模型(population regression model),近似拟合了真实的总体回归模型;
2)只用线性模型去拟合广告数据集的训练样本本身就可能存在系统性误差,即样本数据间的关系可能并非线性;
3)即使真实的数据间关系就是线性的,且模型系数我们也能完全准确地得到,那还有独立误差项所带来的预测偏差。
那我们如何去量化这个预测与真实值之间的误差呢?
这就要提到一个概念,预测区间(prediction interval)。预测区间是为未来的预测值提供一个预测范围,这个范围包括了预测的平均值以及可能出现的误差范围。一般来说,预测区间会比置信区间(confidence interval)大很多,因为它包含的误差除了本身预测系数造成的误差外,还包括随机误差项。
大家现在可能会有点晕?一会儿是置信区间,一会儿又是预测区间。
1)它们的共同点是:预测区间和置信区间都是统计学中用于量化不确定性的区间估计 ;
2)它们的不同点是:预测区间主要用于预测未来的观测值;而置信区间主要用于估计未知的总体参数。简单来说,对于评估用拟合好的模型去预测值(得到)的精度时,用预测区间;对于评估拟合模型中的参数值(得到)的精度时,用置信区间。