【机器学习基础】机器学习入门核心算法:线性回归(Linear Regression)

在这里插入图片描述

机器学习入门核心算法:线性回归(Linear Regression)

    • 1. 算法逻辑
    • 2. 算法原理与数学推导
    • 3. 评估指标
    • 4. 应用案例
    • 5. 面试题
    • 6. 扩展分析
    • 总结

1. 算法逻辑

  • 核心思想
    通过线性方程拟合数据,最小化预测值与真实值的误差平方和,解决回归问题。
    示例:根据房屋面积和房间数量预测房价。

  • 算法流程

    1. 初始化模型参数(权重 θ \theta θ 和偏置 θ 0 \theta_0 θ0)。
    2. 计算预测值 y ^ = θ T X + θ 0 \hat{y} = \theta^T X + \theta_0 y^=θTX+θ0
    3. 计算损失函数(均方误差,MSE)。
    4. 通过梯度下降更新参数,最小化损失。
    5. 重复步骤2-4直至收敛。

2. 算法原理与数学推导

  • 数学基础
    基于最小二乘法,通过优化均方误差损失函数求解最优参数。

  • 关键公式推导

    • 假设函数
      h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n = θ T X h_\theta(x) = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + \dots + \theta_n x_n = \theta^T X hθ(x)=θ0+θ1x1+θ2x2++θnxn=θTX
    • 损失函数(MSE)
      J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta) = \frac{1}{2m} \sum_{i=1}^m \left( h_\theta(x^{(i)}) - y^{(i)} \right)^2 J(θ)=2m1i=1m(hθ(x(i))y(i))2
    • 梯度下降更新规则
      θ j : = θ j − α ∂ J ( θ ) ∂ θ j \theta_j := \theta_j - \alpha \frac{\partial J(\theta)}{\partial \theta_j} θj:=θjαθjJ(θ)
      其中:
      ∂ J ∂ θ j = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \frac{\partial J}{\partial \theta_j} = \frac{1}{m} \sum_{i=1}^m \left( h_\theta(x^{(i)}) - y^{(i)} \right) x_j^{(i)} θjJ=m1i=1m(hθ(x(i))y(i))xj(i)
      • 对偏置项 θ 0 \theta_0 θ0
        ∂ J ∂ θ 0 = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) \frac{\partial J}{\partial \theta_0} = \frac{1}{m} \sum_{i=1}^m \left( h_\theta(x^{(i)}) - y^{(i)} \right) θ0J=m1i=1m(hθ(x(i))y(i))
  • 闭式解(正规方程)
    当特征矩阵 X X X 可逆时,直接求解:
    θ = ( X T X ) − 1 X T y \theta = \left( X^T X \right)^{-1} X^T y θ=(XTX)1XTy

  • 超参数说明

    超参数作用示例值
    学习率 α \alpha α控制参数更新步长0.01
    迭代次数决定训练终止条件1000

3. 评估指标

指标公式特点
均方误差 (MSE) 1 m ∑ i = 1 m ( y i − y ^ i ) 2 \frac{1}{m} \sum_{i=1}^m \left( y_i - \hat{y}_i \right)^2 m1i=1m(yiy^i)2对异常值敏感,数值越小越好
平均绝对误差 (MAE)$$\frac{1}{m} \sum_{i=1}^m \lefty_i - \hat{y}_i \right
决定系数 ( R 2 R^2 R2) 1 − ∑ i = 1 m ( y i − y ^ i ) 2 ∑ i = 1 m ( y i − y ˉ ) 2 1 - \frac{\sum_{i=1}^m \left( y_i - \hat{y}_i \right)^2}{\sum_{i=1}^m \left( y_i - \bar{y} \right)^2} 1i=1m(yiyˉ)2i=1m(yiy^i)2越接近1表示模型解释力越强

4. 应用案例

  • 经典场景

    • 波士顿房价预测:根据房屋特征(房间数、犯罪率等)预测房价中位数。
    • 销售额预测:基于广告投入(电视、报纸、广播)预测产品销售额。
  • 实现代码片段

    # 使用Scikit-learn实现
    from sklearn.linear_model import LinearRegression
    from sklearn.metrics import mean_squared_error, r2_score# 训练模型
    model = LinearRegression()
    model.fit(X_train, y_train)# 预测与评估
    y_pred = model.predict(X_test)
    print("MSE:", mean_squared_error(y_test, y_pred))
    print("R²:", r2_score(y_test, y_pred))# 输出参数
    print("权重:", model.coef_)
    print("偏置:", model.intercept_)
    

