线性回归、正规方程和梯度下降法

news2024/10/7 6:37:56

一、线性回归简介

1.定义与公式

线性回归是利用回归方程(函数)一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。

  • 特点:只有一个自变量的情况称为单变量回归,多余一个自变量情况的叫做多元回归

  • 通用公式:
    y = β 0 + β 1 x 1 + β 2 x 2 + . . . + β p x p + ε y = β₀ + β₁x₁ + β₂x₂ + ... + βₚxₚ + ε y=β0+β1x1+β2x2+...+βpxp+ε
    其中,y是因变量(目标值),x₁、x₂、…、xₚ是自变量(特征值),β₀、β₁、β₂、…、βₚ是模型的参数(权重),ε是误差项,表示模型预测值与实际观测值之间的差异,它是一个随机项,表示模型无法完全准确地解释因变量的变异性。

  • 举例:

    • 期末成绩 = 0.7 × 考试成绩 + 0.3 × 平时成绩
    • 房子价格 = 0.02 × 中心区域的距离 + 0.04 × 城市一氧化氮浓度 + (-0.12 × 自住房平均房价)+ 0.254 × 城镇犯罪率

    上面两个例子,可以看到特征值与目标值之间建立了一个关系,这个关系可以理解为线性模型

2.线性回归的特征与目标的关系分析

线性回归当中主要有两种模型,一种是线性关系,另一种是非线性关系

  • 线性关系:

    • 单变量线性关系:

      在这里插入图片描述

    • 多变量线性关系:

      在这里插入图片描述

  • 非线性关系:

    在这里插入图片描述

3.线性回归应用场景
  • 房价预测
  • 销售额度预测
  • 贷款额度预测

二、线性回归的损失和优化

在这里插入图片描述

绿色线是预测的结果,红色线是真实结果。

1.损失函数(又称最小二乘法)
  • 公式:
    L ( β 0 , β 1 , . . . , β p ) = Σ i ( y i − ( β 0 + β 1 x 1 i + β 2 x 2 i + . . . + β p x p i ) ) 2 L(β₀, β₁, ..., βₚ) = Σᵢ(yᵢ - (β₀ + β₁x₁ᵢ + β₂x₂ᵢ + ... + βₚxₚᵢ))² L(β0,β1,...,βp)=Σi(yi(β0+β1x1i+β2x2i+...+βpxpi))2
    其中,L表示损失函数,yᵢ表示第i个样本的实际观测值,x₁ᵢ、x₂ᵢ、…、xₚᵢ 表示第 i 个样本的自变量(输入变量),β₀、β₁、β₂、…、βₚ表示模型的参数(权重)。

    如何去减少这个损失,使我们预测的结果更加准确些?这里可以通过一些优化算法去优化(其实是数学当中的求导功能)回归的总损失。

2.优化算法

如何去求模型当中的参数β,使得损失最小?(目的是找到最小损失对应的参数值β)

  • 线性回归经常使用的两种优化算法
    • 正规方程
    • 梯度下降法

三、正规方程和梯度下降法

1.正规方程

正规方程(Normal Equation)是一种通过解析方法求解线性回归模型参数的方法。它是基于最小化平方损失函数的线性回归问题的闭式解。

  • 公式:
    𝒃 = ( 𝑿 T 𝑿 ) − 1 𝑿 T 𝒚 𝒃 = (𝑿ᵀ𝑿)⁻¹ 𝑿ᵀ𝒚 b=(XTX)1XTy
    其中,𝑿是输入特征矩阵,包含每个样本的自变量值,𝒚是观测值向量,包含每个样本的因变量值,𝒃是参数向量,包含线性回归模型的参数估计值。

  • 举例:

    在这里插入图片描述

    运用正规方程方法求解参数:

    在这里插入图片描述

  • 正规方程的API

    • sklearn.linear_model.LinearRegression(fit_intercept=True)
      • 参数fit_intercept:是否计算偏置
    • 属性:
      • LinearRegression.coef_:回归系数
      • LinearRegression.intercept:偏置
  • 正规方程的优点和缺点

    • 优点:

      它能够一次性计算出最佳参数估计值,而无需使用迭代算法进行优化。

    • 缺点:

      1. 正规方程的计算复杂度为O(𝑛³)(其中𝑛是特征的数量),当特征数量较大时,计算量可能会很大。
      2. 如果特征矩阵𝑿不满秩(即存在特征间的线性相关性),则正规方程求解过程中的矩阵求逆操作可能会导致数值不稳定性。

    因此,在实际应用中,对于较小规模的线性回归问题,正规方程是一种简单有效的求解方法。而对于较大规模的问题,或存在特征相关性的情况,通常使用迭代优化算法(如梯度下降)来求解线性回归模型的参数。

