# 机器学习中的简单线性回归教程

> 原文： [https://machinelearningmastery.com/simple-linear-regression-tutorial-for-machine-learning/](https://machinelearningmastery.com/simple-linear-regression-tutorial-for-machine-learning/)

线性回归是一种非常简单的方法，但已被证明对大量情况非常有用。

在这篇文章中，您将逐步了解线性回归的工作原理。阅读这篇文章后你会知道：

*   如何逐步计算简单的线性回归。
*   如何使用电子表格执行所有计算。
*   如何使用您的模型对新数据做出预测。
*   一种快捷方式，可以大大简化计算。

本教程是为开发人员编写的，不承担任何数学或统计学的先前背景。

编写本教程的目的是让您在自己的电子表格中进行操作，这将有助于使概念坚持下去。

让我们开始吧。

**更新＃1** ：修正了RMSE计算中的错误。

![Simple Linear Regression Tutorial for Machine Learning](img/67a19a4f0061c01241ccd21126f1a0bc.jpg)

机器学习的简单线性回归教程
照 [Catface27](https://www.flickr.com/photos/catsanchez/20007966344/) ，保留一些权利。

## 教程数据集

我们正在使用的数据集是完全组成的。

以下是原始数据。

```py
x	y
1	1
2	3
4	3
3	2
5	5
```

属性x是输入变量，y是我们试图预测的输出变量。如果我们得到更多数据，我们只有x值，我们会对预测y值感兴趣。

下面是x与y的简单散点图。

![Plot of the Dataset for Simple Linear Regression](img/81b2cddb2dc00c781a6da7d5eab6c992.jpg)

简单线性回归数据集的图

我们可以看到x和y之间的关系看起来很线性。在中，我们可能会在从图的左下角对角线到右上角绘制一条线，以概括地描述数据之间的关系。

这是一个很好的迹象，表明使用线性回归可能适合这个小数据集。

## 获取免费算法思维导图

![Machine Learning Algorithms Mind Map](img/2ce1275c2a1cac30a9f4eea6edd42d61.jpg)

方便的机器学习算法思维导图的样本。

我已经创建了一个由类型组织的60多种算法的方便思维导图。

下载，打印并使用它。

## 简单线性回归

当我们有一个输入属性（x）并且我们想要使用线性回归时，这称为简单线性回归。

如果我们有多个输入属性（例如x1，x2，x3等），这将被称为多元线性回归。线性回归的过程与多元线性回归的过程不同且简单，因此它是一个很好的起点。

在本节中，我们将从训练数据中创建一个简单的线性回归模型，然后对我们的训练数据做出预测，以了解模型在数据中学习关系的程度。

使用[简单线性回归](https://en.wikipedia.org/wiki/Simple_linear_regression)，我们想要对数据建模如下：

y = B0 + B1 * x

这是一条线，其中y是我们想要预测的输出变量，x是我们知道的输入变量，B0和B1是我们需要估计的移动线的系数。

从技术上讲，B0称为截距，因为它确定了线截取y轴的位置。在机器学习中，我们可以称之为偏差，因为它被添加以抵消我们所做的所有预测。 B1项称为斜率，因为它定义了线的斜率或者在我们添加偏差之前x如何转换为y值。

目标是找到系数的最佳估计值，以最小化从x预测y的误差。

简单回归是很好的，因为我们不是必须通过反复试验来搜索值，或者使用更高级的线性代数来分析计算它们，我们可以直接从我们的数据中估算它们。

我们可以通过估算B1的值来开始：

B1 = sum（（xi-mean（x））*（yi-mean（y）））/ sum（（xi-mean（x））^ 2）

其中mean（）是数据集中变量的平均值。 xi和yi指的是我们需要在数据集中的所有值上重复这些计算，并且i指的是x或y的第i个值。

我们可以使用B1和我们的数据集中的一些统计量来计算B0，如下所示：

B0 =平均值（y） - B1 *平均值（x）

那不错吧？我们可以在电子表格中计算这些内容。

### 估算坡度（B1）

让我们从等式的顶部开始，即分子。

首先，我们需要计算x和y的平均值。平均值计算如下：

1 / n *总和（x）

其中n是值的数量（在这种情况下为5）。您可以在电子表格中使用AVERAGE（）函数。让我们计算x和y变量的平均值：

mean（x）= 3

mean（y）= 2.8

现在我们需要从均值计算每个变量的误差。让我们先用x做这个：

```py
x	mean(x)	x - mean(x)
1	3	-2
2	3	-1
4	3	1
3	3	0
5	3	2
```

现在让我们为y变量做这个

```py
y	mean(y)	y - mean(y)
1	2.8	-1.8
3	2.8	0.2
3	2.8	0.2
2	2.8	-0.8
5	2.8	2.2
```

我们现在有用于计算分子的部分。我们需要做的就是将每个x的误差与每个y的误差相加，并计算这些乘法的总和。

```py
x - mean(x)	y - mean(y)	Multiplication
-2	-1.8	3.6
-1	0.2	-0.2
1	0.2	0.2
0	-0.8	0
2	2.2	4.4
```

总结最后一列，我们将分子计算为8。

现在我们需要计算等式的底部来计算B1或分母。这被计算为每个x值与平均值的平方差的总和。

我们已经计算了每个x值与均值的差值，我们需要做的就是对每个值求平方并计算总和。

```py
x - mean(x)	squared
-2	4
-1	1
1	1
0	0
2	4
```

计算这些平方值的总和可以得到10的分母

现在我们可以计算出斜率的值。

B1 = 8/10

B1 = 0.8

### 估计拦截（B0）

这更容易，因为我们已经知道所涉及的所有术语的值。

B0 = mean(y) – B1 * mean(x)

要么

B0 = 2.8 - 0.8 * 3

or

B0 = 0.4

简单。

## 做出预测

我们现在有了简单线性回归方程的系数。

y = B0 + B1 * x

or

y = 0.4 + 0.8 * x

让我们通过对我们的训练数据做出预测来试验模型。

```py
x	y	predicted y
1	1	1.2
2	3	2
4	3	3.6
3	2	2.8
5	5	4.4
```

我们可以将这些预测作为我们数据的一条线。这让我们可以直观地了解该线对数据进行建模的程度。

![Simple Linear Regression Model](img/bd9ae26f552f9e7226451e2673caed66.jpg)

简单线性回归模型

## 估计错误

我们可以为我们的预测计算误差，称为[均方根误差](https://en.wikipedia.org/wiki/Root-mean-square_deviation)或RMSE。

RMSE = sqrt（sum（（pi - yi）^ 2）/ n）

其中sqrt（）是平方根函数，p是预测值，y是实际值，i是特定实例的索引，n是预测数，因为我们必须计算所有预测值的误差。

首先，我们必须计算每个模型预测与实际y值之间的差异。

```py
pred-y	y	error
1.2	1	0.2
2	3	-1
3.6	3	0.6
2.8	2	0.8
4.4	5	-0.6
```

我们可以很容易地计算出每个误差值的平方（误差*误差或误差^ 2）。

```py
error	squared error
0.2	0.04
-1	1
0.6	0.36
0.8	0.64
-0.6	0.36
```

这些误差的总和是2.4个单位，除以n并取平方根给出了：

RMSE = 0.692

或者，每个预测平均错误约0.692个单位。

## 捷径

在我们结束之前，我想向您展示一个计算系数的快捷方式。

简单线性回归是最简单的回归形式，研究最多。您可以使用快捷方式快速估算B0和B1的值。

真的，它是计算B1的捷径。 B1的计算可以重写为：

B1 = corr（x，y）* stdev（y）/ stdev（x）

其中corr（x）是x和y之间的相关性，stdev（）是变量的标准偏差的计算。

相关性（也称为 [Pearson相关系数](https://en.wikipedia.org/wiki/Pearson_product-moment_correlation_coefficient)）是相关两个变量在-1到1范围内的度量。值为1表示两个变量完全正相关，它们都移动在相同的方向上，值-1表示它们完全负相关，当一个移动另一个方向的另一个移动时。

[标准差](https://en.wikipedia.org/wiki/Standard_deviation)衡量数据从平均值中分散的平均值。

您可以在电子表格中使用函数PEARSON（）来计算x和y的相关性为0.852（高度相关）和函数STDEV（），以计算x的标准偏差为1.5811，y为1.4832。

在我们中插入这些值有：

B1 = 0.852 * 1.4832 / 1.5811

B1 = 0.799

足够接近上述值0.8。请注意，如果我们在电子表格中使用更全面的精度来得到相关和标准差方程，我们得到0.8。

## 摘要

在这篇文章中，您了解了如何在电子表格中逐步实现线性回归。你了解到：

*   如何根据训练数据估算简单线性回归模型的系数。
*   如何使用您学习的模型做出预测。

您对此帖子或线性回归有任何疑问吗？发表评论并提出问题，我会尽力回答。