首页 后端开发 Python教程 线性回归:从理论到实践

线性回归:从理论到实践

Nov 07, 2024 am 10:43 AM

在本指南中,我们将解释线性回归及其工作原理,并逐步引导您完成整个过程。我们还将介绍特征缩放梯度下降,这是提高模型准确性的关键技术。无论您是分析业务趋势还是深入研究数据科学,本指南都是一个很好的起点。


目录

  • 简介
  • 理解监督学习
  • 什么是线性回归?
  • 简单线性回归
  • 多元线性回归
  • 成本函数
  • 特征缩放
  • 梯度下降
  • 简单线性回归的梯度下降
  • 多元线性回归的梯度下降

介绍

线性回归是一种简单而强大的工具,用于理解不同因素之间的关系并做出预测。例如,您可能想知道您的学习时间如何影响您的考试成绩,一栋房子根据其大小和位置可以卖多少钱,或者通过更多的广告如何增加销售额。线性回归使我们能够检查数据点(例如学习时间或广告支出)并绘制一条最能预测结果的直线,例如测试分数或销售数据。这项技术在许多领域都很有价值,可以帮助我们根据数据做出明智的决策。

了解监督学习

在深入研究线性回归之前,有必要了解监督学习,这是一种使用标记数据来训练模型的机器学习方法。在监督学习中,我们为模型提供训练示例,其中包括特征(输入变量)及其相应的标签(正确的输出)。

监督学习任务主要有两种类型:

  1. 回归:这可以从无限范围的可能输出中预测连续值。例如,根据各种特征预测房价。
  2. 分类:这与回归不同,它是从一组有限的可能类别中预测类别或类别。例如,确定电子邮件是否为垃圾邮件。

什么是线性回归?

线性回归是统计和机器学习中使用的一种监督学习方法,用于理解两类变量之间的关系:自变量(我们认为影响结果的因素)和因变量(我们想要预测的结果)。

目标是使用线性方程找到表示这种关系的最佳拟合线。通过分析标记数据(具有已知结果的数据),线性回归可以帮助我们了解自变量的变化如何影响因变量。

术语

Linear Regression : From Theory to Practice

简单线性回归

简单线性回归检查一个因变量和一个自变量之间的关系。它的目的是通过将直线拟合到数据点来对关系进行建模,可以用以下方程表示:

Linear Regression : From Theory to Practice

