【白话机器学习的数学】读书笔记(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) y−fθ(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=1∑n[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)=x2−2x+1dxdg(x)=2x−2

  • 增减表
  • 图像

比如在 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−η∂θ0∂Eθ1:=θ1−η∂θ1∂E

复合函数的微分
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)∂θ0∂u=∂v∂u⋅∂θ0∂v

其中

所以有

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

所以最终可以得到
θ 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−η∂θ0∂E=θ0−ηi=1∑n[fθ(x(i)−y(i))]θ1:=θ1−η∂θ1∂E=θ0−ηi=1∑n[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+θ1x→fθ(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+θ1x→fθ(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)∂θj∂u=∂v∂u⋅∂θj∂v

所以

对应的第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=1∑n[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=1∑n[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−ηk∈K∑[fθ(x(k)−y(k))]xj(k)

相关推荐
Willliam_william11 分钟前
SystemC学习(1)— SystemC安装与HelloWorld
学习
sealaugh3215 分钟前
aws(学习笔记第一课) AWS CLI,创建ec2 server以及drawio进行aws画图
笔记·学习·aws
布丁不叮早起枣祈16 分钟前
10.5学习
学习
向上的车轮25 分钟前
Django学习笔记五:templates使用详解
笔记·学习·django
技术无疆41 分钟前
【Python】Streamlit:为数据科学与机器学习打造的简易应用框架
开发语言·人工智能·python·深度学习·神经网络·机器学习·数据挖掘
羊小猪~~1 小时前
机器学习/数据分析--用通俗语言讲解时间序列自回归(AR)模型,并用其预测天气,拟合度98%+
人工智能·python·机器学习·数据挖掘·数据分析·回归·时序数据库
蒲公英10012 小时前
vue3学习:axios输入城市名称查询该城市天气
前端·vue.js·学习
训山2 小时前
【11】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-模块化语法与自定义组件
笔记·学习·华为·harmonyos·鸿蒙系统
①个程序员2 小时前
thinkphp 学习记录
学习
alfiy3 小时前
Elasticsearch学习笔记(四) Elasticsearch集群安全配置一
笔记·学习·elasticsearch