机器学习算法——线性回归与非线性回归

news2024/11/20 7:18:12

目录

    • 1. 梯度下降法
      • 1.1 一元线性回归
      • 1.2 多元线性回归
      • 1.3 标准方程法
      • 1.4 梯度下降法与标准方程法的优缺点
    • 2. 相关系数与决定系数

1. 梯度下降法

1.1 一元线性回归

定义一元线性方程
y = ω x + b y=\omega x+b y=ωx+b
则误差(残差)平方和
C ( ω , b ) = ∑ i = 1 n ( y i ^ − y i ) 2 C(\omega,b)=\sum_{i=1}^n(\hat{y_i}-y_i)^2 C(ω,b)=i=1n(yi^yi)2

C ( ω , b ) = ∑ i = 1 n ( ω x i + b − y i ) 2 C(\omega,b)=\sum_{i=1}^n(\omega x_i+b-y_i)^2 C(ω,b)=i=1n(ωxi+byi)2
为方便计算,常写为如下形式
C ( ω , b ) = 1 2 n ∑ i = 1 n ( ω x i + b − y i ) 2 C(\omega,b)=\frac{1}{2n}\sum_{i=1}^n(\omega x_i+b-y_i)^2 C(ω,b)=2n1i=1n(ωxi+byi)2
其中, y i y_i yi为真实值, y i ^ \hat{y_i} yi^为预测值。
若用一元线性方程拟合上面的数据集,那么最佳的拟合直线方程需满足 C ( ω , b ) C(\omega,b) C(ω,b)最小,即使得真实值到直线竖直距离的平方和最小。因此需要求解使得 C ( ω , b ) C(\omega,b) C(ω,b)最小的参数 ω \omega ω b b b,即 min ⁡ ω , b C ( ω , b ) \min_{\omega,b}C(\omega,b) ω,bminC(ω,b)
梯度下降公式
ω : = ω − α ∂ C ( ω , b ) ∂ ω = ω − α 1 n ∑ i = 1 n ( ω x i + b − y i ) 2 x i \omega:=\omega-\alpha \frac{\partial C(\omega,b)}{\partial \omega}=\omega-\alpha \frac{1}{n}\sum_{i=1}^n(\omega x_i+b-y_i)^2x_i ω:=ωαωC(ω,b)=ωαn1i=1n(ωxi+byi)2xi
b : = b − α ∂ C ( ω , b ) ∂ b = b − α 1 n ∑ i = 1 n ( ω x i + b − y i ) 2 b:=b-\alpha \frac{\partial C(\omega,b)}{\partial b}=b-\alpha \frac{1}{n}\sum_{i=1}^n(\omega x_i+b-y_i)^2 b:=bαbC(ω,b)=bαn1i=1n(ωxi+byi)2
其中 α \alpha α为步长(学习率), : = := :=表示赋值操作。
梯度下降基本步骤

  1. 初始化 ω \omega ω b b b(常取0)
  2. 不断改变 ω \omega ω b b b,直到 C ( ω , b ) C(\omega,b) C(ω,b)到达一个全局最小值,或局部极小值。

下图使用梯度下降能到达局部最小值
在这里插入图片描述
下图使用梯度下降能到达全局最小值
在这里插入图片描述


下图中,将 θ 1 \theta1 θ1看成 ω \omega ω J ( θ 1 ) J(\theta 1) J(θ1)看成 C ( ω , b ) C(\omega,b) C(ω,b)。则

  • 在第一个点处, ∂ C ( ω , b ) ∂ ω \frac{\partial C(\omega,b)}{\partial \omega} ωC(ω,b)小于0,根据梯度下降公式,此时 ω \omega ω的值会增大,即往代价函数最小值的方向靠近。
  • 在第三个点处, ∂ C ( ω , b ) ∂ ω \frac{\partial C(\omega,b)}{\partial \omega} ωC(ω,b)大于0,根据梯度下降公式,此时 ω \omega ω的值会减小,即往代价函数最小值的方向靠近。
    在这里插入图片描述

1.2 多元线性回归

定义多元线性方程
y = ω 1 x 1 + ω 2 x 2 + . . . + ω n x n + b y=\omega_1 x_1+\omega_2 x_2+...+\omega_n x_n+b y=ω1x1+ω2x2+...+ωnxn+b
误差平方和
C ( ω 1 , . . . , ω n , b ) = 1 2 n ∑ i = 1 n ( y ^ ( x i ) − y i ) 2 C(\omega_1,...,\omega_n,b)=\frac{1}{2n}\sum_{i=1}^n(\hat{y}(x^i)-y^i)^2 C(ω1,...,ωn,b)=2n1i=1n(y^(xi)yi)2
注: y ^ ( x i ) \hat{y}(x^i) y^(xi)为预测值, y i y^i yi为真实值,这里的 x i x^i xi表示的是第 i i i个数据(包含多列属性)。