2.梯度下降法

梯度下降(Gradient Descent)是一种常用的迭代优化算法,用于求解各种机器学习和优化问题,包括线性回归。它通过迭代的方式逐步调整模型参数,以最小化损失函数 。

  • 公式:

    在这里插入图片描述

    θ表示参数向量 ,J(θ)表示损失函数关于小批量训练样本的参数θ的梯度, α表示学习率 ,α不能太大也不能太小,太小的话,可能导致迟迟走不到最低点,太大的话,会导致错过最低点。

    我们需要朝着下降最快的方向走,自然就是负的梯度的方向。所以梯度前加一个负号,就意味着朝着梯度相反的方向前进。

  • 基本思想:

    在每一次迭代中,计算损失函数关于参数的梯度(即导数),然后沿着负梯度的方向更新参数,以使损失函数逐渐减小。梯度指向了损失函数上升最快的方向,因此取负梯度方向可以使损失函数下降。

  • 具体步骤:

    1. 初始化参数:选择初始的参数值(权重)作为算法的起点。
    2. 计算梯度:根据当前参数值计算损失函数关于参数的梯度,即求解损失函数对各个参数的偏导数。
    3. 更新参数:沿着梯度的反方向调整参数值,使损失函数减小。这个调整的幅度由学习率(learning rate)控制,学习率决定了每一步参数更新的大小。
    4. 重复迭代:重复执行步骤2和步骤3,直到达到停止迭代的条件,例如达到最大迭代次数或损失函数下降的幅度小于某个阈值。

    通过不断地迭代更新参数,梯度下降算法会逐渐接近损失函数的最小值,从而得到最佳的参数估计值。

  • 梯度下降算法的API:

    • sklearn.linear_model.SGDRegression(loss=“squared_loss”,fit_intercept=True,learning_rate=“invscaling”,eta0=0.01)
    • 参数:
      • loss:损失模型,squared_loss指的是最小二乘法
      • fit_intercept:是否计算偏置
      • learning_rate: 学习率(learning rate)参数,用于控制每次参数更新的步长大小。
        • constant : 固定学习率,即每次迭代中保持学习率不变 。 学习率的初始值由eta0参数指定。
        • optimal : 根据数据自适应地调整学习率。 在训练过程中根据公式 eta = eta0 / pow(t, power_t) 进行更新,其中 t 是迭代次数,power_t 是控制学习率下降速度的指数。
        • invscaling : 根据迭代次数调整学习率 , 在训练过程中根据公式 eta = eta0 / pow(t, power_t) 进行更新,其中 t 是迭代次数,power_t 是控制学习率下降速度的指数。
    • 属性:
      • SGDRegression.coef_:回归系数
      • SGDRegression.intercept:偏置
  • 梯度下降法的优缺点:

    • 优点:
      1. 广泛适用性:梯度下降法可以用于各种机器学习和优化问题,特别适用于连续可微的目标函数。
      2. 全局最优解:在损失函数是凸函数的情况下,梯度下降法可以找到全局最优解。对于非凸函数,梯度下降法可以找到局部最优解。
      3. 直观易懂:梯度下降法的基本原理简单直观,容易理解和实现 。
      4. 可并行化:梯度下降法的迭代过程可以自然地并行化,可以加速计算过程。
    • 缺点:
      1. 学习率的选择:梯度下降法的性能很大程度上依赖于学习率的选择,过大或过小的学习率都可能导致算法性能下降。
      2. 局部最优解:梯度下降法对于非凸函数存在收敛到局部最优解的风险,可能无法找到全局最优解。
      3. 特征缩放的要求:梯度下降法对输入特征的尺度敏感,如果特征之间的尺度差异较大,可能需要进行特征缩放以获得更好的性能。
      4. 计算复杂度:对于大规模数据和复杂模型,梯度下降法的计算复杂度较高,需要大量的计算资源和时间。
