Introduction
千里之行,始于足下。同样地,掌握机器学习算法的旅程最好从回归开始。它很容易理解,并且可以帮助您快速地开始预测建模。虽然这对于初学者来说是件好事,但我总是建议他们在开始使用回归之前也要了解它的工作原理。
最近,我看到了许多初学者,他们只专注于学习如何执行回归(在R或Python中),而不关注它背后的实际科学。我并不是在责怪初学者。这是一个为期两天的机器学习课程的脚本:
- 在Python和R中运行回归不需要超过3-4行代码。您所需要做的就是传递变量、运行脚本并获得预测值。,恭喜你!你已经运行了你的第一个机器学习算法
这门课甚至不需要花时间来解释这个简单的算法,但是作为这门课的一部分,它涵盖了神经网络。真是浪费资源!
因此,在本文中,我用一种非常简单的方式解释了回归。我已经介绍了基础知识,这样你不仅理解回归是什么和它是如何工作的,而且如何计算R²和其背后的科学。
只是一个警告,你不能在任何情况下都使用它。简单回归有一定的局限性,可以通过使用高级回归技术来克服。
What is Linear Regression?
预测分析采用线性回归。它是一种使用最佳拟合直线/平面来解释两个或多个变量(在这种情况下是多元回归)之间关系程度的技术。当我们有一个自变量和一个因变量时,我们就用简单线性回归。
回归技术试图通过散点图拟合一条直线(见下文)。一个因变量和一个自变量的最简单回归形式定义为:
让我们用下面的散点图来理解这个方程:
在上面,您可以看到一条黑色的线通过数据点。现在,您会仔细地注意到这条线与数据点在坐标(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的实际值与预测值相差最小(预测误差较小)。请务必理解下面的图像。
下面是一些检查错误的方法:
- 所有误差之和(
)
- 所有误差的绝对值之和(
)
- 所有误差平方和(
)
让我们通过一个示例来评估上述方法的性能。下面我画了三条线(y=2.3x+4, y=1.8x+3.5, y=2x+8)来找出y和x之间的关系。
下表使用上述三种方法计算每个数据点的误差值和总误差值(E):
查看表后,可以生成以下推论:
所有误差之和
另外两种方法运行良好,但是,如果你注意到,
因此,我们可以说这些系数a和b是通过最小化数据点与回归线之间距离差的平方和而得到的。
有两种常见的算法来寻找最小平方和误差的正确系数,一种是普通最小Sqaure (OLS,在python库sklearn中使用),另一种是梯度下降.
What are the performance evaluation metrics in Regression?
如前所述,要评估回归线的性能,我们应该考虑最小平方和误差(SSE)。它工作得很好,但是当它有一个关注点时!
让我们用下面的表格来理解它:
以上你可以看到,我们删除了4个数据点在右表,因此SSE减少了(用相同的回归线)。此外,如果你看散点图,删除的数据点在x和y之间的关系几乎是相似的,这意味着SSE对数据点的数量非常敏感。
其他评价线性回归性能的指标是R-square,也是最常用的评价回归模型性能的指标。R² measures——多少的变化输出变量(y)是由输入变量(x)的变化。
R-squared总是在0和1之间:
- 0表示模型解释了响应数据在其均值附近为空的变化。
- 1表示模型解释了响应数据在其均值附近的完全可变性。
一般来说高R²,更健壮的模型。但是,这条指导原则有一些重要的条件,我将在以后的文章中讨论。
让我们再次以上面的例子为例,计算R²的值。
如您所见,与SSE相比,
R平方的一个缺点是它只能随着预测因子加入回归模型而增加。这种增长是人为的,当预测器实际上并没有改善模型的拟合。为了解决这个问题,我们使用了——调整的
调整后的
What is Multi-Variate Regression?
现在让我们研究处理与一个因变量相关的多个独立变量的过程。
一旦你确定了自变量(IV)和因变量(DV)之间的显着性水平,使用这些重要的IVs来做出更有力和准确的预测。这种技术被称为“多元回归”。
让我们举一个例子来进一步理解这个概念。
我们知道,一个人的薪酬取决于他的年龄,即年龄越大,他/她的收入就越高。您可以建立一个简单的回归模型来解释年龄对一个人的薪酬的影响。你得到了27%的
让我们试着用图表来考虑一下
在这个例子中,
现在,让我们把一个额外的变量作为“与公司相处的时间”来确定当前的薪酬。由此,
让我们再一次以图形的方式理解这一点:
请注意,一个人在公司的时间只对他/她的职业收入负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) 。
N d model
对于两个以上特征形成的n维模型,我们称之为超平面(Hyperplane)
模型:
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)