白话机器学习笔记(一)学习回归

最小二乘法

定义模型

表达式: f θ ( x ) = θ 0 + θ 1 x f_\theta(x)=\theta_0+\theta_1x fθ(x)=θ0+θ1x

(常用 θ \theta θ表示未知数、 f θ ( x ) f_\theta(x) fθ(x)表示含有参数 θ \theta θ并且和变量 x x x相关的函数)

目标函数

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

E ( θ ) = 1 2 ∑ i = 1 n ( y ( i ) − f θ ( x ( i ) ) ) 2 E(\theta)=\frac12\sum\limits_{i=1}^n(y^{(i)}-f_\theta(x^{(i)}))^2 E(θ)=21i=1n(y(i)fθ(x(i)))2 ( x ( i ) 和 y ( i ) x^{(i)}和y^{(i)} x(i)y(i)指第 i i i个训练数据)

找到使 E ( θ ) E(\theta) E(θ)值最小的 θ \theta θ,这样的问题称为最优化问题。

为了避免正负数混合运算所以计算平方, 1 2 \frac12 21是为了让表达式值更简单随便加的常数。

θ 0 = 1 、 θ 1 = 3 \theta_0=1、\theta_1=3 θ0=1θ1=3,将四个训练数据带入表达式求误差如下:

image-20230716172903351

修改参数 θ \theta θ的值,让误差变小的做法称为最小二乘法。

最速下降法

比如表达式 g ( x ) = ( x − 1 ) 2 g(x)=(x-1)^2 g(x)=(x1)2,它的最小值 g ( x ) = 0 g(x)=0 g(x)=0出现在 x = 1 x=1 x=1时。

图像如下:

image-20230720210255695

g ( x ) g(x) g(x)展开有 ( x − 1 ) 2 = x 2 − 2 x + 1 (x-1)^2=x^2-2x+1 (x1)2=x22x+1

微分有: d d x g ( x ) = 2 x − 2 \frac{d}{dx}g(x)=2x-2 dxdg(x)=2x2

为了让 g ( x ) g(x) g(x)的值变小,要让 x x x向1移动,可以根据导数符号决定 x x x的移动方向,只要向着导数符号相反的方向移动 x x x g ( x ) g(x) g(x)就会向着最小值移动。

由此得到表达式

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

(A:=B,意思通过B来定义A,上面表达式指用上一个x来定义新的x)

η \eta η是称为学习率的正常数,大小会影响达到最小值的更新次数,太大会导致来回跳跃无法收敛,一直发散状态。

对于目标函数, E ( θ ) = 1 2 ∑ i = 1 n ( y ( i ) − f θ ( x ( i ) ) ) 2 E(\theta)=\frac12\sum\limits_{i=1}^n(y^{(i)}-f_\theta(x^{(i)}))^2 E(θ)=21i=1n(y(i)fθ(x(i)))2 有两个参数,要用偏微分。

( f θ ( x ) = θ 0 + θ 1 x f_\theta(x)=\theta_0+\theta_1x fθ(x)=θ0+θ1x)

更新表达式如下:

θ 0 : = θ 0 − η ∂ E ∂ θ 0 \theta_0:=\theta_0-\eta\frac{\partial E}{\partial\theta_0} θ0:=θ0ηθ0E

θ 1 : = θ 1 − η ∂ E ∂ θ 1 \theta_1:=\theta_1-\eta\frac{\partial E}{\partial\theta_1} θ1:=θ1ηθ1E

∂ E ∂ θ 0 = ∑ i = 1 n ( f θ ( x ( i ) ) − y ( i ) ) \frac{\partial E}{\partial\theta_0}=\sum\limits_{i=1}^n(f_\theta(x^{(i)})-y^{(i)}) θ0E=i=1n(fθ(x(i))y(i))

∂ E ∂ θ 1 = ∂ E ∂ θ 0 = ∑ i = 1 n ( f θ ( x ( i ) ) − y ( i ) ) x ( i ) \frac{\partial E}{\partial\theta_1}=\frac{\partial E}{\partial\theta_0}=\sum\limits_{i=1}^n(f_\theta(x^{(i)})-y^{(i)})x^{(i)} θ1E=θ0E=i=1n(fθ(x(i))y(i))x(i)

所以得到参数 θ 1 和 θ 2 \theta_1和\theta_2 θ1θ2的更新表达式如下:

θ 0 : = θ 0 − η ∑ i = 1 n ( f θ ( x ( i ) ) − y ( i ) ) \theta_0:=\theta_0-\eta\sum\limits_{i=1}^n(f_\theta(x^{(i)})-y^{(i)}) θ0:=θ0ηi=1n(fθ(x(i))y(i))

