机器学习中的回归分析

摘要:回归分析是机器学习中预测连续数值的关键技术,通过建立自变量与因变量之间的关系模型进行预测。主要类型包括线性回归、逻辑回归、多项式回归等8种方法。评估指标如MAE、MSE、R²等用于衡量模型性能。应用领域涵盖经济预测、金融风险评估等。Python中可通过Scikit-learn库实现回归建模,流程包括数据准备、模型训练、预测评估等步骤。不同回归方法适用于不同数据特征,需根据性能指标和模型复杂度选择最优方案。

目录

什么是回归分析?

回归分析中使用的术语

回归是如何运作的?

机器学习中的回归类型

[1. 线性回归](#1. 线性回归)

[2. 逻辑回归](#2. 逻辑回归)

[3. 多项式回归](#3. 多项式回归)

[4. 套索回归](#4. 套索回归)

[5. 脊回归](#5. 脊回归)

[6. 决策树回归](#6. 决策树回归)

[7. 随机森林回归](#7. 随机森林回归)

[8. 支持向量回归](#8. 支持向量回归)

回归模型的类型

如何选择最佳回归模型?

回归评估指标

回归在机器学习中的应用

[在 Python 中构建回归器](#在 Python 中构建回归器)

步骤1:导入必要的Python包

步骤2:导入数据集

步骤3:将数据组织为训练和测试集

步骤4:模型评估与预测

步骤5:规划与可视化

步骤6:性能计算


什么是回归分析?

在机器学习中,回归分析是一种统计技术,基于自变量和因变量之间的关系预测连续数值。回归分析的主要目标是绘制一条最符合数据的线或曲线,并估计一个变量如何影响另一个变量。

回归分析是机器学习中的一个基本概念,广泛应用于预测、预测分析等多种应用中。

在机器学习中,回归是一种监督式学习。基于回归的任务的关键目标是预测给定输入数据的输出标签或响应,这些是连续的数值。输出将基于模型在训练阶段所学到的内容。

回归模型利用输入数据特征(自变量)及其对应的连续数值输出值(因变量或结果变量)来学习输入与对应输出之间的特定关联。

回归分析中使用的术语

在深入深入之前,让我们先了解回归分析中使用的一些基本术语。以下是一些重要的术语------

  • 自变量 − 这些变量用于预测因变量的值。这些也被称为预测变量。在数据集中,这些特征被表示为特征
  • 因变量 − 这些变量是我们希望预测其值的变量。这些是回归分析的主要因素。在数据集中,这些变量被表示为目标变量
  • 回归线 − 它是一条直线或曲线,回归器绘制以最佳拟合数据点。
  • 过拟合和欠拟合 − 过拟合是指回归模型在训练数据集上表现良好,但与测试数据集不兼容。这也被称为高方差问题。欠拟合是指模型在训练数据集中表现不佳。这也被称为高偏置问题。
  • 离群值------这些是与其他数据模式不符的数据点。它们是数据集中极高或极低的数值。
  • 多重共线性 − 多重共线性发生在自变量(特征)之间存在依赖关系时。

回归是如何运作的?

机器学习中的回归是一种监督式学习。基本上,回归是一种统计技术,用于寻找因变量和自变量之间的关系。为了在机器学习中实现回归,回归算法会用带标签的数据集进行训练。数据集包含特征(自变量)和目标值(因变量)。

在训练阶段,回归算法学习自变量(预测变量)与因变量(目标变量)之间的关系。

回归模型基于训练过程中预测变量与目标之间的学习关系,预测新的数值。

机器学习中的回归类型

一般来说,回归方法的分类基于三个指标------自变量数量、因变量类型和回归线的形状。

机器学习中使用了许多回归技术。然而,以下常见的回归类型如下 −

  • 线性回归
  • 逻辑回归
  • 多项式回归
  • 套索回归
  • 脊回归
  • 决策树回归
  • 随机森林回归
  • 支持向量回归

让我们详细讨论机器学习中的每种回归类型。

1. 线性回归

线性回归是机器学习中最常用的回归模型。它可以定义为分析因变量与一组自变量之间的线性关系的统计模型。变量之间的线性关系意味着当一个或多个自变量的值发生变化(增加或减少)时,因变量的值也会相应变化(增加或减少)。

线性回归进一步分为两个子类别:简单线性回归和多元线性回归(也称为多元线性回归)。

在简单线性回归中,使用单一自变量(或预测变量)来预测因变量。

数学上,简单线性回归可以表示为 −

Y 是我们试图预测的因变量。

X 是我们用于进行预测的自变量。

m 是回归线的斜率,代表 X 对 Y 产生的影响。

b 是一个被称为 Y 轴截距的常数。若 X=0,则 Y 的值等于 b。

在多线性回归中,使用多个自变量来预测因变量。

我们将在接下来的章节中更详细地学习线性回归。

2. 逻辑回归

逻辑回归是一种流行的机器学习算法,用于预测事件发生的概率。

逻辑回归是一种广义线性模型,其中目标变量遵循伯努利分布。逻辑回归使用逻辑函数或logit函数来学习自变量(预测变量)和因变量(目标变量)之间的关系。

它将因变量映射为自变量的S形函数。S形函数产生的概率介于0到1之间。概率值用于估计因变量的值。

它主要用于二元分类问题,其中目标变量具有两个类别。它对输入特征下的目标变量的概率进行建模,并预测概率最高的类别。

3. 多项式回归

多项式线性回归是一种回归分析,其中将自变量与因变量之间的关系建模为n次多项式函数。多项式回归允许捕获变量之间建立更复杂的关系,超越简单线性回归和多重线性回归中的线性关系。

多项式回归是最广泛使用的非线性回归之一。它非常有用,因为它可以模拟预测变量与目标之间的非线性关系,同时对离群值也更敏感。

4. 套索回归

套索回归是一种正则化技术,利用惩罚防止过拟合并提高回归模型的准确性。它执行L1正则化。它通过添加与系数绝对值求和等价的惩罚(收缩量)来修改损失函数。

套索回归常用于处理高维度和高相关性数据。

5. 脊回归

脊回归是一种用于机器学习的统计技术,用于防止线性回归模型中的过拟合。它被用作执行L2正则化的正则化技术。它通过加上相当于系数大小平方的惩罚(收缩量)来修改损失或成本函数。

脊回归有助于降低模型复杂度并提高预测准确性。它在开发许多高权重参数方面非常有用。它也非常适合特征变量多于观测值数量的数据集。

它还修正了回归分析中的多重共线性。多重共线性发生在自变量相互依赖时。

6. 决策树回归

决策树回归使用决策树算法来预测数值。决策树算法是一种监督机器学习算法,既可用于分类,也可用于回归。

它用于预测数值或连续变量。它的工作原理是根据输入特征的值将数据拆分为更小的子集,并为每个子集分配一个数值。因此,它逐步发展出决策树

该树拟合局部线性回归,近似一条曲线,每片叶子代表一个数值。该算法试图减少每个子节点的均方误差,从而衡量预测与原始目标的偏差程度。

决策树回归可用于预测股价或客户行为等。

7. 随机森林回归

随机森林回归是一种监督式机器学习算法,利用一组决策树来预测连续目标变量。它采用一种袋装技术,随机选择训练数据子集来构建更小的决策树。这些较小的模型被组合成一个随机森林模型,输出单一的预测值。

该技术通过结合多个决策树的预测,有助于提高准确性并减少方差。

8. 支持向量回归

支持向量回归(SVR)是一种利用支持向量机解决回归问题的机器学习算法。它可以学习输入数据(特征变量)与输出数据(目标值)之间的非线性关系。

支持矢量回归有许多优势。它既能处理数据集中的线性关系,也能处理非线性关系。它对异常值具有抵抗力。它具有很高的预测准确率。

回归模型的类型

回归模型有以下两种类型 −

简单回归模型 − 这是最基本的回归模型,预测由数据中的单一单变量特征构成。

多元回归模型 − 顾名思义,在该回归模型中,预测由数据的多个特征构成。

如何选择最佳回归模型?

你可以考虑性能指标、模型复杂度、可解释性等因素,选择最佳回归模型。使用均方误差(MSE)、平均绝对误差(MAE)、R平方等指标评估模型性能。比较不同模型的性能,如线性回归、决策树、随机森林等,选择性能指标最高、复杂度最低且可解释性最佳的模型。

回归评估指标

回归模型的常见评估/性能指标

  • 平均绝对误差(MAE)− 它是预测值与真实值绝对差的平均值。
  • 均方误差(MSE)− 它是实际值与估计值差值平方的平均值。
  • 中位绝对误差− 它是预测值与真实值绝对差的中位数。
  • 均方根误差(RMSE)− 它是均方误差(MSE)的平方根值。
  • R2(决定系数)配乐- 最佳可能分数为1.0,且可以为负(因为模型可以任意更差)。
  • 平均绝对百分比误差(MAPE)− 它是平均绝对误差(MAE)的百分比等价值。

回归在机器学习中的应用

机器学习回归算法的应用如下 −

预测或预测分析------回归的一个重要用途是预测或预测分析。例如,我们可以预测GDP、油价,或者简单来说,就是随着时间推移变化的定量数据。

**优化------**我们可以借助回归优化业务流程。例如,店长可以创建一个统计模型来了解顾客的高峰时段。

纠错------在商业中,做出正确决策与优化业务流程同样重要。回归不仅能帮助我们做出正确的决策,也能纠正已经实施的决策。

经济学 − 它是经济学中最常用的工具。我们可以利用回归来预测供给、需求、消费、库存投资等。

金融 − 金融公司总是关注最小化风险组合,并希望了解影响客户的因素。所有这些都可以通过回归模型进行预测。

在 Python 中构建回归器

回归器模型可以在 Python 中从零构建。Scikit-learn,一个用于机器学习的Python库,也可以用来构建Python中的回归器。

在下面的例子中,我们将构建一个基本的回归模型,它能拟合到数据的线性回归器。在 Python 中构建回归器所需的步骤如下 −

步骤1:导入必要的Python包

要用 scikit-learn 构建一个回归器,我们需要导入它和其他必要的包。我们可以通过以下脚本 − 导入

python 复制代码
import numpy as np
from sklearn import linear_model
import sklearn.metrics as sm
import matplotlib.pyplot as plt

步骤2:导入数据集

导入所需软件包后,我们需要一个数据集来构建回归预测模型。我们可以从sklearn数据集导入,或者根据需求使用其他数据集。我们将使用保存的输入数据。我们可以通过以下脚本导入 −

python 复制代码
input = r'C:\linear.txt'

接下来,我们需要加载这些数据。我们用的是np.loadtxt函数来加载。

python 复制代码
input_data = np.loadtxt(input, delimiter=',')
X, y = input_data[:, :-1], input_data[:, -1]

步骤3:将数据组织为训练和测试集

由于我们需要在未见数据上测试模型,因此我们将数据集分为两部分:训练集和测试集。以下命令将执行该任务 −

python 复制代码
training_samples = int(0.6 * len(X))
testing_samples = len(X) - num_training
X_train, y_train = X[:training_samples], y[:training_samples]
X_test, y_test = X[training_samples:], y[training_samples:]

步骤4:模型评估与预测

将数据分为训练和测试后,我们需要构建模型。我们将使用Scikit-learn的LineaRegression()函数来实现这一目的。执行命令后,会创建一个线性回归器对象。

python 复制代码
reg_linear = linear_model.LinearRegression()

接下来,用训练样本训练该模型如下 −

python 复制代码
reg_linear.fit(X_train, y_train)

现在,我们终于需要用测试数据做预测了。

python 复制代码
y_test_pred = reg_linear.predict(X_test)

步骤5:规划与可视化

预测后,我们可以借助以下脚本绘制和可视化 −

python 复制代码
plt.scatter(X_test, y_test, color = 'red')
plt.plot(X_test, y_test_pred, color = 'black', linewidth = 2)
plt.xticks(())
plt.yticks(())
plt.show()

输出

在上述输出中,我们可以看到数据点之间的回归线。

步骤6:性能计算

我们还可以通过以下多种性能指标计算回归模型的性能。

python 复制代码
print("Regressor model performance:")
print("Mean absolute error(MAE) =", round(sm.mean_absolute_error(y_test, y_test_pred), 2))
print("Mean squared error(MSE) =", round(sm.mean_squared_error(y_test, y_test_pred), 2))
print("Median absolute error =", round(sm.median_absolute_error(y_test, y_test_pred), 2))
print("Explain variance score =", round(sm.explained_variance_score(y_test, y_test_pred), 2))
print("R2 score =", round(sm.r2_score(y_test, y_test_pred), 2))

输出

复制代码
Regressor model performance:
Mean absolute error(MAE) = 1.78
Mean squared error(MSE) = 3.89
Median absolute error = 2.01
Explain variance score = -0.09
R2 score = -0.09
相关推荐
程序新视界20 小时前
为什么不建议基于Multi-Agent来构建Agent工程?
人工智能·后端·agent
AI360labs_atyun20 小时前
上海打出“开源”国际牌!2025重磅新政
人工智能·科技·学习·ai·开源
沛沛老爹20 小时前
Java泛型擦除:原理、实践与应对策略
java·开发语言·人工智能·企业开发·发展趋势·技术原理
Deepoch20 小时前
Deepoc具身模型:破解居家机器人“需求理解”难题
大数据·人工智能·机器人·具身模型·deepoc
AC赳赳老秦20 小时前
Python 爬虫进阶:DeepSeek 优化反爬策略与动态数据解析逻辑
开发语言·hadoop·spring boot·爬虫·python·postgresql·deepseek
浩瀚之水_csdn20 小时前
Python 三元运算符详解
开发语言·python
AiTop10020 小时前
英伟达Rubin芯片提前量产,物理AI“ChatGPT 时刻” 降临
人工智能·chatgpt
阿正的梦工坊20 小时前
Git Rebase 是什么?为什么需要它?
人工智能·git
檐下翻书17320 小时前
法律文书自动生成与逻辑校验
人工智能