Python中的回归算法

2025 年 1 月 5 日 | 阅读 10 分钟

引言

在本教程中,我们将学习 Python 中的回归算法。回归是统计学和机器学习中一种重要且广泛使用的方法。基于回归的函数的主要目的是在给定连续数量的输入数据时预测输出或响应。输出将基于训练过程中学习到的模型。回归模型使用输入数据(自变量)及其对结果(因变量或结果变量)的连续影响来检查输入与相应输出之间的特定关系。

回归分析是一种统计技术。它用于预测因变量与一个或多个自变量之间的关系。在机器学习中,回归算法用于预测连续变量,例如房价、学生成绩、医疗结果等。Python 是数据科学和机器学习中最广泛使用的语言之一,拥有许多强大的库来实现回归算法。

本教程将讨论 Python 和机器学习中最常用的 7 种回归算法。它们是线性回归、多项式回归、岭回归、Lasso 回归和弹性网络回归、基于决策树的方法以及支持向量回归 (SVR)。我们将从理论上探讨这些算法,并使用流行的 Python 库(如 scikit-learn)提供实现示例。

回归算法的应用有哪些?

回归算法有一些应用,如下所示:

1. 优化

我们可以使用回归算法来改进业务流程优化。例如,商店经理可以创建统计数据来了解客户的高峰时段。

2. 错误纠正

在商业中做出明智的决策与改进业务流程同样重要。回归算法可以帮助我们做出决策并纠正已实施的决策。

3. 预测分析

使用回归的一个重要方面是估计或预测。例如,我们可以预测 GDP、油价或一段时间内的数据。

4. 金融

金融公司一直有兴趣减少风险信息并希望了解是什么影响了他们的客户。所有这些都可以通过回归算法进行预测。

5. 经济学

在经济学中,它是使用最多的工具。我们可以使用回归算法来预测供给、需求、消费、资本品等。

了解 Python 中的一些回归算法

在这里,我们将学习 Python 中的一些回归算法,它们是线性回归、多项式回归、岭回归、Lasso 回归和弹性网络回归、基于决策树的方法以及支持向量回归 (SVR)。

1. 线性回归

线性回归是一种机器学习算法。它用于监督学习。它执行将变量预测为自变量的任务。因此,这种回归方法查找因变量与其他自变量之间的关系。因此,此算法的名称是线性回归算法。

多元线性回归是一种用于模拟一个自变量与两个或两个以上因变量之间关系的方法。多元线性回归是简单线性回归的扩展,其中只有一个自变量预测因变量。下面可以看到多元线性回归的通用方程。这里 y 是因变量,x 是自变量。

使用线性回归时,您应该意识到您做出了某些假设,包括:

多元线性回归的假设包括:

  1. 线性性:在多元线性回归中,自变量和因变量之间的关系必须是线性的。
  2. 独立性:观测值彼此独立。
  3. 同方差性:误差项的方差在自变量的所有水平上都是恒定的。
  4. 正态性:误差项呈正态分布。

线性回归的主要优点之一是它简单易懂。自变量的系数可用于估计每个变量对因变量的影响。线性回归还可以处理多个自变量,这使其在建模变量之间的关系方面很有用。此外,线性回归易于计算,并且可以应用于大型数据集。线性回归的结果可以使用散点图轻松可视化,从而可以轻松查看文档中的模式和趋势。与其他更复杂的模型相比,它可以用作基准模型。

现在,我们通过 Scikit-Learn 文档给出一个使用线性回归的例子。

2. 多项式回归

多项式回归是回归分析的一种形式。这里,自变量 A 和因变量 B 之间的关系被建模为 n 次多项式。与假设关系是线性的线性回归不同,它允许在对变量之间的非线性关系进行建模时具有更大的灵活性。下面是多项式回归的通用方程,其中 B 是因变量,A 是自变量。请注意,我们通过选择更多阶(最高到某个阶 k)并可以包含交互项来扩展这一点。

多项式回归的主要优点之一是它能够模拟非线性关系。这种方法可以捕捉许多不同的模式并带来更准确的预测。它还允许对变量之间的交互进行建模,这在许多应用中很有用。值得注意的是,多项式回归有其假设,如果多项式次数过高,就会发生过拟合。

如果选择过高的多项式次数,您可能会过度拟合数据。您必须尝试几种不同的级别选项,并比较训练和测试结果来评估您的模型。与线性回归等其他模型相比,比较多项式回归的结果以查看使用多项式回归(它比线性回归略小且计算量更大)是否表现更好,这也是一个好习惯。

现在,在下面的部分中,我们从 Scikit-Learn 文档中提供了一个使用多项式回归的示例,该示例用于创建特征集的 polynomial 版本,然后您可以将其输入到线性回归中。

3. 岭回归

