【白话机器学习的数学】读书笔记(2)学习回归

二、学习回归

1. y y y f θ ( x ) f_\theta(x) fθ(x)

y y y 是实际数据x对应的值

f θ ( x ) f_\theta(x) fθ(x)是我们构造出来的函数,例如 f θ ( x ) = θ 0 + θ 1 x f_\theta(x) = \theta_0 + \theta_1 x fθ(x)=θ0+θ1x

所以我们希望这两个越接近,同时我们把 y − f θ ( x ) y - f_\theta(x) yfθ(x)称为误差

2.目标函数

假设有 n 个训练数据,那么它们的误差之和可以用这样的表达式表示。这个表达式称为

目标函数,E(θ)的E是误差的英语单词 Error 的首字母
E ( θ ) = 1 2 ∑ i = 1 n [ y ( i ) − f θ ( x ( i ) ) ] 2 E(\theta) = \frac{1}{2}\sum_{i=1}^n[y^{(i)}-f_\theta(x^{(i)})]^2 E(θ)=21i=1n[y(i)fθ(x(i))]2
找到使 E(θ) 的值最小的 θ。这样的问题称为最优化问题

3.最小二乘法

修改 θ \theta θ使得 E ( θ ) E(\theta) E(θ)越来越小,这种做法成为最小二乘法

4.最速下降法

要让 E(θ) 越来越小,一边随意修改 θ 的值,一边计算 E(θ) 并与之前的值相比较的做法实在是太麻烦了。

微分是计算变化的快慢程度时使用的方法。

书中举了一个例子:
g ( x ) = x 2 − 2 x + 1 d g ( x ) d x = 2 x − 2 g(x) = x^2 - 2x + 1 \\ \frac{dg(x)}{dx} = 2x-2 g(x)=x22x+1dxdg(x)=2x2

  • 增减表

请添加图片描述

  • 图像

    在这里插入图片描述

比如在 x = 3 这一点,为了使 g(x)的值变小,我们需要向左移动x,也就是必须减小 x。

只要向与导数的符号相反的方向移动 x,g(x) 就会自然而然地沿着最小值的方向前进了。

最速下降法或梯度下降法
x : = x − η d g ( x ) d x x:=x - \eta \frac{dg(x)}{dx} x:=xηdxdg(x)

  • η \eta η称为学习率的常数
  • A:=B,就是用B来定义A

这个同样适用于目标函数(目标函数也是个开口向上的)
θ 0 : = θ 0 − η ∂ E ∂ θ 0 θ 1 : = θ 1 − η ∂ E ∂ θ 1 \theta_0 := \theta_0 - \eta \frac{\partial E}{\partial \theta_0} \\ \theta_1 := \theta_1 - \eta \frac{\partial E}{\partial \theta_1} θ0:=θ0ηθ0Eθ1:=θ1ηθ1E

复合函数的微分
u = E ( θ ) v = f θ ( x ) ∂ u ∂ θ 0 = ∂ u ∂ v ⋅ ∂ v ∂ θ 0 u = E(\theta)\\ v=f_\theta(x)\\ \frac{\partial u}{\partial \theta_0} = \frac{\partial u}{\partial v} ·\frac{\partial v}{\partial \theta_0} u=E(θ)v=fθ(x)θ0u=vuθ0v
其中
在这里插入图片描述

在这里插入图片描述

所以有

在这里插入图片描述

同理可以得到 ∂ u ∂ θ 1 \frac{\partial u}{\partial \theta_1} θ1u

所以最终可以得到
θ 0 : = θ 0 − η ∂ E ∂ θ 0 = θ 0 − η ∑ i = 1 n [ f θ ( x ( i ) − y ( i ) ) ] θ 1 : = θ 1 − η ∂ E ∂ θ 1 = θ 0 − η ∑ i = 1 n [ f θ ( x ( i ) − y ( i ) ) ] x ( i ) \theta_0 := \theta_0 - \eta \frac{\partial E}{\partial \theta_0} = \theta_0 - \eta\sum_{i=1}^n[f_\theta(x^{(i)} - y^{(i)})] \\ \theta_1 := \theta_1 - \eta \frac{\partial E}{\partial \theta_1} = \theta_0 - \eta\sum_{i=1}^n[f_\theta(x^{(i)} - y^{(i)})]x^{(i)} θ0:=θ0ηθ0E=θ0ηi=1n[fθ(x(i)y(i))]θ1:=θ1ηθ1E=θ0ηi=1n[fθ(x(i)y(i))]x(i)
根据这个表达式来更新 θ 0 \theta_0 θ0 θ 1 \theta_1 θ1,就可以找到好的一次函数 f θ ( x ) f_\theta(x) fθ(x)