θ 1 : = θ 1 − η ∑ i = 1 n ( f θ ( x ( i ) ) − y ( i ) ) x ( i ) \theta_1:=\theta_1-\eta\sum\limits_{i=1}^n(f_\theta(x^{(i)})-y^{(i)})x^{(i)} θ1:=θ1ηi=1n(fθ(x(i))y(i))x(i)

多项式回归

image-20230716181244868

曲线比直线更容易拟合数据

f θ ( x ) f_\theta(x) fθ(x)定义为二次函数:

f θ ( x ) = θ 0 + θ 1 x + θ 2 x 2 f_\theta(x)=\theta_0+\theta_1x+\theta_2x^2 fθ(x)=θ0+θ1x+θ2x2

或者更大次数的表达式:

f θ ( x ) = θ 0 + θ 1 x + θ 2 x 2 + . . . + θ n x n f_\theta(x)=\theta_0+\theta_1x+\theta_2x^2+...+\theta_nx^n fθ(x)=θ0+θ1x+θ2x2+...+θnxn

f θ ( x ) = θ 0 + θ 1 x + θ 2 x 2 f_\theta(x)=\theta_0+\theta_1x+\theta_2x^2 fθ(x)=θ0+θ1x+θ2x2

得到更新表达式为:

θ 0 : = θ 0 − η ∑ i = 1 n ( f θ ( x ( i ) ) − y ( i ) ) \theta_0:=\theta_0-\eta\sum\limits_{i=1}^n(f_\theta(x^{(i)})-y^{(i)}) θ0:=θ0ηi=1n(fθ(x(i))y(i))

θ 1 : = θ 1 − η ∑ i = 1 n ( f θ ( x ( i ) ) − y ( i ) ) x ( i ) \theta_1:=\theta_1-\eta\sum\limits_{i=1}^n(f_\theta(x^{(i)})-y^{(i)})x^{(i)} θ1:=θ1ηi=1n(fθ(x(i))y(i))x(i)

θ 2 : = θ 2 − η ∑ i = 1 n ( f θ ( x ( i ) ) − y ( i ) ) x ( i ) 2 \theta_2:=\theta_2-\eta\sum\limits_{i=1}^n(f_\theta(x^{(i)})-y^{(i)})x^{(i)^2} θ2:=θ2ηi=1n(fθ(x(i))y(i))x(i)2

这种增加函数中多项式的次数,再使用函数的分析方法被称为多项式回归。

多重回归

问题:基于广告费预测点击率

考虑广告版面的大小,设 广告费为 x 1 x_1 x1、广告栏的宽为 x 2 x_2 x2、广告栏的高为 x 3 x_3 x3

f θ f_\theta fθ可以表示如下:

f θ ( x 1 , x 2 , x 3 ) = θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 f_\theta(x_1,x_2,x_3)=\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_3 fθ(x1,x2,x3)=θ0+θ1x1+θ2x2+θ3x3

简化表达式,将 θ 和 x \theta和x θx看成向量

θ = [ θ 0 θ 1 θ 2 ⋮ θ n ] \boldsymbol{\theta}=\begin{bmatrix} \theta_0\\\theta_1\\\theta_2\\\vdots\\\theta_n \end{bmatrix} θ= θ0θ1θ2θn x = [ x 0 x 1 x 2 ⋮ x n ] \boldsymbol{x}=\begin{bmatrix}x_0\\x_1\\x_2\\\vdots\\x_n \end{bmatrix} x= x0x1x2xn ( x 0 = 1 x_0=1 x0=1)

θ T x = θ 0 x 0 + θ 1 x 1 + . . . + θ n x n \boldsymbol{\theta}^T\boldsymbol{x}=\theta_0x_0+\theta_1x_1+...+\theta_nx_n θTx=θ0x0+θ1x1+...+θnxn

E ( θ ) = 1 2 ∑ i = 1 n ( f θ ( x ( i ) − y ( i ) ) ) 2 E(\theta)=\frac12\sum\limits_{i=1}^n(f_\theta(x^{(i)}-y^{(i)}))^2 E(θ)=21i=1n(fθ(x(i)y(i)))2

∂ E ∂ θ j = ∑ i = 1 n ( f θ ( x ( i ) ) − y ( i ) ) x j ( i ) \frac{\partial E}{\partial\theta_j}=\sum\limits_{i=1}^n(f_\theta(x^{(i)})-y^{(i)})x_j^{(i)} θjE=i=1n(fθ(x(i))y(i))xj(i)