岭回归是线性回归的一种变体。它可以解决线性回归的一些问题。当自变量数量很多时,线性回归容易过拟合,因为自变量的系数可能非常大,使得模型难以清晰地拟合数据。岭回归通过向线性回归方程添加一个称为 L2 正则化项的项来解决此问题。它是平方系数乘以正则化参数 lambda 的总和。岭回归方程可以表示为:

通过添加此项,岭回归通过平方来惩罚大的系数,这有助于防止过拟合问题。它提高了模型的泛化能力。正则化参数 lambda 控制常数的强度,较高的 lambda 值会使系数变小,较低的 lambda 值会使系数接近线性回归系数。岭回归还具有效率高并考虑多个变量(当自变量高度相关时)的优点。您可以在下面的 Scikit-Learn 文档中看到使用岭回归的示例。

4. Lasso 回归

LASSO 的全称是 Least Absolute Shrinkage and Selection Operator。与岭回归类似,LASSO 回归是线性回归的另一种变体。这种回归可以解决线性回归的一些问题。它解决了自变量数量很多时的过拟合问题。Lasso 回归向水平线性方程添加一个称为 L1 项常数的项,也称为 Lasso 惩罚。它等于系数的值乘以 lambda 参数。Lasso 回归方程可以表示为:

Lasso 回归会惩罚大的系数,但与 Ridge 回归不同,它可以将某些系数设置为 0,这是一个很好的特征选择。这意味着 Lasso 回归可以帮助选择最重要的变量并消除不重要的变量。正则化参数 lambda 控制正则化的强度。高 lambda 值会将许多系数减小到零,低 lambda 值会将系数拉近到线性回归系数。

Lasso 正则化可以轻松扩展到其他统计模型,包括一般线性模型、一般方程估计、风险建模和 M 估计。您可以在下面的 Scikit-Learn 文档中看到使用 Lasso 回归的示例。

5. 弹性网络回归

弹性网络回归是回归算法的一部分。它是岭回归和 Lasso 回归的混合体,结合了两者的优点。当自变量数量很多时,通过向线性回归方程添加 L1 和 L2 正则化项来解决过拟合问题。

通过正则化,添加 L1 和 L2 项。弹性网络回归可以平衡岭回归和 Lasso 回归的优点。它可以将某些系数设置为 0,如 Lasso 回归,并减小其他系数,如岭回归。正则化参数 lambda 用于控制正则化的强度。在这里,较高的 lambda 值会将许多系数减小到零。较低的 lambda 值会将系数拉近到线性回归系数。在这里,我们从 Scikit-Learn 文档中给出了使用弹性网络回归的示例。

6. 基于决策树的回归

基于决策树的回归是回归的另一部分。该方法使用决策树来模拟因变量与一个或多个自变量之间的关系。决策树是 Python 中广泛使用的机器学习算法,可用于分类和回归问题。它提供了一个树状结构,其中每个节点代表一个行为测试,每个分支节点代表测试结果,每个叶节点代表预测值。

在基于决策树的回归中,自变量用于创建决策树以连续预测变量。通过根据自变量的值递归地将数据划分为更小的子集来构建树。决策树算法通过最小化成本函数来尝试找到每个特征的最佳分割点。树可以加深。最终的树将包含一个决策过程,可用于预测因变量的值。

基于决策树的回归有许多优点,例如这种回归可以处理分类和数值自变量。它还可以处理缺失数据,并且易于解释。基于决策树的回归是可用于回归的基于树的算法之一。结果最好与其他基于树的算法(如随机森林和梯度提升)进行比较。现在我们从 Scikit-Learn 文档中给出了一个使用基于决策树的回归的示例。

7. 支持向量回归

支持向量回归简称 SVR。支持向量回归,或 SVR,是一种支持向量机 (SVM) 算法。SVM,或支持向量机,是监督学习的一部分。SVR 是一种线性模型,旨在找到一个通常将数据点分为两类的超平面,同时减少分类错误。在 SVR 中,目标是找到将数据点与预测误差分开的超平面,同时最小化预测值与真实值之间实际差异的大小。

使用核技巧处理非线性数据和离散数据是 SVR 的主要优点之一。SVR 使用核函数将原始数据映射到可以分隔边界的高级别。这使得 SVR 能够模拟变量之间的关系并做出准确的预测。SVR 的另一个优点是它对异常值的鲁棒性。SVR 使用大小加权的函数,使其比线性回归方法对异常值不那么敏感。现在我们从 Scikit-Learn 文档中给出了一个使用支持向量回归的示例。

结论

在本教程中,我们将学习 Python 中的回归算法。回归是机器学习的重要组成部分。在这里,我们学习了 7 种 Python 中的回归算法,并提供了 Scikit-Learn 文档中的示例。