python 回归去掉共线性_多元回归Multiple Regression python

Introduction

千里之行,始于足下。同样地,掌握机器学习算法的旅程最好从回归开始。它很容易理解,并且可以帮助您快速地开始预测建模。虽然这对于初学者来说是件好事,但我总是建议他们在开始使用回归之前也要了解它的工作原理。

最近,我看到了许多初学者,他们只专注于学习如何执行回归(在R或Python中),而不关注它背后的实际科学。我并不是在责怪初学者。这是一个为期两天的机器学习课程的脚本:

  • 在Python和R中运行回归不需要超过3-4行代码。您所需要做的就是传递变量、运行脚本并获得预测值。,恭喜你!你已经运行了你的第一个机器学习算法

这门课甚至不需要花时间来解释这个简单的算法,但是作为这门课的一部分,它涵盖了神经网络。真是浪费资源!

因此,在本文中,我用一种非常简单的方式解释了回归。我已经介绍了基础知识,这样你不仅理解回归是什么和它是如何工作的,而且如何计算R²和其背后的科学。

只是一个警告,你不能在任何情况下都使用它。简单回归有一定的局限性,可以通过使用高级回归技术来克服。

What is Linear Regression?

预测分析采用线性回归。它是一种使用最佳拟合直线/平面来解释两个或多个变量(在这种情况下是多元回归)之间关系程度的技术。当我们有一个自变量和一个因变量时,我们就用简单线性回归。

回归技术试图通过散点图拟合一条直线(见下文)。一个因变量和一个自变量的最简单回归形式定义为:

让我们用下面的散点图来理解这个方程:

815f0dbca5186890231f049450aa9b38.png

在上面,您可以看到一条黑色的线通过数据点。现在,您会仔细地注意到这条线与数据点在坐标(0,0)、(4,8)和(30,60)处相交。这是一个问题。找到描述这条直线的方程?你的答案应该是:

现在,求出a和b的值?

在不进行工作的情况下,解出这些方程后的结果为: a = 2, b = 0

因此,我们的回归方程为:Y= 2*X + 0,即Y= 2*X

这里,斜率= 8/4 =2或60/30 =2,截距=0(当x =0时,Y =0),则方程为

该方程称为线性回归方程,其中Y为目标变量,X为输入变量。“a”表示斜率,“b”表示截距。它用于根据输入变量估计实际价值(房屋成本、电话数量、总销售额等)。在这里,我们通过拟合一条最优直线来建立自变量和因变量之间的关系。这个最佳拟合线称为回归线,用线性方程Y= a *X + b表示。

现在,您可能认为在上面的例子中,可以有多个回归线可以通过数据点。因此,如何选择最适合系数a和系数b的直线或值。

让我们看看寻找最佳拟合线的方法。

How to find the best regression line?

我们在上面讨论过,回归线建立了自变量和因变量之间的关系。一条能更好地解释这种关系的线被称为最合适的线。

也就是说,最佳拟合线往往是基于X返回最准确的Y值,即使Y的实际值与预测值相差最小(预测误差较小)。请务必理解下面的图像。

61fbc30c41e4949cf6f449bb75e51849.png

下面是一些检查错误的方法:

  • 所有误差之和(
    )
  • 所有误差的绝对值之和(
    )
  • 所有误差平方和(
    )

让我们通过一个示例来评估上述方法的性能。下面我画了三条线(y=2.3x+4, y=1.8x+3.5, y=2x+8)来找出y和x之间的关系。

下表使用上述三种方法计算每个数据点的误差值和总误差值(E):

1ef64db77aa23ba54c41616ddcf68227.png

查看表后,可以生成以下推论:

所有误差之和

:使用这种方法会导致正负误差的抵消,这当然不是我们的目的。因此,这不是正确的方法。

另外两种方法运行良好,但是,如果你注意到,

,与
相比,我们对误差值的处理力度要大得多。可以看出,
的两个方程有几乎相似的值,而
则有显著的差异。

因此,我们可以说这些系数a和b是通过最小化数据点与回归线之间距离差的平方和而得到的。

有两种常见的算法来寻找最小平方和误差的正确系数,一种是普通最小Sqaure (OLS,在python库sklearn中使用),另一种是梯度下降.

What are the performance evaluation metrics in Regression?

如前所述,要评估回归线的性能,我们应该考虑最小平方和误差(SSE)。它工作得很好,但是当它有一个关注点时!

让我们用下面的表格来理解它:

efda848ed28c4e9d6fd440ec24f13e08.png

f638681c901bb71ca7e4b9ef7c3641e9.png

以上你可以看到,我们删除了4个数据点在右表,因此SSE减少了(用相同的回归线)。此外,如果你看散点图,删除的数据点在x和y之间的关系几乎是相似的,这意味着SSE对数据点的数量非常敏感。