由1.1可得
b : = b − α 1 n ∑ i = 1 n ( y ^ ( x i ) − y i ) 2 x 0 i b:=b-\alpha \frac{1}{n}\sum_{i=1}^n(\hat{y}(x^i)-y^i)^2x_0^i b:=bαn1i=1n(y^(xi)yi)2x0i
这里 x 0 i = 1 x^i_0=1 x0i=1,以实现格式统一。
ω 1 : = ω 1 − α 1 n ∑ i = 1 n ( y ^ ( x i ) − y i ) 2 x 1 i \omega_1:=\omega_1-\alpha \frac{1}{n}\sum_{i=1}^n(\hat{y}(x^i)-y^i)^2x^i_1 ω1:=ω1αn1i=1n(y^(xi)yi)2x1i
ω 2 : = ω 2 − α 1 n ∑ i = 1 n ( y ^ ( x i ) − y i ) 2 x 2 i \omega_2:=\omega_2-\alpha \frac{1}{n}\sum_{i=1}^n(\hat{y}(x^i)-y^i)^2x^i_2 ω2:=ω2αn1i=1n(y^(xi)yi)2x2i
. . . ... ...
ω n : = ω n − α 1 n ∑ i = 1 n ( y ^ ( x i ) − y i ) 2 x n i \omega_n:=\omega_n-\alpha \frac{1}{n}\sum_{i=1}^n(\hat{y}(x^i)-y^i)^2x^i_n ωn:=ωnαn1i=1n(y^(xi)yi)2xni
改写为矢量版本
y = ω T x y=\omega ^Tx y=ωTx
ω : = ω − α 1 n X T ( y ^ ( x ) − y ) \omega:=\omega-\alpha \frac{1}{n} X^T(\hat{y}(x)-y) ω:=ωαn1XT(y^(x)y)
其中, ω \omega ω x x x(某行数据)均为列向量,实际应用。

1.3 标准方程法

调用sklearn实现一元线性回归与多元线性回归的梯度下降时,sklearn内部的实现并没有使用梯度下降法,而是使用标准方程法。
公式推导(利用最小二乘法)12
在这里插入图片描述
上述公式推导使用到的矩阵求导公式
在这里插入图片描述

在这里插入图片描述

由推导的公式可知,需要满足的条件是 ( X T X ) − 1 (X^TX)^{-1} (XTX)1存在。在机器学习中, ( X T X ) − 1 (X^TX)^{-1} (XTX)1不可逆的原因通常有两种,一种是自变量间存在高度多重共线性,例如两个变量之间成正比(例如:x1 为房子的面积,单位是平方英尺;x2为房子的面积,单位是平方米;而1
平方英尺=0.0929 平方米),那么在计算 ( X T X ) − 1 (X^TX)^{-1} (XTX)1时,可能得不到结果或者结果无效;另一种则是当特征变量过多(样本数 m ≤ \le 特征数量 n)的时候也会导致 ( X T X ) − 1 (X^TX)^{-1} (XTX)1不可逆。 ( X T X ) − 1 (X^TX)^{-1} (XTX)1不可逆的情况很少发生,如果有这种情况,其解决问题的方法之一便是使用正则化以及岭回归等来求最小二乘法。


单变量情况下利用最小二乘法求解最佳参数
在这里插入图片描述

1.4 梯度下降法与标准方程法的优缺点

梯度下降法
优点

  • 当特征值非常多的时候也可以很好的工作

缺点

  • 需要选择合适的学习率
  • 需要迭代多个周期
  • 只能得到最优解的近似值

标准方程法
优点

  • 不需要学习率不需要迭代可以得到全局最优解

缺点

  • 需要计算 ( X T X ) − 1 (X^TX)^{-1} (XTX)1,时间复杂度大约是 O ( n 3 ) O(n^3) O(n3),n是特征数量

2. 相关系数与决定系数

常用相关系数来衡量两个变量间的相关性,相关系数越大,相关性越高,使用直线拟合样本点时效果就越好。