缺点:

  • 计算量大
  • 计算时间长
  • 容易陷入局部最优解

5.多项式回归

将一次函数拓展为多次函数,即
f θ ( x ) = θ 0 + θ 1 x → f θ ( x ) = θ 0 + θ 1 x + θ 2 x 2 + . . . + θ n x n f_\theta(x) = \theta_0 + \theta_1 x \to f_\theta(x) = \theta_0 + \theta_1 x +\theta_2x^2+...+\theta_nx^n fθ(x)=θ0+θ1xfθ(x)=θ0+θ1x+θ2x2+...+θnxn
同理,对于 θ n \theta_n θn的更新规则也和最速下降法中一样

在这里插入图片描述

6.多重回归

将一次函数中的x变为多个x,即
f θ ( x ) = θ 0 + θ 1 x → f θ ( x 1 , x 2 , . . . , x n ) = θ 0 + θ 1 x 1 + . . . + θ n x n f_\theta(x) = \theta_0 + \theta_1 x \to f_\theta(x_1,x_2,...,x_n) = \theta_0 + \theta_1 x_1 + ...+ \theta_n x_n fθ(x)=θ0+θ1xfθ(x1,x2,...,xn)=θ0+θ1x1+...+θnxn
然后为了方便,我们可以用向量来表示
θ = [ θ 0 θ 1 . . . θ n ] , x = [ 1 x 1 . . . x n ] (2) \theta = \begin{bmatrix} \theta_0\\ \theta_1\\ ...\\ \theta_n \end{bmatrix} \tag{2} , x = \begin{bmatrix} 1\\ x_1\\ ...\\ x_n \end{bmatrix} θ= θ0θ1...θn ,x= 1x1...xn (2)
对应的
f θ ( x ) = θ T x = θ 0 + θ 1 x + θ 2 x 2 + . . . + θ n x n f_\theta(x) = \theta^Tx = \theta_0 + \theta_1 x +\theta_2x^2+...+\theta_nx^n fθ(x)=θTx=θ0+θ1x+θ2x2+...+θnxn
要求出合适的更新规则,其实也和前面的做法一样,复合函数求微分
u = E ( θ ) v = f θ ( x ) ∂ u ∂ θ j = ∂ u ∂ v ⋅ ∂ v ∂ θ j u = E(\theta)\\ v=f_\theta(x)\\ \frac{\partial u}{\partial \theta_j} = \frac{\partial u}{\partial v} ·\frac{\partial v}{\partial \theta_j} u=E(θ)v=fθ(x)θju=vuθjv
所以

在这里插入图片描述

对应的第j个参数的更新表达式为
θ j : = θ j − η ∑ i = 1 n [ f θ ( x ( i ) − y ( i ) ) ] x j ( i ) \theta_j := \theta_j - \eta\sum_{i=1}^n[f_\theta(x^{(i)} - y^{(i)})]x_j^{(i)} θj:=θjηi=1n[fθ(x(i)y(i))]xj(i)

7.随机梯度下降法

最速下降法的参数更新表达式
θ j : = θ j − η ∑ i = 1 n [ f θ ( x ( i ) − y ( i ) ) ] x j ( i ) \theta_j := \theta_j - \eta\sum_{i=1}^n[f_\theta(x^{(i)} - y^{(i)})]x_j^{(i)} θj:=θjηi=1n[fθ(x(i)y(i))]xj(i)
这个表达式使用了所有训练数据的误差,而在随机梯度下降法中会随机选择一个训练数据,并使用它来更新参数。这个表达式中的 k 就是被随机选中的数据索引。
θ j : = θ j − η [ f θ ( x ( k ) − y ( k ) ) ] x j ( k ) \theta_j := \theta_j - \eta[f_\theta(x^{(k)} - y^{(k)})]x_j^{(k)} θj:=θjη[fθ(x(k)y(k))]xj(k)
因此,最速下降法更新 1 次参数的时间,随机梯度下降法可以更新 n 次

此外,随机梯度下降法由于训练数据是随机选择的,更新参数时使用的又是选择数据时的梯度,所以不容易陷入目标函数的局部最优解