其他评价线性回归性能的指标是R-square,也是最常用的评价回归模型性能的指标。R² measures——多少的变化输出变量(y)是由输入变量(x)的变化。

R-squared总是在0和1之间:

  • 0表示模型解释了响应数据在其均值附近为空的变化。
  • 1表示模型解释了响应数据在其均值附近的完全可变性。

一般来说高R²,更健壮的模型。但是,这条指导原则有一些重要的条件,我将在以后的文章中讨论。

让我们再次以上面的例子为例,计算R²的值。

67f7d4dcc8517f826252b8d91404c805.png

如您所见,与SSE相比,

的分数变化较小。

R平方的一个缺点是它只能随着预测因子加入回归模型而增加。这种增长是人为的,当预测器实际上并没有改善模型的拟合。为了解决这个问题,我们使用了——调整的

调整后的

只不过是调整模型中项数的
的变化。调整后的
计算了解释变量在因变量中所占的比例。它结合了模型的自由度。如果模型拟合的增加不能弥补自由度的损失,调整后的
将随着预测因子的增加而减少。同样,如果模型拟合值的增加值得的话,它将随着预测器的增加而增加。调整后的
应始终用于具有多个预测变量的模型。它被解释为由模型解释的总方差的比例。

What is Multi-Variate Regression?

现在让我们研究处理与一个因变量相关的多个独立变量的过程。

一旦你确定了自变量(IV)和因变量(DV)之间的显着性水平,使用这些重要的IVs来做出更有力和准确的预测。这种技术被称为“多元回归”。

让我们举一个例子来进一步理解这个概念。

我们知道,一个人的薪酬取决于他的年龄,即年龄越大,他/她的收入就越高。您可以建立一个简单的回归模型来解释年龄对一个人的薪酬的影响。你得到了27%的

。这是什么意思?

让我们试着用图表来考虑一下

934e661d991255d6ade156b8ed2507db.png

在这个例子中,

作为27%,说,只有27%的差异补偿被解释为年龄。换句话说,如果你知道一个人的年龄,你将拥有27%的信息来准确预测他们的薪酬。

现在,让我们把一个额外的变量作为“与公司相处的时间”来确定当前的薪酬。由此,

值增加到37%。我们现在如何解释这个值?

让我们再一次以图形的方式理解这一点:

122b8809fecf68201c4f6935639e001b.png

请注意,一个人在公司的时间只对他/她的职业收入负10%的责任。换句话说,通过在我们的研究中增加这个变量,我们对他们补偿的理解从27%提高到37%。

因此,通过使用两个变量而不是一个变量,我们学会了提高对一个人的工资做出准确预测的能力。

当你的多个自变量相互关联时,事情就变得复杂多了。这种现象被称为多重共线性。这是不可取的。为了避免这种情况,最好是寻找方差通货膨胀系数(VIF)。对于不存在多重共线性的情况,VIF应该是(VIF<2)。在VIF较高的情况下,寻找相关表,找出高相关变量,并删除一个相关变量。

随着多重共线性,回归存在自相关、异方差.

在多元回归模型中,我们试图预测

这里,w 是每个自变量 x 的斜率,b是截距。

例如:净值= b+

(年龄)+
(与公司相处的时间)

two dimensional model

在面积的基础上,增加房间数量这一变量( x1 =100,房子100平方米。x2=3,有三个房间。)
h(x) 为房价,根据大量的数据求出 θ0、 θ1、 θ2的值,于是能够构建出一个平面。我们要预测面积、房间个数和房价的映射关系,构建如下模型:
h(x) = θ0 + θ1x1 + θ2x2
从Y轴向下俯视该平面,可以获得该平面在x1、 x2两坐标轴上的投影。同样,由(x1、 x2)点衍生到平面上后,对应的Y轴值即是对应的房价值y或记作h(x) 。

6ed5d9cfbdf7a57d5f3247ca65704ad3.png

N d model


对于两个以上特征形成的n维模型,我们称之为超平面(Hyperplane)
模型:

即θ矩阵的转置,乘以X的矩阵。

PS:之前提到过,所有特征默认都是列向量,所以上面这个向量的乘法和转置符号的位置没有写错。
线性回归的表现形式为:


How to implement regression in Python?

线性回归在scikit-learn中有常见的实现。下面是Python中加载线性回归模型的代码

Code:

'''

End Notes

在本文中,我们从基础开始研究线性回归,然后是寻找最佳拟合直线的方法、评估度量、多变量回归以及在python和r中实现的方法。

你觉得这篇文章有用吗?请在下面的评论部分分享你的观点/想法。

参考:5 Questions which can teach you Multiple Regression (with R and Python)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值