在Python中实现线性回归 (零)---线性回归数学基础

Ft 2020-07-14 AM 103℃ 0条

TUSHARE 金融与技术学习兴趣小组

翻译整理 | One

本期编辑 | 一只小绿怪兽

译者简介:西南财经大学应用数学本科,英国曼彻斯特大学金融数学硕士,金融分析师,专注于利用数据建立金融模型,发掘潜在投资价值。

作者:Mirko Stojiljkovic

线性回归是统计学和机器学习的基础之一。无论是做统计,机器学习还是科学计算,都可能用上线性回归。因此,建议先掌握线性回归,然后再学习更复杂的方法。

通过阅读本文,你将了解到:

· 什么是线性回归

· 线性回归的用途

· 线性回归的原理

· 在Python中实现线性回归

01 什么是回归

回归主要用于研究变量之间的关系。例如,可以通过观察一些公司的职员,并试着了解他们的特征如何影响他们的薪水,比如经验,教育水平,职位,工作地点等等。

这就个回归问题,与每个职员相关的数据都是代表一次观察。其中职员的经验,教育水平,职位,工作地点都是独立的特征,这些特征决定了职员的薪水水平。

类似的,也可以试着建立房屋价格与地域,卧室数量,到市中心距离的数学依赖关系。

在回归分析中,经常会发现一些有趣的现象和一些观察,每次观察都会有两个或者更多的特征。假设其中一个特征依赖其他几个特征,可以试着去建立回归发现特征之间的关系。

换种说法,就是需要找到一个能够很好地将某些特征映射到其他特征的函数。依赖特征称为因变量,独立特征称为自变量。

回归模型中通常有一个连续且无界的因变量。但是,自变量可以是连续的,离散的,甚至是像性别,国籍,品牌等分类数据。

通常用y表示因变量,x表示自变量。如果有两个或者多个自变量,可以用向量x=(x1, …, xr)表示。

02 回归的用途

通常,回归被用来回答某些现象是否会对其他现象产生影响,或者说,几个变量之间是否存在关联。例如,可以用回归的方法确定工作经验或者性别是否在某种程度上影响到工资水平。

用新的自变量数据集去预测因变量时,回归也是非常有用的。举个例子,已知室外气温,一天的某个时间,以及家里居住的人数,可以试着预测下一个小时的家庭用电量。

回归可用于许多领域:经济,IT,社会科学等等。随着大量数据的可获取性提升以及人们对于数据的实用价值认知的提高,回归变得越来越重要了。

03 线性回归的原理

线性回归是被广泛使用的回归方法中比较重要的一种。它是最基础也是最简单的回归方法。它的主要优点是易懂。

原理

在对一组自变量x=(x1,…,xr)和因变量y进行回归时,我们假设y与x的关系:y=β0+β1x1+···+βrxr+ε。这个方程叫做回归方程。β0,β1,... ,βr是回归系数, ε是随机误差。

线性回归计算回归系数的估计值,或者说计算以b1,b2,…,br表示并用于预测的权重。其中回归函数被定义为f(x)=b0+b1x1+b2x2+···+brxr。回归函数可以很好地捕获自变量与因变量的依赖关系。

对于每一次观测i=1,…,n,回归函数f(xi)应该要足够接近实际观测的因变量yi值,其中yi与f(xi)的差值称为残差。回归是为了找到最优权重并用于预测,而残差最小的时候说明回归函数f(xi)与实际观测的yi是最接近的,此时对应的权重便是最优权重b=(b1,b2,…,br)。

通常使用最小化残差平方和的方法来计算最优权重,即最小化SSR=∑i(yi-f(xi))2。这种方法叫做最小二乘法OLS。

评价回归模型

实际观测值yi的变化一部分由于自变量xi的变化导致的。但是实际观测值yi仍然会有无法用回归函数f(xi)解释的部分。

而决定系数R2,用来说明实际观测值yi中有多大程度可以由回归函数f(x)解释。R2越大,两者拟合程度越高,意味着观测值yi-xi数据组可以很好的契合回归函数f(x)。

R2=1时,即SSR=0,称作完全拟合,这意味着所有yi-xi可以完全匹配回归函数f(x)。

单变量线性回归

单变量线性回归是线性回归中最简单的一种情形,即回归模型中只有一个自变量x=x1。

这些数据集一般来自实际业务中的数据采集。

多变量线性回归

