《白话机器学习的数学》第2章——学习回归

2.1设置问题

1.机器学习所做的事情正是从数据中进行学习,然后给出预测值。

2.2定义模型

1.一次函数的表达式:

其中θ叫做参数。

在统计学领域,人们常常使用 θ 来表示未知数和推测值。采用 θ加数字下标的形式,是为了防止当未知数增加时,表达式中大量出现 a、b、c、d...这样的符号。这样不但不易理解,还可能会出现符号本身不够用的情况。 ​

2.3最小二乘法

1.实际数据和预测函数之间没有误差是最理想的情况。

2.不可能让所有点的误差都等于 0。所以我们要做的是让所有点的误差之和尽可能地小。

3.假设有 n 个训练数据, 那么它们的误差之和可以用这样的表达式表示。这个表达式称为 目标函数,E(θ) 的 E 是误差的英语单词 Error 的首字母。

表达式中x(i) 和 y(i) 中的 i 不是 i 次幂的意思,而是指第 i 个训 练数据。

2.3.1最速下降法

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

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

6.最速下降法或梯度下降法:

A:=B意思是通过B来定义A。

η是称为学习率的正的常数。根据学习率的大小,到达最小值的更新次数也会发生变化。换种说法就是收敛速度会不同。有时候甚至会出现完全无法收敛,一直发散的情况。

7.假设g(x)的微分是2x-2,如果 η 较大,那么 x := x − η(2x − 2) 会在两个值上跳 来跳去,甚至有可能远离最小值。这就是发散状态。而当 η 较小 时,移动量也变小,更新次数就会增加,但是值确实是会朝着收敛的方向而去。

8.当目标函数拥有多个变量时,不能用普通的微分,要用偏微分。

  1. 由于E函数中并没有θ0,只有fθ(x),而fθ(x)中又包含θ0,所以可以采用复合函数的微分方式来求解。

至此就可以将两个函数的微分分别求出来,最终得出结论:

2.4多项式回归

1.在更多的情况下,将fθ(x)定义为二次函数,或者是更多次数的函数更加贴合原先的函数。

虽然次数越大拟合得越好,但也会出现过拟合的问题。

2.求多项式的微分与一次函数的方法相同,最终得出结论:

2.5多重回归

1.在前面的假设中,考虑的变量只有一个x,即使是增加次数,也只是修改了关于x一个变量的表达式,而更多的情况下,会有很多个变量,即不同的x。

2.可以把参数 θ 和变量 x 看作向量。只是把 θ 和 x 用列向量来定义。

​​​​​​​

3.包含了多个变量的回归称为多重回归。对多重回归的微分与前面的方式相同,都是通过偏微分计算。

4.最速下降法就是对所有的训练数据都重复进行计算。

2.6随机梯度下降法

1.最速下降法的缺点:①计算时间长,②容易陷入局部最优解。

2.最速下降法的参数更新表达式:

在这个表达式使用了所有训练数据的误差,而在随机梯度下降法中会随机选择一个训练数据,并使用它来更新参数。这个表达式中的 k 就是被随机选中的数据索引。

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

4.设随机选择 m 个训练数据的索引的集合为 K,那么我们这样来更新参数。

相关推荐
云淡风轻~窗明几净10 分钟前
角谷猜想最接近严格证明的测试 Version1.1.1
人工智能·算法·机器学习·图论
机器学习之心24 分钟前
PINN × SVM × NSGA-II × 熵权TOPSIS:一套跑通「建模—优化—决策」的多目标优化框架
算法·机器学习·支持向量机
别动我齐刘海1 小时前
机器人 C++ / 系统联调补强2——异常处理、Protobuf
linux·c++·人工智能·学习·算法·机器学习·机器人
一直C1 小时前
嵌入式 Linux 驱动开发学习笔记:内核定时器、platform 总线与 I²C 驱动
linux·驱动开发·嵌入式硬件·学习·imx6ull
承渊政道2 小时前
Linux网络学习【传输层协议UDP】
linux·网络·网络协议·学习·ubuntu·udp
andrsted2 小时前
练题簿免费刷题小程序:和学习搭子共用一份题库,一起刷题复习
学习·面试·微信小程序·小程序·学习方法·刷题
葫三生2 小时前
关于三生原理系列被技术开发社区批量收录或引发策展边界讨论的一种思考
大数据·人工智能·深度学习·算法·机器学习·数据挖掘·开源
持续学习的程序员+12 小时前
跟随一次“沙拉酱瓶入篮”任务,理解 RPent(harness vla) 的完整工作流程
人工智能·深度学习·机器学习
fqbqrr3 小时前
2610学习,ahk学习技巧
学习
fengci.3 小时前
BUUCTF(困难部分)
android·开发语言·前端·学习·php