公式如下(两个变量的协方差除以标准差的乘积)
r ( X , Y ) = C o v ( X , Y ) V a r [ X ] V a r [ Y ] r(X,Y)=\frac{Cov(X,Y)}{\sqrt{Var[X]Var[Y]}} r(X,Y)=Var[X]Var[Y] Cov(X,Y)
= ∑ i = 1 n ( X i − X ˉ ) ( Y i − Y ˉ ) ∑ i = 1 n ( X i − X ˉ ) 2 ∑ i = 1 n ( Y i − Y ˉ ) 2 =\frac{\sum_{i=1}^n(X_i-\bar{X})(Y_i-\bar{Y})}{\sqrt{\sum_{i=1}^n(X_i-\bar{X})^2}\sqrt{\sum_{i=1}^n(Y_i-\bar{Y})^2}} =i=1n(XiXˉ)2 i=1n(YiYˉ)2 i=1n(XiXˉ)(YiYˉ)
下图的样本点中,左图的相关系数为0.993,右图的相关系数为0.957,即左图的样本点变量间的相关性更高
在这里插入图片描述
相关系数用于描述两个变量之间的线性关系,但决定系数 R 2 R^2 R2的适用范围更广,可以用于描述非线性或者有两个及两个以上自变量的相关关系,它可以用来评价模型的效果。
总平方和(SST)
∑ i = 1 n ( y i − y ˉ ) 2 \sum_{i=1}^{n}(y_i-\bar{y})^2 i=1n(yiyˉ)2
回归平方和(SSR)
∑ i = 1 n ( y ^ − y ˉ ) 2 \sum_{i=1}^{n}(\hat{y}-\bar{y})^2 i=1n(y^yˉ)2
残差平方和(SSE)
∑ i = 1 n ( y i − y ^ ) 2 \sum_{i=1}^{n}(y_i-\hat{y})^2 i=1n(yiy^)2
三者的关系
S S T = S S R + S S E SST=SSR+SSE SST=SSR+SSE
决定系数
R 2 = S S R S S T = 1 − S S E S S T = ∑ i = 1 n ( y i − y ^ ) 2 ∑ i = 1 n ( y i − y ˉ ) 2 R^2=\frac{SSR}{SST}=1-\frac{SSE}{SST}=\frac{\sum_{i=1}^{n}(y_i-\hat{y})^2}{\sum_{i=1}^{n}(y_i-\bar{y})^2} R2=SSTSSR=1SSTSSE=i=1n(yiyˉ)2i=1n(yiy^)2

R 2 R^2 R2的取值范围在0到1之间,值为0表示模型无法解释因变量的变化,值为1表示模型完全解释了因变量的变化。


  1. 覃秉丰——标准方程法 ↩︎

  2. 白板推导——最小二乘法及其几何意义 ↩︎

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

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

相关文章

【LeetCode】每日一题 2023_11_11 情侣牵手(并查集/贪心)

文章目录 刷题前唠嗑题目:情侣牵手题目描述代码与解题思路偷看大佬题解 结语 刷题前唠嗑 LeetCode? 启动!!! 好好好,这么玩是吧,双十一出道情侣牵手 题目:情侣牵手 题目链接:765…

[LeetCode]-225. 用队列实现栈-232. 用栈实现队列

目录 225. 用队列实现栈 题目 思路 代码 232. 用栈实现队列 题目 思路 代码 225. 用队列实现栈 225. 用队列实现栈 - 力扣(LeetCode)https://leetcode.cn/problems/implement-stack-using-queues/description/ 题目 请你仅使用两个队列实现一个后…

基于SSM的电子病历系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

ubuntu上如何移植thttpd

thttpd的特点 thttpd 是一个简单、小巧、便携、快速且安全的 HTTP 服务器。 简单: 它只处理实现 HTTP/1.1 所需的最低限度。好吧,也许比最低限度多一点。 小: 请参阅比较图表。它还具有非常小的运行时大小,因为它不会分叉并且非…

Auto-Encoder学习笔记

写在前面 本篇博客是本人在学习李宏毅老师的《机器学习》课程中的Auto-Encoder时,记录的相关笔记,由于只记录了我认为相对重要的部分,所以可能有未记录的部分。博客中的图片来自于教学视频中的截图,视频资源地址为:传…

火山引擎公共云·城市分享会:共享云经验,一起向未来

数智化时代的来临,不仅激发了行业对云计算的资源需求,也重构了云计算的技术架构及产品布局,给业务场景带来更多可能性,让云计算成为企业走向高效治理的一剂“良方”。随着业务的多样化、复杂化,企业应该如何借助云计算…

省钱攻略:三大运营商保号套餐办理攻略,不再当冤大头!

现在的朋友都是相当的聪明,都不想直接在营业厅办理套餐,而是选择保号套餐流量卡。 今天,小编主要介绍的就是三大运营商的保号套餐,以及如何办理! 如图所示: ​  电信最低可改5元套餐,移动、联…

