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

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


目录

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

介绍

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

了解监督学习

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

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

  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
如何解决Linux终端中查看Python版本时遇到的权限问题?如何解决Linux终端中查看Python版本时遇到的权限问题?Apr 01, 2025 pm 05:09 PM

Linux终端中查看Python版本时遇到权限问题的解决方法当你在Linux终端中尝试查看Python的版本时,输入python...

我如何使用美丽的汤来解析HTML?我如何使用美丽的汤来解析HTML?Mar 10, 2025 pm 06:54 PM

本文解释了如何使用美丽的汤库来解析html。 它详细介绍了常见方法,例如find(),find_all(),select()和get_text(),以用于数据提取,处理不同的HTML结构和错误以及替代方案(SEL)

python对象的序列化和避难所化:第1部分python对象的序列化和避难所化:第1部分Mar 08, 2025 am 09:39 AM

Python 对象的序列化和反序列化是任何非平凡程序的关键方面。如果您将某些内容保存到 Python 文件中,如果您读取配置文件,或者如果您响应 HTTP 请求,您都会进行对象序列化和反序列化。 从某种意义上说,序列化和反序列化是世界上最无聊的事情。谁会在乎所有这些格式和协议?您想持久化或流式传输一些 Python 对象,并在以后完整地取回它们。 这是一种在概念层面上看待世界的好方法。但是,在实际层面上,您选择的序列化方案、格式或协议可能会决定程序运行的速度、安全性、维护状态的自由度以及与其他系

Python中的数学模块:统计Python中的数学模块:统计Mar 09, 2025 am 11:40 AM

Python的statistics模块提供强大的数据统计分析功能,帮助我们快速理解数据整体特征,例如生物统计学和商业分析等领域。无需逐个查看数据点,只需查看均值或方差等统计量,即可发现原始数据中可能被忽略的趋势和特征,并更轻松、有效地比较大型数据集。 本教程将介绍如何计算平均值和衡量数据集的离散程度。除非另有说明,本模块中的所有函数都支持使用mean()函数计算平均值,而非简单的求和平均。 也可使用浮点数。 import random import statistics from fracti

如何使用TensorFlow或Pytorch进行深度学习?如何使用TensorFlow或Pytorch进行深度学习?Mar 10, 2025 pm 06:52 PM

本文比较了Tensorflow和Pytorch的深度学习。 它详细介绍了所涉及的步骤:数据准备,模型构建,培训,评估和部署。 框架之间的关键差异,特别是关于计算刻度的

用美丽的汤在Python中刮擦网页:搜索和DOM修改用美丽的汤在Python中刮擦网页:搜索和DOM修改Mar 08, 2025 am 10:36 AM

该教程建立在先前对美丽汤的介绍基础上,重点是简单的树导航之外的DOM操纵。 我们将探索有效的搜索方法和技术,以修改HTML结构。 一种常见的DOM搜索方法是EX

哪些流行的Python库及其用途?哪些流行的Python库及其用途?Mar 21, 2025 pm 06:46 PM

本文讨论了诸如Numpy,Pandas,Matplotlib,Scikit-Learn,Tensorflow,Tensorflow,Django,Blask和请求等流行的Python库,并详细介绍了它们在科学计算,数据分析,可视化,机器学习,网络开发和H中的用途

如何使用Python创建命令行接口(CLI)?如何使用Python创建命令行接口(CLI)?Mar 10, 2025 pm 06:48 PM

本文指导Python开发人员构建命令行界面(CLIS)。 它使用Typer,Click和ArgParse等库详细介绍,强调输入/输出处理,并促进用户友好的设计模式,以提高CLI可用性。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

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

禅工作室 13.0.1

禅工作室 13.0.1

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

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器