在此等式中:

  • y_hat(或 f_wb(x):因变量,表示预测的结果。这是我们根据自变量的输入估计的值。
  • b : 这是回归线的截距。它表示当自变量 x 为零时因变量 y 的期望值。截距允许回归线垂直调整以更好地拟合数据。
  • w : 自变量 x 的系数。该系数表示 x 变化一单位时因变量 y_hat 的变化量。正 w 表示随着 x 的增加,y_hat​也会增加,而负 w 表示反比关系。
  • x : 自变量,充当模型中的预测变量。该变量是用于估计 y_hat 表示的结果的输入。

多元线性回归

多元线性回归通过检查一个因变量与两个或多个自变量之间的关系扩展了简单线性回归的概念。这种方法使我们能够建模更复杂的关系并了解多种因素如何影响结果。

Linear Regression : From Theory to Practice

地点:

  • n : 特征总数(自变量)

成本函数

成本函数,也称为损失函数,量化模型生成的预期(真实)值和预测值之间的差异。它衡量模型在给定数据集上的表现。在简单线性回归中,最常用的成本函数是均方误差

Linear Regression : From Theory to Practice

地点:

  • m 是训练样本的数量
  • y_hat 是预测值
  • y 是实际值或期望值

特征缩放

特征缩放是数据预处理中的关键步骤,特别是在使用依赖距离计算或梯度下降优化的算法时,例如线性回归、逻辑回归和支持向量机。特征缩放的目的是标准化数据中自变量或特征的范围,以确保它们对模型的学习过程做出同等的贡献。

特征缩放的常用技术

均值归一化

均值归一化涉及调整特征值,使其均值为零。

Linear Regression : From Theory to Practice

特点

  • 数据范围约为 [−1,1] 或接近它。
  • 对异常值敏感,这可能会扭曲均值并影响标准化。

用例

  • 线性回归:有助于提高训练过程中的收敛性。
  • 基于梯度的算法:当数据以零为中心时,神经网络和其他基于梯度的算法通常收敛得更快。
  • 没有显着异常值的数据集:对于具有相似范围且没有极端异常值的数据集特别有效。

最小-最大缩放

最小-最大缩放是一种用于将特征重新缩放到固定范围的技术,通常为 [0,1] 或 [−1,1]。

Linear Regression : From Theory to Practice

特点

  • 固定范围:将数据缩放到特定范围,通常为[0,1]。
  • 对异常值的敏感性:它可能会受到异常值的显着影响,这可能会扭曲其他值的缩放。

用例

  • 图像处理:常用于卷积神经网络 (CNN) 等深度学习模型,其中像素值缩放为 [0,1]。
  • 基于距离的算法:对于依赖距离计算的算法至关重要,例如 k 最近邻 (KNN)、k 均值聚类和支持向量机 (SVM),以确保所有特征的贡献相等.
  • 基于树的模型:虽然与其他算法相比,基于树的模型(例如决策树和随机森林)不太重要,但它在特征尺度差异很大的情况下仍然可以提供帮助。

Z 分数标准化

Z 分数标准化,也称为标准缩放,将特征转换为均值为零和标准差为 1。此技术对于假设正态分布数据的算法特别有用。

Linear Regression : From Theory to Practice

地点:

  • sigma 是特征的标准差。

特点

  • 均值居中:将数据以零为中心。
  • 单位方差:确保标准差为一。
  • 对异常值的鲁棒性:与最小-最大缩放相比更鲁棒,但对极端异常值仍然敏感。

用例

  • 神经网络:在训练过程中增强性能并加速收敛。
  • 主成分分析 (PCA)线性判别分析 (LDA):这些技术需要确保所有功能同等贡献。
  • 高斯朴素贝叶斯:通过规范化输入特征来提高分类性能。

稳健的缩放

稳健缩放是一种基于中位数和四分位数范围 (IQR) 缩放特征的技术。此方法对于具有显着异常值的数据集特别有用,因为它减少了这些异常值对缩放值的影响。

Linear Regression : From Theory to Practice

地点:

  • IQR(x) 是特征的四分位数范围,定义为训练集第 75 个百分位数和第 25 个百分位数之间的差异

特点

  • 中位数居中:将数据围绕中位数而不是均值居中,使其更能适应异常值。
  • 四分位数范围 (IQR) :使用 IQR 缩放数据,IQR 是训练数据的第 75 个百分位数 (Q3) 和第 25 个百分位数 (Q1) 之间的差值。这有助于保持发行版的稳健性。

用例

  • 有异常值的数据:在存在异常值的情况下有效。
  • 金融:在可能包含极值的金融数据集中有用。
  • 环境数据:非常适用于测量结果差异很大的环境数据集。

梯度下降

梯度下降是一种强大的优化算法,用于训练机器学习模型,包括线性回归。其主要目标是最小化预期值和预测值之间的误差。

最初,成本函数的斜率在起始(任意)点可能很陡。随着算法迭代和更新参数,斜率逐渐减小,引导模型趋向成本函数的最低点,称为收敛点或局部最小值。在这个收敛点,成本函数达到最小值,表明模型预测尽可能接近实际值。一旦参数达到这一点,进一步的更新会对预测产生最小的变化,这表明优化过程已有效地识别了数据的最佳拟合参数。

该过程涉及以下关键步骤:

  1. 初始化:从模型参数的随机值开始(例如,截距 b 和系数 w)。
  2. 计算梯度:计算成本函数相对于模型参数的梯度。这个梯度代表了成本函数的变化方向和速率。
  3. 更新参数 :向梯度相反方向调整模型参数,以减少误差。更新规则由下式给出:
  4. 迭代:重复该过程,直到成本函数的变化最小或达到指定的迭代次数。

提示:绘制迭代(x 轴)与成本(y 轴)的关系图。如果绘图显示出平滑的下降趋势,则您的实现可能是正确的。

Linear Regression : From Theory to Practice

梯度下降的类型

批量梯度下降

  • 优点:由于它使用整个数据集,因此可以提供稳定且准确的梯度估计。它可以直接收敛到凸函数的全局最小值。
  • 缺点:对于大型数据集来说可能非常慢,因为它在每次迭代中处理所有样本。
  • 用例:通常用于数据集足够小以适合内存的场景,例如表格数据的线性回归或逻辑回归。

随机梯度下降(SGD)

  • 优点:更新速度更快,因为它一次处理一个样本,这可以导致更快的收敛。由于其固有的噪声,它可以帮助摆脱局部极小值。
  • 缺点:收敛性比较不稳定,可能会在最小值附近振荡,导致稳定性较差。
  • 用例:常用于在线学习场景、实时预测,或者处理无法完整处理的大型数据集,例如在图像数据上训练神经网络。

小批量梯度下降(MBD)

  • 优点:结合了批量梯度下降和随机梯度下降的优点。它比批量梯度下降收敛得更快,比 SGD 收敛更稳定。它还可以利用矢量化来实现高效计算。
  • 缺点:选择小批量的大小可能具有挑战性,并且可能会影响收敛速度和稳定性。
  • 用例:经常用于深度学习应用程序,特别是在大型数据集上进行训练时,例如卷积神经网络(CNN)或自然语言处理模型中的图像分类任务。

简单线性回归的梯度下降

简单线性回归的梯度下降步骤

  1. 初始化 从模型参数的初始值开始。这些值可以随机选择或设置为零。

Linear Regression : From Theory to Practice

  1. 计算梯度 计算成本函数相对于模型参数的梯度。这个梯度代表了成本函数的变化方向和速率。

Linear Regression : From Theory to Practice

Linear Regression : From Theory to Practice

  1. 更新参数 在梯度相反的方向调整模型参数以减少误差。更新规则由下式给出:

Linear Regression : From Theory to Practice

Linear Regression : From Theory to Practice

哪里:

  • J(w, b) 是成本函数,即上面使用的均方误差 (MSE)。
  • Alpha 是学习率,一个介于 0 和 1 之间的小正数。它控制梯度下降到达收敛点或局部最小值所需的步长。

提示:从较小的学习率(例如 0.01)开始,然后逐渐增加。如果成本平稳下降,那就是一个不错的价格。如果它波动或发散,请降低学习率。学习率太大会导致梯度下降超调,永远达不到最小值,并且无法收敛。

  1. 迭代:重复该过程,直到成本函数的变化最小或达到指定的迭代次数。

简单线性回归的梯度下降的 Python 实现

简单线性回归的梯度下降的 Python 实现

多元线性回归的梯度下降

多元线性回归的梯度下降步骤

  1. 初始化 从每个参数的随机值开始,包括每个特征的截距 b 和权重 w。

Linear Regression : From Theory to Practice

  1. 计算梯度 计算成本函数相对于模型参数的梯度。

Linear Regression : From Theory to Practice

Linear Regression : From Theory to Practice

矢量形式

Linear Regression : From Theory to Practice

Linear Regression : From Theory to Practice

地点:

  • x_subscript_j_superscript_i 是第 i 个训练示例的第 j_ 个特征
  • x_superscript_T 是向量 x
  • 的转置
  1. 更新参数 在梯度相反的方向调整模型参数以减少误差。更新规则由下式给出:

Linear Regression : From Theory to Practice

  1. 迭代 重复该过程,直到成本函数的变化最小或达到指定的迭代次数。

简单线性回归的梯度下降的 Python 实现

简单线性回归的梯度下降的 Python 实现


结论

恭喜!!?在这篇文章中,我们探讨了线性回归和多元线性回归的基础知识,介绍了实现梯度下降的过程,并讨论了用于优化模型性能的特征缩放等关键技术。通过了解如何初始化模型参数、计算梯度和迭代更新权重,您现在已经准备好实施线性回归算法并提高其在现实数据集上的性能。

无论您是使用简单的线性回归还是处理多个特征的复杂性,掌握梯度下降并掌握其核心原理都将显着增强您开发准确高效的机器学习模型的能力。不断尝试,完善你的技能,拥抱学习过程——这和结果本身一样重要!

请继续关注有关机器学习技术和 Web 开发主题的更多见解。继续探索和构建更智能的模型,快乐学习! ??

让我们在 LinkedIn 上联系?

“本文最初发布于 Medium,我在这里分享了更多关于数据分析、机器学习和编程的见解。欢迎查看并关注我以获取更多内容!”

请点赞、分享和关注?.

请随时在评论部分提出任何问题 - 我会及时、彻底地回复您的询问。热烈欢迎您的疑问,我们将得到迅速、全面的答复。 ❤️

以上是线性回归:从理论到实践的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何在使用 Fiddler Everywhere 进行中间人读取时避免被浏览器检测到? 如何在使用 Fiddler Everywhere 进行中间人读取时避免被浏览器检测到? Apr 02, 2025 am 07:15 AM

使用FiddlerEverywhere进行中间人读取时如何避免被检测到当你使用FiddlerEverywhere...

在Linux终端中使用python --version命令时如何解决权限问题? 在Linux终端中使用python --version命令时如何解决权限问题? Apr 02, 2025 am 06:36 AM

Linux终端中使用python...

如何在10小时内通过项目和问题驱动的方式教计算机小白编程基础? 如何在10小时内通过项目和问题驱动的方式教计算机小白编程基础? Apr 02, 2025 am 07:18 AM

如何在10小时内教计算机小白编程基础?如果你只有10个小时来教计算机小白一些编程知识,你会选择教些什么�...

如何绕过Investing.com的反爬虫机制获取新闻数据? 如何绕过Investing.com的反爬虫机制获取新闻数据? Apr 02, 2025 am 07:03 AM

攻克Investing.com的反爬虫策略许多人尝试爬取Investing.com(https://cn.investing.com/news/latest-news)的新闻数据时,常常�...

Python 3.6加载pickle文件报错ModuleNotFoundError: No module named '__builtin__'怎么办? Python 3.6加载pickle文件报错ModuleNotFoundError: No module named '__builtin__'怎么办? Apr 02, 2025 am 06:27 AM

Python3.6环境下加载pickle文件报错:ModuleNotFoundError:Nomodulenamed...

使用Scapy爬虫时,管道文件无法写入的原因是什么? 使用Scapy爬虫时,管道文件无法写入的原因是什么? Apr 02, 2025 am 06:45 AM

使用Scapy爬虫时管道文件无法写入的原因探讨在学习和使用Scapy爬虫进行数据持久化存储时,可能会遇到管道文�...

See all articles