8.小批量梯度下降法

这个方法介于最速下降法和随机梯度下降法之间的方法。

  • 最速下降法是用了全部的训练数据

  • 随机梯度下降法是只用了一个数据。

  • 小批量梯度下降法就是选择部分的数据

假设训练数据有 100 个,那么在 m = 10 时,创建一个有 10 个随机数的索引的集合,例如 K = {61, 53, 59, 16, 30, 21, 85, 31, 51, 10}、

对应的更新规则为
θ j : = θ j − η ∑ k ∈ K [ f θ ( x ( k ) − y ( k ) ) ] x j ( k ) \theta_j := \theta_j - \eta\sum_{k\in K}[f_\theta(x^{(k)} - y^{(k)})]x_j^{(k)} θj:=θjηkK[fθ(x(k)y(k))]xj(k)

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

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

相关文章

【视觉SLAM十四讲学习笔记】第五讲——相机模型

专栏系列文章如下: 【视觉SLAM十四讲学习笔记】第一讲——SLAM介绍 【视觉SLAM十四讲学习笔记】第二讲——初识SLAM 【视觉SLAM十四讲学习笔记】第三讲——旋转矩阵 【视觉SLAM十四讲学习笔记】第三讲——旋转向量和欧拉角 【视觉SLAM十四讲学习笔记】第三讲——四元…

苹果MAC怎么清理内存?苹果MAC清理内存的方法

很多使用苹果电脑的用户都喜欢在同时运行多个软件,不过这样会导致在运行一些大型软件的时候出现不必要的卡顿现象,这时候我们就可以去清理下内存,不过很多人可能并不知道正确的清内存方式,下面就和小编一起来看看吧。 苹果MAC清理…

Shell脚本同时调用#!/bin/bash和#!/usr/bin/expect

如果你想在一个脚本中同时使用bash和expect,你可以将expect部分嵌入到bash脚本中。以下是一个示例: #!/bin/bash# 设置MySQL服务器地址、端口、用户名和密码 MYSQL_HOST"localhost" MYSQL_PORT"3306" MYSQL_USER"your_usernam…

Maven 依赖传递和冲突、继承和聚合

一、依赖传递和冲突 1.1 Maven 依赖传递特性 1.1.1 概念 假如有三个 Maven 项目 A、B 和 C,其中项目 A 依赖 B,项目 B 依赖 C。那么我们可以说 A 依赖 C。也就是说,依赖的关系为:A—>B—>C, 那么我们执行项目 …

PDF有编辑密码怎么办

目录 注意: windows方法: 1 python 下载 2 打开命令行 3 安装 pikepdf 4 编写python脚本 5 使用py脚本 6解密完成 Linux方法: 注意: 此方法可以用于破解PDF的编辑密码,而不是PDF的打开密码 当遇到类似如下问…

热压机PLC数据采集远程监控物联网解决方案

热压机PLC数据采集远程监控物联网解决方案 随着工业4.0时代的到来,智能制造已经成为制造业发展的重要方向。在热压机领域,PLC数据采集远程监控物联网解决方案为提高生产效率、降低维护成本、优化生产工艺提供了有效的手段。 一、热压机PLC数据采集远程…

canvas绘制美队盾牌

查看专栏目录 canvas示例教程100专栏,提供canvas的基础知识,高级动画,相关应用扩展等信息。canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重…

【Rust学习】安装Rust环境

本笔记为了记录学习Rust过程,内容如有错误请大佬指教 使用IDE:vs code 参考教程:菜鸟教程链接: 菜鸟教程链接: Rust学习 Rust入门安装Rust编译环境Rust 编译工具 构建Rust 工程目录 Rust入门 安装Rust编译环境 因为我已经安装过VSCode了&am…

解决若依Vue3前后端分离---路由切换时显示白屏

解决若依Vue3前后端分离---路由切换时显示白屏 1.问题重述 解决基于Vue3若依前后端分离项目中出现的路由正常切换但是就是不显示数据的问题&#xff0c;也就是不发起网络请求的问题。 找到如下位置中AppMain.vue文件 将除了css中的代码进行替换成如下的代码。 <template&g…

kylin集群负载均衡(kylin3,hbaseRIF问题)