5. 面试题

  • 理论类问题
    Q1:线性回归的假设条件是什么?
    答案

    1. 线性关系:特征与目标变量呈线性关系。
    2. 误差独立同分布:残差服从均值为0的正态分布,且相互独立。
    3. 同方差性:残差的方差恒定。
    4. 无多重共线性:特征之间不存在高度相关性。

    Q2:梯度下降和正规方程的区别是什么?
    答案

    • 梯度下降:迭代优化,适合大规模数据(时间复杂度 O ( m n 2 ) O(mn^2) O(mn2)),需调学习率。
    • 正规方程:直接求解解析解,适合小规模数据(时间复杂度 O ( n 3 ) O(n^3) O(n3)),要求 X T X X^T X XTX 可逆。
  • 编程类问题
    Q3:手写梯度下降实现线性回归

    def linear_regression_gd(X, y, alpha=0.01, epochs=1000):m, n = X.shapetheta = np.zeros(n)for _ in range(epochs):y_pred = X.dot(theta)error = y_pred - ygradient = (1/m) * X.T.dot(error)theta -= alpha * gradientreturn theta
    

6. 扩展分析

  • 算法变种

    变种改进点适用场景
    岭回归 (Ridge)加入L2正则化,防止过拟合特征多重共线性较强时
    Lasso回归加入L1正则化,自动特征选择高维稀疏数据
  • 与其他算法对比

    维度线性回归决策树回归
    可解释性高(权重明确)中等(树结构可解释)
    非线性拟合能力弱(需手动特征工程)强(自动处理非线性)
    训练速度快(闭式解或简单迭代)中等(需构建树结构)

总结

线性回归是机器学习入门核心算法,需重点掌握:

  1. 数学推导:损失函数、梯度下降、正规方程。
  2. 应用限制:假设条件不满足时(如非线性关系),需改用多项式回归或树模型。
  3. 面试考点:从理论假设到代码实现的全链路理解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/81905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机打电话时由对方DTMF响应切换多级IVR语音菜单(话术脚本与实战)

手机打电话时由对方DTMF响应切换多级IVR语音菜单 (话术脚本与实战) --本地AI电话机器人 上一篇:手机打电话时由对方DTMF响应切换多级IVR语音应答(二) 下一篇:手机打电话时由对方DTMF响应切换多级IVR语音…

flutter dart class语法说明、示例

