原文: https://machinelearningmastery.com/simple-linear-regression-tutorial-for-machine-learning/
线性回归是一种非常简单的方法,但已被证明对大量情况非常有用。
在这篇文章中,您将逐步了解线性回归的工作原理。阅读这篇文章后你会知道:
- 如何逐步计算简单的线性回归。
- 如何使用电子表格执行所有计算。
- 如何使用您的模型对新数据做出预测。
- 一种快捷方式,可以大大简化计算。
本教程是为开发人员编写的,不承担任何数学或统计学的先前背景。
编写本教程的目的是让您在自己的电子表格中进行操作,这将有助于使概念坚持下去。
让我们开始吧。
更新#1 :修正了 RMSE 计算中的错误。
机器学习的简单线性回归教程 照 Catface27 ,保留一些权利。
我们正在使用的数据集是完全组成的。
以下是原始数据。
x y
1 1
2 3
4 3
3 2
5 5
属性 x 是输入变量,y 是我们试图预测的输出变量。如果我们得到更多数据,我们只有 x 值,我们会对预测 y 值感兴趣。
下面是 x 与 y 的简单散点图。
简单线性回归数据集的图
我们可以看到 x 和 y 之间的关系看起来很线性。在中,我们可能会在从图的左下角对角线到右上角绘制一条线,以概括地描述数据之间的关系。
这是一个很好的迹象,表明使用线性回归可能适合这个小数据集。
方便的机器学习算法思维导图的样本。
我已经创建了一个由类型组织的 60 多种算法的方便思维导图。
下载,打印并使用它。
当我们有一个输入属性(x)并且我们想要使用线性回归时,这称为简单线性回归。
如果我们有多个输入属性(例如 x1,x2,x3 等),这将被称为多元线性回归。线性回归的过程与多元线性回归的过程不同且简单,因此它是一个很好的起点。
在本节中,我们将从训练数据中创建一个简单的线性回归模型,然后对我们的训练数据做出预测,以了解模型在数据中学习关系的程度。
使用简单线性回归,我们想要对数据建模如下:
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)
那不错吧?我们可以在电子表格中计算这些内容。
让我们从等式的顶部开始,即分子。
首先,我们需要计算 x 和 y 的平均值。平均值计算如下:
1 / n *总和(x)
其中 n 是值的数量(在这种情况下为 5)。您可以在电子表格中使用 AVERAGE()函数。让我们计算 x 和 y 变量的平均值:
mean(x)= 3
mean(y)= 2.8
现在我们需要从均值计算每个变量的误差。让我们先用 x 做这个:
x mean(x) x - mean(x)
1 3 -2
2 3 -1
4 3 1
3 3 0
5 3 2
现在让我们为 y 变量做这个
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 的误差相加,并计算这些乘法的总和。
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 值与均值的差值,我们需要做的就是对每个值求平方并计算总和。
x - mean(x) squared
-2 4
-1 1
1 1
0 0
2 4
计算这些平方值的总和可以得到 10 的分母
现在我们可以计算出斜率的值。
B1 = 8/10
B1 = 0.8
这更容易,因为我们已经知道所涉及的所有术语的值。
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
让我们通过对我们的训练数据做出预测来试验模型。
x y predicted y
1 1 1.2
2 3 2
4 3 3.6
3 2 2.8
5 5 4.4
我们可以将这些预测作为我们数据的一条线。这让我们可以直观地了解该线对数据进行建模的程度。
简单线性回归模型
我们可以为我们的预测计算误差,称为均方根误差或 RMSE。
RMSE = sqrt(sum((pi - yi)^ 2)/ n)
其中 sqrt()是平方根函数,p 是预测值,y 是实际值,i 是特定实例的索引,n 是预测数,因为我们必须计算所有预测值的误差。
首先,我们必须计算每个模型预测与实际 y 值之间的差异。
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)。
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 相关系数)是相关两个变量在-1 到 1 范围内的度量。值为 1 表示两个变量完全正相关,它们都移动在相同的方向上,值-1 表示它们完全负相关,当一个移动另一个方向的另一个移动时。
标准差衡量数据从平均值中分散的平均值。
您可以在电子表格中使用函数 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。
在这篇文章中,您了解了如何在电子表格中逐步实现线性回归。你了解到:
- 如何根据训练数据估算简单线性回归模型的系数。
- 如何使用您学习的模型做出预测。
您对此帖子或线性回归有任何疑问吗?发表评论并提出问题,我会尽力回答。