假如仅有两个自变量,回归函数可以写成f(x1,x2)=b0+b1x1+b2x2。这个函数在三维空间中是一个平面。

这种回归的目标也是确定权重b0,b1,b2,即使得这个平面f(x1,x2)与实际观测的数值间的距离最小,即最小化SSR。

两个自变量以上的多变量回归也与上述的方法类似。例如f(x1,…,xr)=b0+b1x1+···+brxr,这个方程中有r+1个权重bi需要估计。

多项式回归

可以将多项式回归视为线性回归的一般情形。自变量与因变量的多项式依赖关系可以通过回归得到多项式回归函数。

换句话说,回归函数f中,除了包含线性部分如b1x1,还可以加入非线性部分如b2x12,b3x13,甚至b4x1x2,b5x12x2等等。

单变量多项式回归是其中最简单的一种形式,例如2阶单变量多项式回归函数:f(x)=b0+b1x+b2x2。。

现在只需要通过最小二乘法计算b0,b1,b2即可。与上一节的线性回归函数f(x1,x2)=b0+b1x1+b2x2相比较,两种回归非常相似,并且都需要估计系数b0,b1,b2。因此,只需要将高阶项如x2视为因变量,多项式回归与普通的线性回归是一样的。

在2阶多变量的情形中,回归函数可以像这样:f(x1,x2)=b0+b1x1+b2x2+b3x12+b4x1x2+b5x22,回归的方法和前面叙述的一样。对五个自变量应用线性回归:x1,x2,x12,x1x2,x22。回归的结果得到6个在SSR最小化时的权重:b0,b1,b2,b3,b4,b5。

欠拟合和过拟合

在执行多项式回归中,一个需要引起高度重视的问题是:关于多项式回归函数最优阶数的选择。

阶数的选择并没有明确的规则。它需要视情况而定。但是,在选择阶数的时候,需要关注两个问题:欠拟合与过拟合。

当模型无法准确的捕获数据之间的依赖关系时导致欠拟合,这通常是由于模型过于简单导致的。欠拟合的模型在用现有数据进行回归时会有较低的决定系数R2,同时它的预测能力也不足。

当数据和随机波动性都拟合到模型中时会导致过拟合。换种说法,就是模型和现有数据契合程度过高了。高度复杂的模型一般都有很多自变量,这通常容易导致模型过拟合。将现有数据拟合这种模型的时候一般会有很高的决定系数R2。但是在使用新数据时,模型可能会表现出很弱的预测能力和低决定系数R2。

图一
1.png
上图中,最左边绿点x=5,y=5就是观测值。

回归函数以图中黑线表示,其表达式为f(x)=b0+b1x。我们需要用最小化残差平方和SSR的方法来计算回归函数中的权重b0与b1。其中b0为截距,即回归函数f(x)与y轴的交点。b1为回归函数的斜率,也可以理解为黑线的倾斜程度。

图中红色方块表示的是xi-f(xi)的数据集,该数据集都落在直线上。例如x=5,f(5)=8.33。

有了以上两组数据后,便可以计算残差,即yi-f(xi)=yi-b0-b1xi,i=1,…,n。在图中残差可表示为绿点到红方块的距离,用虚线表示。在执行线性回归时,事实上是在试着使图中绿点到红方块的虚线总长度最小,即残差最小。

图二
2.png
左上图是个低决定系数R2的线性回归。这条直线没有考虑当x变化时观测值yi的剧烈变动。这也许是一个欠拟合的例子。

右上图是个2阶多项式回归。在这个回归模型中,2阶也许是拟合该组数据的最优阶数。这个回归模型的R2还不错,并且可以很好地勾勒出了数据的趋势。

左下图是个3阶的多项式回归。回归模型的R2比右上图的要高。对于现有的数据,这个模型比右上图的模型要好。但是,它可能有一些过拟合的迹象,尤其是在x接近60的时候,现有的观测数据并没有显示出回归模型中给出的下降趋势。

最后,在右下图中,这是一个完全拟合,6个观测值都落在回归模型的曲线上。这可能是我们想要的回归模型,但是在多数情况下,这是一种过拟合的模型。它可能会有糟糕的预测能力。在这例中,可以看到曲线在x大于50时候毫无征兆的急速下降,并且在x=60附近归零。这种曲线可能是过度学习或者过度拟合现有数据导致的。

标签: python, 机器学习

非特殊说明,本博所有文章均为博主原创。

评论啦~