# 机器学习中的简单线性回归教程 > 原文: [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。 ## 摘要 在这篇文章中,您了解了如何在电子表格中逐步实现线性回归。你了解到: * 如何根据训练数据估算简单线性回归模型的系数。 * 如何使用您学习的模型做出预测。 您对此帖子或线性回归有任何疑问吗?发表评论并提出问题,我会尽力回答。