我将介绍线性回归的概念,但主要讨论Python的实现。线性回归是一种统计模型,用于检查两个(简单线性回归)或更多(多线性回归)变量(一个因变量和一个或多个自变量)之间的线性关系。
线性关系基本上意味着当一个(或多个)自变量增加(或减少)时,因变量也会增加(或减少):
如上图,线性关系可能是正的(独立变量上升,因变量上升)或负值(独立变量上升,因变量下降)。
我会将重点放在Python中回归模型的实现,所以我不想在回归模型中深入研究数学,但是我会写一点关于它的内容。
一点点数学
变量Y和X之间的关系由等式:
Y是因变量 - 或者我们试图预测或估计的变量
X是自变量 - 我们用来做出预测的变量
m是回归线的斜率 - 它代表X对Y的影响。换句话说,如果X增加1个单位,Y就会增加m个单位。(“完全披露(Full Disclosure)”:只有当我们知道X和Y有线性关系时才是真实的,在几乎所有的线性回归情况下,这都不是真的!)
b是一个常数,也被称为Y截距。如果X等于0,Y将等于b。这在现实生活中不一定适用 - 我们并不总是知道X和Y之间的确切关系或者具有确切的线性关系
现在进行简单线性回归(SLR):在SLR模型中,我们建立了一个基于数据的模型 - 斜率m和Y截距来自数据; 此外,我们不需要X和Y之间的关系完全线性。
简单线性回归还包括数据中的错误(也称为残差)。我现在不会过多讲解它,以后有机会再来另外写。但残差基本上是Y的真实值与Y的预测/估计值之间的差异。
重要的是,在线性回归中,我们想要预测一个连续变量。
在回归模型中,我们试图通过找到“最佳拟合线”来最小化这些错误。我们试图将红线与蓝点的距离最小化,尽可能接近零。它与(或相当于)最小化均方误差(MSE)或误差平方和(SSE),也称为“残差平方和”(RSS),但这超出了本文讨论的范围:-)
在大多数情况下,我们将有多个自变量,它可以少至两个或多达数百(或理论上甚至数千)变量。在这些情况下,我们将使用多重线性回归模型(MLR)。
多重线性回归方程与简单线性回归方程几乎相同,只是具有更多变量:
这就结束了这篇文章的数学部分:),接下来我们要在Python中实现啦
Python中的线性回归
在Python中实现线性回归有两种主要方法 - 使用Statsmodels和scikit-learn。也可以使用Scipy库,但我觉得这不像其他两个库一样常见。先看看这两个库的线性回归