3.正规方程和梯度下降的对比
正规方程梯度下降
不需要学习率需要选择学习率
一次运算得出需要迭代求解
需要计算方程,时间复杂度O(n3)特征数量较大可以使用
4.算法选择依据
  • 小规模数据
    • 正规方程:(不能解决拟合问题)
    • 岭回归
  • 大规模数据
    • 梯度下降法
      • 全梯度下降算法(FG)
      • 随机梯度下降算法(SG)
      • 小批量梯度下降算法(mini-batch)
      • 随即平均梯度下降算法(SAG)

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

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

相关文章

javascript基础三:谈谈 JavaScript 中的类型转换机制

一、概述 JS中有六种简单数据类型:undefined、null、boolean、string、number、symbol,以及引用类型:object 但是我们在声明的时候只有一种数据类型,只有到运行期间才会确定当前类型 let name y?allen:1上面代码中&#xff0c…

2023年NOC大赛创客智慧编程赛项Python 复赛模拟题(二)

题目来自:NOC 大赛创客智慧编程赛项Python 复赛模拟题(二) NOC大赛创客智慧编程赛项Python 复赛模拟题(二) 第一题: 编写一个成绩评价系统,当输入语文、数学和英语三门课程成绩时,输出三门课程总成绩及其等级。 (1)程序提示用户输入三个数字,数字分别表示语文、数学、…

ChatGPT-4 镜像网站推荐