hbase历险记 目录 hbase历险记 寻找问题 分析原因 解决方案 方案1&#xff08;资源问题、失败&#xff09; 方案2&#xff08;成功&#xff09; 寻找问题 不知道你是不是有这样的疑惑。我kylin是个单机&#xff0c;我使用的hbase是个集群&#xff0c;但内存全在某一台机…

vue2使用qiankun微前端(跟着步骤走可实现)

需求&#xff1a;做一个vue2的微前端&#xff0c;以vue2为主应用&#xff0c;其他技术栈为子应用&#xff0c;比如vue3&#xff0c;本文章只是做vue2一套的微前端应用实现&#xff0c;之后解决的一些问题。vue3子应用可以看我另一篇vue3vitets实现qiankun微前端子应用-CSDN博客…

前端八股文(性能优化篇)

目录 1.CDN的概念 2.CDN的作用 3.CDN的原理 4.CDN的使用场景 5.懒加载的概念 6.懒加载的特点 7.懒加载的实现原理 8.懒加载与预加载的区别 9.回流与重绘的概念及触发条件 &#xff08;1&#xff09;回流 &#xff08;2&#xff09;重绘 10. 如何避免回流与重绘&#…

Deep MultimodalLearningA survey on recent advances and trends

深度多模态学习&#xff1a;对近期进展和趋势的综述 深度学习的成功已经成为解决越来越复杂的机器学习问题的催化剂&#xff0c;这些问题通常涉及多个数据模态。我们回顾了深度多模态学习的最新进展&#xff0c;并突出了该活跃研究领域的现状&#xff0c;以及存在的差距和挑战…

【动态规划】【C++算法】639 解码方法 II

作者推荐 【矩阵快速幂】封装类及测试用例及样例 涉及知识点 动态规划 字符串 滚动向量 LeetCode 639. 解码方法 II 一条包含字母 A-Z 的消息通过以下的方式进行了 编码 &#xff1a; ‘A’ -> “1” ‘B’ -> “2” … ‘Z’ -> “26” 要 解码 一条已编码的消息…

【已解决】c语言const/指针学习笔记

本博文源于笔者正在复习const在左与在右&#xff0c;指针优先级、a,&a,*a的区别。 1、const在左与在右 int const *p const int *p int * const p int const * const p const int * const p* 在const右边&#xff0c;指向的数据不可以改变&#xff0c;可以改变地址 * 在c…

不同打包工具下的环境变量配置方式对比

本文作者为 360 奇舞团前端开发工程师 天明 前言 在现代的JavaScript应用程序开发中&#xff0c;环境变量的配置是至关重要的。不同的应用场景和部署环境可能需要不同的配置&#xff0c;例如开发、测试和生产环境。最常见的需求是根据不同的环境&#xff0c;配置如是否开启sour…

数据分析中常用的指标或方法

一、方差与标准差二、协方差三、皮尔逊系数四、斯皮尔曼系数 一、方差与标准差 总体方差 V a r ( x ) σ 2 ∑ i 1 n ( x i − x ˉ ) 2 n ∑ i 1 n x i 2 − n x ˉ 2 n E ( x 2 ) − [ E ( x ) ] 2 Var(x)\sigma^2\frac {\sum\limits_{i1}^{n} (x_i - \bar{x})^2} {n…

使用 Elasticsearch 和 LlamaIndex 进行高级文本检索:句子窗口检索

2023 年是检索增强生成 (RAG) 的一年&#xff0c;人们探索了许多用例&#xff0c;并使用该技术开发了数百种产品。 从 Q/A 聊天机器人到基于上下文的代理&#xff0c;RAG 的使用一直是 LLM 申请快速增长的主要因素。 支持不断发展的社区以及 Langchain 和 LlamaIndex 等强大框架…

【Java SE】类和对象详解

文章目录 1.什么是面向对象2. 类的定义和使用2.1 简单认识类2.2 类的定义格式 3. 类的实例化3.1 什么是实例化3.1.1 练习&#xff08;定义一学生类&#xff09; 3.2 类和对象的说明 4. this 引用5. 构造方法6. 对象的初始化6.1 默认初始化6.2 就地初始化 7. 封装7.1 封装的概念…

spingboot 集成identityserver4身份验证

一、新建项目&#xff1a;com.saas.swaggerdemo 详情见&#xff1a;spring-boot2.7.8添加swagger-CSDN博客 在之前项目基础上添加如下依赖 <dependency><groupId>com.nimbusds</groupId><artifactId>nimbus-jose-jwt</artifactId><version&…