线性回归 是一种统计方法,用于根据一个或多个自变量来预测连续的因变量(即目标变量)。该技术假设因变量和自变量之间存在线性关系,这意味着因变量会随着自变量的变化按比例变化。
在本文中,我们将了解线性回归的类型及其在 Python 编程语言中的实现。线性回归是一种对给定一组自变量与因变量之间的关系进行建模的统计方法。
线性回归类型的实现
我们将讨论三种类型的线性回归:
- 简单线性回归: 这涉及基于单个自变量预测因变量。
- 多元线性回归: 这涉及基于多个自变量预测因变量。
- 多项式线性回归: 这涉及基于自变量和因变量之间的多项式关系来预测因变量。
1. 简单线性回归
简单线性回归是一种使用单个特征预测响应的方法。它是最基础、最简单的机器学习模型之一。在线性回归中,我们假设两个变量,即因变量和自变量,是线性相关的。因此,我们试图找到一个线性函数,该函数可以参照自变量 预测值。让我们考虑一个数据集,其中我们针对每个特征 x 都有对应的响应 y 值:
!Linear Regression (Python Implementation)
为了通用性,我们定义:
> x 为特征向量,即 x = [x1, x2, …., x_n],
>
> y 为响应向量,即 y = [y1, y2, …., y_n]
针对 n 个观测值(在上述示例中,n=10)。上述数据集的散点图如下所示:-
!Scatter plot for the randomly generated data随机生成数据的散点图
现在,我们的任务是找到一条最能拟合上述散点图的直线,以便我们可以针对任何新的特征值(即数据集中不存在的 x 值)预测响应。这条线被称为回归线。回归线的方程表示为:
h(xi) = \beta 0 + \beta1xi
这里,
- h(x_i) 代表第 i 个观测值的预测响应值。
- b0 和 b1 是回归系数,分别代表回归线的y 截距和斜率。
为了创建我们的模型,我们必须“学习”或估计回归系数 b0 和 b1 的值。一旦我们估计了这些系数,就可以使用该模型来预测响应!
在本文中,我们将使用最小二乘法原理。
现在考虑:
yi = \beta0 + \beta1xi + \varepsiloni = h(xi) + \varepsiloni \Rightarrow \varepsiloni = yi -h(xi)
这里,e_i 是第 i 个观测值中的残差误差。因此,我们的目标是最小化总残差误差。我们定义平方误差或代价函数 J 为:
J(\beta0,\beta1)= \frac{1}{2n} \sum{i=1}^{n} \varepsiloni^{2}
我们的任务是找到使 J(b0, b1) 最小的 b0 和 b1 的值!在不深入探讨数学细节的情况下,我们在这里直接展示结果:
\beta1 = \frac{SS{xy}}{SS_{xx}}
\beta0 = \bar{y} – \beta1\bar{x}
其中 SSxy 是 y 和 x 的交叉偏差总和:
SS{xy} = \sum{i=1}^{n} (xi-\bar{x})(yi-\bar{y}) = \sum{i=1}^{n} yix_i – n\bar{x}\bar{y}
而 SSxx 是 x 的平方偏差总和:
SS{xx} = \sum{i=1}^{n} (xi-\bar{x})^2 = \sum{i=1}^{n}x_i^2 – n(\bar{x})^2
简单线性回归的 Python 实现
我们可以使用 Python 语言来学习线性回归模型的系数。为了绘制输入数据和最佳拟合线,我们将使用 matplotlib 库。它是用于绘制图形的最常用的 Python 库之一。以下是使用 Python 实现简单线性回归的示例。
#### 导入库
Python
CODEBLOCK_faeb47f7
#### 估计系数函数
函数 INLINECODEf81e72e5 接收输入数据 INLINECODE8324580d(自变量)和 y(因变量),并使用最小二乘法估计线性回归线的系数。
- 计算观测值数量:
n = np.size(x)确定数据点的数量。 - 计算平均值: `m_x = np