文章目录 1. TomChat2. Ai Doge3. 二狗问答4. 小莓用AI5. Ora6. 未知名字7. VIVI-AI8. ATALK9. ChatGPT Web10 AIchatOS 什么是ChatGPT? ChatGPT,全称:聊天生成预训练转换器(英语:Chat Generative Pre-trained Transformer&#…

抓取领域相关论文及摘要

抓取规划问题是指确定物体与手指间的一系列接触位置,使得手指能抵抗任意外力且灵活操作物体的能力。传统的基于分析的抓取规划需要根据已知的被抓物体模型根据力闭合的条件判断抓取的好,这种方法只适合对已知的物体进行抓取。 然而日常生活中有很多相似…

MyBatis 中的动态 SQL 是什么?它的作用是什么?

MyBatis 中的动态 SQL 是一种允许在 SQL 语句中根据不同的条件动态生成 SQL 语句的技术。它可以根据不同的条件生成不同的 SQL 语句,从而达到灵活构建 SQL 语句的目的。动态 SQL 可以减少代码的重复度,提高代码的可维护性和可读性。 动态 SQL 使用 OGNL…

如何在MyBatis中处理复杂结果集映射关系

文章目录 前言一、 准备工作二、resultMap处理字段和属性的映射关系三、多对一映射0、级联方式处理映射关系1、使用association处理映射关系2、分步查询解决多对一关系(1) 查询员工信息(2) 根据员工所对应的部门id查询部门信息延迟加载 三、一对多的关系处理0、使用collection来…

6.1 SpringBoot解决跨域,我推荐这2种超实用方案

文章目录 前言一、验证跨域1. 添加index.html2. 增加/auth/test/cors接口3. IDEA启动多个springboot项目4. 验证POST方法5. 验证OPTIONS方法 二、拦截器方案定义拦截器注册拦截器,并指定拦截规则 三、过滤器方案总结最后 前言 在文章【2-2】中,我和你介…

获取企业服务超市企业信息

地址: 服务机构-苏州工业园区企业服务超市 import os from datetime import datetime from urllib import request import pandas as pd import re import requests from lxml import etree from bs4 import BeautifulSoup import csv import codecs# 20230521 根据…

learn_C_deep_13 (深刻理解宏定义)

目录 宏定义 数值宏常量 字符串宏常量 用定义充当注释符号宏 用 define 宏定义表达式 宏定义中的空格 宏定义 数值宏常量 在C语言中,宏定义可以用于定义数值宏常量。数值宏常量是一个值,在宏定义中用一个常量名称来表示,该值在后续的代…

计算机视觉的应用5-利用PCA降维方法实现简易人脸识别模型

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用5-利用PCA降维方法实现简易人脸识别模型,本文将介绍如何使用主成分分析(PCA)实现简易的人脸识别模型。首先,我们将简要介绍PCA的原理及其在人脸识别中…

26 KVM热迁移虚拟机

文章目录 26 KVM热迁移虚拟机26.1 总体介绍26.1.1 概述26.1.2 应用场景26.1.3 注意事项和约束限制 26.2 热迁移操作26.2.1 前提条件26.2.2 热迁移脏页率预测(可选)26.2.3 设置热迁移参数(可选)26.2.4 热迁移操作(共享存…

Linux:文本三剑客之awk

Linux:文本三剑客之awk 一、awk编辑器1.1 awk概述1.2 awk工作原理1.3 awk与sed的区别 二、awk的应用2.1 命令格式2.2 awk常见的内建变量(可直接用) 三、awk使用3.1 按行输出文本3.2 按字段输出文本3.3 通过管道、双引号调用 Shell 命令 一、a…

【模电实验】日光灯电路及功率因数的提高

实验4 日光灯电路及功率因数的提高 一、实验目的 1.理解提高功率因数的意义并掌握其方法。 2.掌握日光灯电路的联接。 二、原理说明 日光灯电路结构及工作原理 日光灯电路如图4-1所示,日光灯由灯管、镇流器和启辉器三部分组成。 &…

复制带随机指针的链表

💕“如果你关注自己已经拥有的,你就会拥有更多。如果你只关注自己没有得到的,你永远不会满足。” - 奥普拉温弗瑞💕 🐼作者:不能再留遗憾了🐼 🎆专栏:Java学习&#x1f3…

11. Redis集群(cluster)

11. Redis集群cluster 是什么?能干嘛?集群算法-分片-槽位slot官网出处redis集群的槽位slotredis集群的分片他两的优势slot槽位映射,一般业界有3种解决方案哈希取余分区—致性哈希算法分区3大步骤算法构建一致性哈希环redis服务器IP节点映射k…

【Python sqlite3】零基础也能轻松掌握的学习路线与参考资料

Python sqlite3是Python语言自带的轻量级关系数据库管理系统,它可以让我们在不需要额外的安装和配置下,使用SQLite数据库进行操作和管理。SQLite是一个功能强大的嵌入式数据库,它非常适合在轻量级应用程序中使用,如桌面应用程序、…

ROS学习(4)——launch文件的编写

对于一个复杂的系统,会有十几个、几十个甚至是上百个节点在运行,如果我们每次都是采取“打 开终端、运行 rosrun 指令”来启动应用程序,显得效率非常低。我们需要一个更方便的方式来启动系统。ROS 中提供了“使用 launch 文件 roslaunch”命令来完成系统的启动。具体的实现方法…

Java·Lambda

文章目录 ⚽️1 背景⚽️🍏1.1 Lambda表达式的语法🍏🍎1.2 函数式接口🍎 🏀2 Lambda表达式的基本使用🏀🍈2.1 语法精简🍈 🏈3 变量捕获🏈🏆3.1 匿…

Linux Audio (7) DAPM-4 Path/Route添加过程

DAPM-4 Path/Route添加过程 route分类:route转化为Pathcodec驱动add widgetMechine驱动add kcontrol route分类: 常规route {“sink”, NULL, “source”},其path->connect1 sink widget是Mixer {“Mixer”, name1, “source1”} {“Mixe…

chatgpt赋能Python-python88

Python88 简介 Python88 是一个优秀的 Python 开源库,它提供了许多有用的函数和工具,可用于创建高效的 Web 应用程序,简化数据分析、数据可视化以及机器学习和人工智能任务等。 Python88 帮助开发人员以更简单、更快捷的方式编写代码&#…