θ j : = θ j − η ∑ i = 1 n ( f θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j:=\theta_j-\eta\sum\limits_{i=1}^n(f_\theta(x^{(i)})-y^{(i)})x_j^{(i)} θj:=θjηi=1n(fθ(x(i))y(i))xj(i)

像这样包含多个变量的回归称为多重回归

随机梯度下降法

最速下降法容易陷入局部最优解

image-20230719104549825

最速下降法更新表达式: θ j : = θ j − η ∑ i = 1 n ( f θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j:=\theta_j-\eta\sum\limits_{i=1}^n(f_\theta(x^{(i)})-y^{(i)})x_j^{(i)} θj:=θjηi=1n(fθ(x(i))y(i))xj(i)

随机梯度下降法中会随机选择一个训练数据,并使用它来更新参数。这个表达式中的 k k 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次,这样不容易陷入局部最优解。

小批量梯度下降法

设训练数据索引的集合为 K K K,还可以随机选择m个训练数据来更新参数。

小批量梯度下降法更新表达式: θ j : = θ j − η ∑ k ∈ K ( f θ ( x ( k ) ) − y ( k ) ) x j ( k ) \theta_j:=\theta_j-\eta\sum\limits_{k\in K}(f_\theta(x^{(k)})-y^{(k)})x_j^{(k)} θj:=θjηkK(fθ(x(k))y(k))xj(k)

练数据索引的集合为 K K K,还可以随机选择m个训练数据来更新参数。

小批量梯度下降法更新表达式: θ j : = θ j − η ∑ k ∈ K ( f θ ( x ( k ) ) − y ( k ) ) x j ( k ) \theta_j:=\theta_j-\eta\sum\limits_{k\in K}(f_\theta(x^{(k)})-y^{(k)})x_j^{(k)} θj:=θjηkK(fθ(x(k))y(k))xj(k)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue中TodoLists案例_底部统计

与上一篇Vue中TodoList案例_删除有俩个文件变化了 App.vue&#xff1a;向儿子组件MyFooter传递参数todos <template><div id"root"><div class"todo-container"><div class"todo-wrap"><MyHeader :addTodo"add…

Qt 第一讲

登录框设置 #include "zuoye.h" #include "ui_zuoye.h"Zuoye::Zuoye(QWidget *parent): QWidget(parent), ui(new Ui::Zuoye) {ui->setupUi(this);//界面this->resize(540,420); //设置尺寸this->setFixedSize(540,420);//固定尺寸this->setS…

Spring 创建和使用

Spring 是⼀个包含了众多⼯具⽅法的 IoC 容器。既然是容器那么它就具备两个最基本的功能&#xff1a; 将对象存储到容器&#xff08;Spring&#xff09;中&#xff1b; 从容器中将对象取出来。 在 Java 语⾔中对象也叫做 Bean 1.创建 Spring 项目 接下来使⽤ Maven ⽅式来创…

智慧景区综合解决方案52页,多媒体触控系统,顶层设计

导读&#xff1a;原文《智慧景区综合解决方案52页ppt》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 完整版领取方式 完整版领取方式&#xff1a; 如需获取完整的电…

Python面向对象(三)(继承、封装)

面向对象的三大特性 面向对象编程&#xff0c;是许多编程语言都支持的一种编程思想。 简单理解是&#xff1a;基于模板&#xff08;类&#xff09;去创建实体&#xff08;对象&#xff09;&#xff0c;使用对象完成功能开发。 面向对象包含3大主要特性&#xff1a; 封装 封…

静态 链接

1、空间与地址的分配 现在的链接器空间分配的策略基本上都采用 “相似段合并” 的方式。通过将所有相同类型的 section 合并到一起&#xff0c;例如将所有输入目标文件的 .text 合并&#xff08;按顺序合并&#xff09;到输出文件的 .text 节中&#xff1b;然后&#xff0c;链接…

机器学习之线性判别分析(Linear Discriminant Analysis)

1 线性判别分析介绍 1.1 什么是线性判别分析 线性判别分析&#xff08;Linear Discriminant Analysis&#xff0c;简称LDA&#xff09;是一种经典的监督学习算法&#xff0c;也称"Fisher 判别分析"。LDA在模式识别领域&#xff08;比如人脸识别&#xff0c;舰艇识别…

链表踏歌:独具慧眼,雕琢重复元素藏身匿迹

本篇博客会讲解力扣“83. 删除排序链表中的重复元素”的解题思路&#xff0c;这是题目链接。 由于链表是排好序的&#xff0c;我们可以通过遍历一次链表的方式&#xff0c;删除所有重复的结点。具体来说&#xff0c; 如果链表为空&#xff0c;则不需要删除&#xff0c;直接返回…

全加器(多位)的实现

一&#xff0c;半加器 定义 半加器&#xff08;Half Adder&#xff09;是一种用于执行二进制数相加的简单逻辑电路。它可以将两个输入位的和&#xff08;Sum&#xff09;和进位&#xff08;Carry&#xff09;计算出来。 半加器有两个输入&#xff1a;A 和 B&#xff0c;分别代表…

GPT和MBR的区别

磁盘分区是操作系统管理磁盘数据的一项非常重要的功能。在分区时&#xff0c;用户需要选择一种分区表格式来组织磁盘上的分区&#xff0c;这也就是GPT和MBR两种分区表格式的由来。在本文中&#xff0c;将详细探讨GPT和MBR分区表格式的区别和如何选择它们。 1. MBR和GPT分区表格…

有关 openAPI 的一些总结

目前主流的 APi 的验证是&#xff1a;Tokensign sign 主要是保证数据的真实性 token 主要是进行接口安全访问的 sign验证签名&#xff08; sha256Hex&#xff09; 一般将一些平台的版本及平台 id 等字段进行固定拼接后再进行摘要算法处理 // 参与签名计算的Key-Value列表 Map…

【C语言敲重点(五)】嵌入式“八股文“(2)

1. struct和union的区别&#xff1f; 答&#xff1a;①联合体所有的成员都共享一块内存&#xff0c;修改联合体的任一成员的数据就会覆盖到其他成员的数据&#xff1b; ②结构体的成员变量都有独立的内存空间&#xff0c;且结构体的成员数据之间是不影响的 2. struct和class的…

LeetCode第 N 个泰波那契数 (认识动态规划)

认识动态规划 编写代码代码空间优化 链接: 第 N 个泰波那契数 编写代码 class Solution { public:int tribonacci(int n) {if(n 0){return 0;}else{if(n 1 || n 2)return 1;}vector<int> dp(n 1);dp[0] 0;dp[1] 1;dp[2] 1;for(int i 3;i < n;i){dp[i] dp[i-3]…

Upload文件导入多条数据到输入框

需求场景&#xff1a;文本框内容支持批量导入(文件类型包括’.txt, .xls, .xlsx’)。使用AntD的Upload组件处理。 下面是Upload的配置&#xff08;伪代码&#xff09;&#xff0c;重点为beforeUpload中的逻辑 // Antd 中用到的Upload组件 import { UploadOutlined } from ant…

汽车养护店服务难题,看帕凝怎样解决?

中国汽车市场庞大&#xff0c;入户已然成为标配&#xff0c;加之新能源汽车近些年高增量&#xff0c;更促进了行业增长。而汽车后市场也迎来了一系列变化&#xff0c;客户服务前后路径需完善&#xff0c;商家们应该如何数字化经营呢&#xff1f; 接下来让我们看看【帕凝汽车养…

NOI Linux 2.0 CSP奥赛复赛环境安装使用指南

新人旧人区别 以下是可能导致你在老版 NOI Linux 系统下形成的习惯在新版下翻车的改动。 移除了 GUIDE从 32bit 变为了 64bit 系统&#xff0c;需要注意指针现在占 8 字节而不是 4 字节更新了编译器版本默认情况下右键没了【新建文件】的选项桌面目录改为中文&#xff0c;可能…

7.Docker-compose

文章目录 Docker-compose概念Docker-compose部署YAML文件格式和编写注意事项注意数据结构对象映射序列属组布尔值序列的映射映射的映射JSON格式文本换行锚点和引用 Docker compose配置常用字段docker compose常用命令Docker Compose 文件结构docker compose部署apachedocker co…

【图像分割】基于蜣螂优化算法DBO的Otsu(大津法)多阈值电表数字图像分割 电表数字识别【Matlab代码#51】

文章目录 【可更换其他算法&#xff0c;获取资源请见文章第5节&#xff1a;资源获取】1. 原始蜣螂优化算法1.1 滚球行为1.2 跳舞行为1.3 繁殖行为1.4 偷窃行为 2. 多阈值Otsu原理3. 部分代码展示4. 仿真结果展示5. 资源获取说明 【可更换其他算法&#xff0c;获取资源请见文章第…

RTOS 低功耗设计原理及实现

RTOS 低功耗设计原理及实现 文章目录 RTOS 低功耗设计原理及实现&#x1f468;‍&#x1f3eb;前言&#x1f468;‍&#x1f52c;Tickless Idle Mode 的原理及实现&#x1f468;‍&#x1f680;Tickless Idle Mode 的软件设计原理&#x1f468;‍&#x1f4bb;Tickless Idle Mo…

Jmap-JVM(十六)

上篇文章说了ZGC是jdk11加入的&#xff0c;他是未来jvm垃圾收集器的奠定者&#xff0c;满足TB级别内存处理&#xff0c;STW时间保持在10ms以下。 Jmap 我们可以先通过jmap -histo 进程ip 来查看&#xff0c;但是这样看不太清晰&#xff0c;我们可以用这行命令生成一个文件&…