🔹 Dart 中的 class 基本语法 class ClassName {// 属性(字段)数据类型 属性名;// 构造函数ClassName(this.属性名);// 方法返回类型 方法名() {// 方法体} }✅ 示例:创建一个简单的 Person 类 class Person {// 属性String name;…

Apollo10.0学习——planning模块(10)之依赖注入器injector_

好不好奇injector_是干什么用的?为什么planning每个模块都要初始化这个变量? 类功能概述 DependencyInjector(依赖注入器)是一个 集中管理规划模块关键数据和服务 的容器类。它通过提供统一的访问接口,解耦各个组件之…

关于vue彻底删除node_modules文件夹

Vue彻底删除node_modules的命令 vue的node_modules文件夹非常大,常规手段根本无法删除. 解决方法: 在node_modules文件夹所在的路径运行命令窗口,并执行下面的命令. npm install rimraf -g rimraf node_modules说明: npm install rimraf -g 该命令是安装 node…

MCTS-RAG:通过树搜索重塑小模型中的检索增强生成(RAG)

https://arxiv.org/pdf/2503.20757v1这篇论文提出了MCTS-RAG框架,用于解决小型语言模型在知识密集型任务上的推理能力不足问题。具体来说, ​​MCTS-RAG框架​​:MCTS-RAG通过迭代地精炼检索和推理过程来工作。给定一个查询,它探…

数据结构:绪论之时间复杂度与空间复杂度

作者主页 失踪人口回归,陆续回三中。 开辟文章新专栏——数据结构,恳请各位大佬批评指正! 文章目录 作者主页 数据结构的基本知识数据:数据元素:数据对象:数据类型:数据结构:逻辑结…

位图算法——判断唯一字符

这道题有多种解法,可以创建hash数组建立映射关系判断,但不用新的数据结构会加分,因此我们有“加分”办法——用位图。 我们可以创建一个整型变量(32位)而一共才26个字母,所以我们只要用到0-25位即可&#…

深度学习之-目标检测算法汇总(超全面)

YOLO目标检测改进 YOLO V1- YOLO V10: 点这进入https://www.researchgate.net/publication/381470743_YOLOv1_to_YOLOv10_A_comprehensive_review_of_YOLO_variants_and_their_application_in_the_agricultural_domain YOLO V11: YOLO11 🚀Ultralytics YOLO11 &…

软考中级软件设计师——计算机网络篇

一、计算机网络体系结构 1.OSI七层模型 1. 物理层(Physical Layer) 功能:传输原始比特流(0和1),定义物理介质(如电缆、光纤)的电气、机械特性。 关键设备:中继器&#…

高等数学-空间中的曲线与曲面

一、 向量的数量积: 直线与直线的夹角: 直线与平面的夹角: 平面与平面的夹角(锐角): 方向余弦: 注:空间向量与坐标轴的夹角定义为向量与坐标轴正方向的夹角 例1: 二、 1、z0所…

使用计算机视觉实现目标分类和计数!!超详细入门教程

什么是物体计数和分类 在当今自动化和技术进步的时代,计算机视觉作为一项关键工具脱颖而出,在物体计数和分类任务中提供了卓越的功能。 无论是在制造、仓储、零售,还是在交通监控等日常应用中,计算机视觉系统都彻底改变了我们感知…

javaweb-html

1.交互流程: 浏览器向服务器发送http请求,服务器对浏览器进行回应,并发送字符串,浏览器能对这些字符串(html代码)进行解释; 三大web语言:(1)html&#xff1a…

图漾相机错误码解析

文章目录 1.相机错误码汇总2.常见报错码2.1 -1001报错2.1.1 没有找到相机2.1.2 SDK没有进行初始化2.1.3 相机不支持Histo属性 2.2 -1005报错2.2.1 跨网段打开相机2.2.2 旧版本SDK在软触发失败后提示的报错2.2.3 相机初始化上电时报错2.2.4 USB相机被占用 2.3 -1009报错2.3.1 相…

18. 结合Selenium和YAML对页面继承对象PO的改造

18. 结合Selenium和YAML对页面继承对象PO的改造 一、架构改造核心思路 1.1 改造前后对比 #mermaid-svg-ziagMhNLS5fIFWrx {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ziagMhNLS5fIFWrx .error-icon{fill:#5522…

将VMware上的虚拟机和当前电脑上的Wifi网卡处在同一个局域网下,实现同一个局域网下实现共享

什么是桥接模式:桥接模式(Bridging Mode)是一种网络连接模式,常用于虚拟机环境中,将虚拟机的虚拟网络适配器直接连接到主机的物理网络适配器上,使虚拟机能够像独立的物理设备一样直接与物理网络通信 1.打开…

gitee错误处理总结

背景 如上图,根据图片中的 Git 错误提示,我们遇到的问题是 ​本地分支落后于远程分支,导致 git push 被拒绝。 ​问题原因​ 远程仓库的 master 分支有其他人推送的新提交,而您的本地 master 分支未同步这些更新(即本…

如何提高独立服务器的安全性?

独立服务器相对于其它服务器来说,整体的硬件设备都是独立的同时还有着强大的服务器性能,其中CPU设备能够决定着服务器的运算能力,所以独立服务器的安全性受到企业格外的重视,严重的话会给企业造成巨大的资金损失。 那么&#xff0…

Spark,集群搭建-Standalone

以下是 Spark Standalone 集群搭建 的详细步骤(基于 Linux 系统,以伪分布式为例): 一、环境准备 1. 硬件要求 - 至少 2 台节点(1 台 Master,1 台 Worker,可扩展)。 - 每节点配置…

如何在WordPress中使用ChatGPT

ChatGPT 自 2022 年 11 月问世以来,极大地影响了我们的创作方式。ChatGPT 可以帮助您制作大纲、标题、段落或完整的博客文章,各地的数字创作者都在热衷于使用人工智能(AI)创建内容。随着人工智能的不断发展,我们看到了…

spring5-配外部文件-spEL-工厂bean-FactoryBean-注解配bean

spring配外部文件 我们先在Spring里配置一个数据源 1.导c3p0包,这里我们先学一下hibernate持久化框架&#xff0c;以后用mybites. <dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>5.2.…