软件之禅(七)面向对象(Object Oriented)

黄国强 2023/11/11 前文提到面向对象构建的模块控制器,根据第一性原理,从图灵机的角度,面向对象不是最基本的元素。那么面向对象是不是不重要呢? 答案是否定的,面向对象非常非常重要。当我们面对一个具体的领域…

【CASS精品教程】cass3d基于DOM和DEM生成倾斜三维模型

和EPS一样,cass3d也可以生成三维模型。本文讲解 cass3d基于pix4d生成的正射影像DOM和DSM生成倾斜三维模型,并进行三维测图。 一、三维倾斜模型打开 打开cass11.0软件,打开三维窗口,点击打开模型,选择基于dom和dsm生成…

Leetcode 剑指 Offer II 052. 递增顺序搜索树

题目难度: 简单 原题链接 今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给你一棵二叉搜索树,请 按中序遍历 将其重新排列为一…

CMakeCache.txt有什么用

2023年11月11日,周六上午 CMakeCache.txt 是由 CMake 自动生成的一个缓存文件,用于记录在配置过程中生成的各种变量和选项的值。 在使用 CMake 构建项目时,CMake 会根据 CMakeLists.txt 文件中的配置和命令,解析项目的源代码并生…

AD教程 (十二)原理图的编译设置和检查

AD教程 (十二)原理图的编译设置和检查 通过肉眼初步排查,观察一下原理图上有什么错误 工程编译排查错误 选中工程,右键,选择Compile PCB Project对工程进行编译,根据编译报错,定位错误&#…

【服务配置文件详解】补充rsyslog服务的配置文件翻译解读

学习rsyslog日志管理服务的配置文件 # rsyslog configuration file 关于rsyslog软件的配置文件# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html 想看到更多相关信息,可以去查看这个文件,rsyslog-*的*表示软件版本,我…

StartUML的基本使用

文章目录 简介和安装创建包创建类视图时序图 简介和安装 最近在学习一个项目的时候用到了StartUML来构造项目的类图和时序图 虽然vs2019有类视图,但是也不是很清晰,并没有生成uml图,但是宇宙最智能的IDE IDEA有生成uml图的功能 下面就简单介…

Windows10+vs2015源码编译subversion

Windows源码安装subversion 一、运行环境 windows10 64位系统 VS2015完整安装 Subversion1.6.3 二、源码编译环境配置 1、python环境安装 python-2.4.msi2、perl环境安装 ActivePerl-5.8.8.822-MSWin32-x86-280952.msi3、openssl编译 C:>cd openssl-0.9.7f C:>p…

1236. 递增三元组

题目: 1236. 递增三元组 - AcWing题库 思路:枚举 1.由给定数据估计时间复杂度。 数据范围为1~1e5---->时间复杂度只能为O(n)或者O(nlogn)。 2.先暴力枚举找到思路,再设法优化。 只枚举中间的数组B。对于枚举的每一个bi&#xff0…

【Java】智慧工地云平台源码支持多端展示(PC端、手机端、平板端)

智慧工地系统实现工地的数字化、精细化、智慧化生产和管理。 一、智慧工地发展趋势 1.更加智能 未来的智慧工地系统将逐步植入人工智能和虚拟现实等高科技技术以更为智慧的方式,来实现岗位人员与工地现场的交互与配合。智慧工地系统能够在工程全生命周期管理的过程…

内网如何使用Python第三方库包(举例JustinScorecardPy)

内网如何使用Python第三方库包 一、下载python whl文件(官网有的) 1、第一种方法 要直接下载whl文件,你可以按照以下步骤操作: 首先,访问 https://pypi.org/ 或 https://www.lfd.uci.edu/~gohlke/pythonlibs/ 网站。这两个都是Python的官方…

golang工程组件——redigo使用(redis协议,基本命令,管道,事务,发布订阅,stream)

redisgo redis 与 client 之间采用请求回应模式,一个请求包对应一个回应包;但是也有例外,pub/sub 模 式下,client 发送 subscribe 命令并收到回应包后,之后被动接收 redis 的发布包;所以若需要使 用 pub/s…

ROS 学习应用篇(三)话题Topic学习之自定义话题消息的类型的定义与调用

自定义消息类型的定义 Person.msg文件的定义(数据接口文件的定义) 创建msg文件 首先在功能包下新建msg文件夹,接着在该文件夹下创建文件。 定义msg文件内容 一个消息最重要的就是数据结构类型。这就需要引入一个msg文件,用于…