学习笔记|《白话机器学习的数学》

资料《白话机器学习的数学》

自行下载:
链接: https://pan.baidu.com/s/1xByXe9lx41qCXgrRAdYa9w 提取码: v8mt

一.回归

1.1最小二乘法

y为实际值,f(x)是计算出来的值。 E(θ)——误差,目的为让误差变小。
E ( θ ) = 1 2 Σ i = 1 n ( y ( i ) − f θ ( x ( i ) ) ) 2 E(\theta)=\frac{1}{2}\Sigma^n_{i=1}(y^{(i)}-f_{\theta}(x^{(i)}))^2 E(θ)=21Σi=1n(y(i)fθ(x(i)))2
最小二乘法就是通过不断调整θ的大小,使得E(θ)小,从而确定θ值。

1.2最速下降法/梯度下降法

对于不断修改θ值而言,该做法比较麻烦,所以可以通过求表达式的微分进行简化。

微分是计算变化的快慢程度时使用的方法。即对表达式求其导数。

梯度下降法就是通过表达式自身进行迭代,需要自己定义学习率。注意,学习率一般不会太大,大多数会将learning rate定义为0.001是有原因的。

如下:
x : = x − η d d x g ( x ) x :=x-\eta\frac{d}{dx}g(x) x:=xηdxdg(x)
假设
g ( x ) = ( x − 1 ) 2 g(x)=(x-1)^2 g(x)=(x1)2
那么梯度下降法所定义的x就会出现:
x : = x − η × 2 ( x − 1 ) x:=x-\eta×2(x-1) x:=xη×2(x1)
如果将x初始值定为3,η定义的较大,定义为1,那么就会出现完全无法收敛,一直发散的情况。
x : = 3 − 1 ( 2 × 3 − 2 ) = − 1 x:=3-1(2\times3-2)=-1 x:=31(2×32)=1

x : = − 1 − 1 [ 2 × ( − 1 ) − 2 ] = 3 x:= -1-1[2\times(-1)-2]=3 x:=11[2×(1)2]=3

所以,在初始化 学习率时,要尽量使其小,故而减少发散的情况。

【注意】:由于我们的目标函数中不仅只含有一个变量,所以一般情况下,不能用普通的微分,而是要用偏微分,对每一个变量进行单独的处理。如:若有一个函数为
f θ ( x ) = θ 0 + θ 1 x f_\theta(x)=\theta_0+\theta_1x fθ(x)=θ0+θ1x
那我们要确定目标函数f_θ(x)最优的表达式时,我们就要确定两个变量。从而对其更新的方式就为:
θ 0 : = θ 0 − η ∂ E ∂ θ 0 θ 1 : = θ 1 − η ∂ E ∂ θ 1 其中, E ( θ ) = 1 2 Σ i = 1 n ( y ( i ) − f θ ( x ( i ) ) ) 2 \theta_0 := \theta_0-\eta\frac{\partial E}{\partial \theta_0}\\ \theta_1 := \theta_1-\eta\frac{\partial E}{\partial \theta_1} \\其中,E(\theta)=\frac{1}{2}\Sigma^n_{i=1}(y^{(i)}-f_\theta(x^{(i)}))^2 θ0:=θ0ηθ0Eθ1:=θ1ηθ1E其中,E(θ)=21Σi=1n(y(i)fθ(x(i)))2
偏微分直接不好求就用阶梯法,即公式:
∂ u ∂ θ 0 = ∂ u ∂ v ⋅ ∂ v ∂ θ 0 \frac{\partial u}{\partial \theta_0}=\frac{\partial u}{\partial v}·\frac{\partial v}{\partial \theta_0} θ0u=vuθ0v
梯度下降法易陷入局部最优解,即当某个函数具有多个极小值点且这些极值的大小不完全相同,那么就容易选取到局部最优的解,而不是最优解。

局部最优解

二.多重回归

多重回归就是在同一个问题上,会涉及多个变量。从而衍生出n个变量的问题。(无法理解就将n设为3,对其分别进行偏微分更新θ的值)
f θ ( x 1 , . . . , x n ) = θ 0 + θ 1 x 1 + . . . + θ n x n f_\theta(x_1,...,x_n)=\theta_0+\theta_1x_1+...+\theta_nx_n fθ(x1,...,xn)=θ0+θ1x1+...+θnxn
简化的时候,可以将θ和x看为向量,从而简化目标函数f。

但是这里有个问题就是,θ和x的维度是不同的,可以对其进行简单的转化。以上式为例:
θ = [ θ 0 θ 1 θ 2 . . . θ n ] x = [ x 1 x 2 . . . x n ] θ 和 x 的维度不同,是不好简化目标函数的,那么就可以修改向量。 θ = [ θ 0 θ 1 θ 2 . . . θ n ] x = [ 1 x 1 x 2 . . . x n ] 此时在 x 上多加了一行,我们可以设 x 0 = 1 ,那么就可以转换为 θ = [ θ 0 θ 1 θ 2 . . . θ n ] x = [ x 0 x 1 x 2 . . . x n ] 此时,我们计算 θ T x = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n , 注意 x 0 = 1 ,从而转换成 f θ ( x ) = θ T x \theta = \begin{bmatrix} \theta_0\\ \theta_1 \\\theta_2 \\... \\\theta_n\end{bmatrix} x = \begin{bmatrix}x_1 \\x_2 \\... \\x_n\end{bmatrix} \\\theta和x的维度不同,是不好简化目标函数的,那么就可以修改向量。\\\theta = \begin{bmatrix} \theta_0\\ \theta_1 \\\theta_2 \\... \\\theta_n\end{bmatrix}x = \begin{bmatrix} 1\\ x_1 \\x_2 \\... \\x_n\end{bmatrix}\\此时在x上多加了一行,我们可以设x_0=1,那么就可以转换为\\\theta = \begin{bmatrix} \theta_0\\ \theta_1 \\\theta_2 \\... \\\theta_n\end{bmatrix}x = \begin{bmatrix} x_0\\ x_1 \\x_2 \\... \\x_n\end{bmatrix}\\此时,我们计算\theta^Tx=\theta_0x_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_n,注意x_0=1,从而转换成f_\theta(x)=\theta^Tx θ= θ0θ1θ2...θn x= x1x2...xn θx的维度不同,是不好简化目标函数的,那么就可以修改向量。θ= θ0θ1θ2...θn x= 1x1x2...xn 此时在x上多加了一行,我们可以设x0=1,那么就可以转换为θ= θ0θ1θ2...θn x= x0x1x2...xn 此时,我们计算θTx=θ0x0+θ1x1+θ2x2+...+θnxn,注意x0=1,从而转换成fθ(x)=θTx
至此,我们还要考虑,如何对这种改写为向量乘积的目标函数的偏微分。为了一般化,我们就对第j个元素θ_j进行偏微分。
设 u = E ( θ ) 、 v = f θ ( x ) ∂ u ∂ θ j = ∂ u ∂ v ⋅ ∂ v ∂ θ j 我们先求 ∂ v ∂ θ j = ∂ ∂ θ j ( θ T x ) = ∂ ∂ θ j ( θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n ) = x 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}\\我们先求\frac{\partial v}{\partial \theta_j}=\frac{\partial}{\partial\theta_j}(\theta^Tx)=\frac{\partial}{\partial\theta_j}(\theta_0x_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_n)=x_j u=E(θ)v=fθ(x)θju=vuθjv我们先求θjv=θj(θTx)=θj(θ0x0+θ1x1+θ2x2+...+θnxn)=xj
那么,就可以得到第j个参数的更新表达式为:
θ j : = θ j − η Σ i = 1 n ( f θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j := \theta_j-\eta\Sigma^n_{i=1}(f_\theta(x^{(i)})-y^{(i)})x_j^{(i)} θj:=θjηΣi=1n(fθ(x(i))y(i))xj(i)
该表达式就是所有参数θ的表达式,只需换下标即可。

三.随机梯度下降法

简而言之就是,随机梯度下降法会随机选择一个训练数据,并使用它来更新参数。【注意】:这里的式子和之前更新的式子有什么不同。
θ 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次。

随机梯度下降法由于训练数据是随机选择的,更新参数时使用的又是选择数据时的梯度,所以不容易陷入目标函数的局部最优解。虽然看上去有些敷衍,但实际上确实会收敛。

通过随机梯度下降法(随机选择1个训练数据的做法),衍生出随机选择m个训练数据来更新参数的做法,称为小批量(mini-batch)梯度下降法。

设随机选择m个训练数据的索引的集合为K,从而更新参数的公式为:
θ j : = θ j − η Σ k ∈ K ( f θ ( x ( k ) ) − y ( k ) ) x j ( k ) \theta_j := \theta_j-\eta\Sigma_{k\in K}(f_\theta(x^{(k)})-y^{(k)})x_j^{(k)} θj:=θjηΣkK(fθ(x(k))y(k))xj(k)
用一个Sample来解答这个公式:

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

小批量梯度下降法是介于最速下降法和随机梯度下降法之间的方法。

四.分类

4.1【权重向量】 得再学习一下

二分类的目标函数是使权重向量成为法线向量的直线。设权重向量为ω,那么直线的表达之就是:
ω ⋅ x = 0 内积 ω ⋅ x = Σ i = 1 n ω i x i = 0 内积是衡量向量之间相似程度的指标。 \omega·x=0\\内积\\\omega·x=\Sigma_{i=1}^n\omega_ix_i=0\\内积是衡量向量之间相似程度的指标。 ωx=0内积ωx=Σi=1nωixi=0内积是衡量向量之间相似程度的指标。
权重向量就是我们想要知道的未知参数,x_i就是数据集中的各个参数。

4.2感知机

将权重函数用作参数,创建更新表达式来更新参数。

感知机是接受多个输入后将每个值与各自得权重相乘,最后输出总和的模型。

在这里插入图片描述

4.3权重向量的更新表达式

ω : = { ω + y ( i ) x ( i ) , ( f ω ( x ( i ) ) ≠ y ( i ) ω , ( f ω ( x ( i ) ) = y ( i ) \omega :=\left\{\begin{matrix}\omega+y^{(i)}x^{(i)},(f_\omega(x^{(i)})\neq y^{(i}) \\\omega,(f_\omega(x^{(i)})= y^{(i})\end{matrix}\right. ω:={ω+y(i)x(i),(fω(x(i))=y(i)ω,(fω(x(i))=y(i)

权重向量初始时是随机向量,用某条数据与该向量进行内积并与实际值进行比较,即f_ω(x)与y进行比较,若相同,则说明分类成功,不相同则分类失败,需要更新权重向量。

这里补充一些向量的加法的计算方式。
向量加法,如 a + b = c ,那么 c 就是由 a 和 b 为边构成的平行四边形的对角边,注意方向和起始点和终点。 向量加法,如a+b=c,那么c就是由a和b为边构成的平行四边形的对角边,注意方向和起始点和终点。 向量加法,如a+b=c,那么c就是由ab为边构成的平行四边形的对角边,注意方向和起始点和终点。

4.4线性可分

感知机只能解决线性可分的问题,对于线性不可分的数据,使用感知机是无法成功的。

线性可分指的就是能够使用直线分类的情况。

五.逻辑回归

逻辑回归可以很好的应用于线性不可分问题。

5.1 Sigmoid函数

f θ ( x ) = 1 1 + e x p ( − θ T x ) = 1 1 + e ( − θ T x ) f_\theta(x)=\frac{1}{1+exp(-\theta^Tx)}=\frac{1}{1+e^{(-\theta^Tx)}} fθ(x)=1+exp(θTx)1=1+e(θTx)1

设 θ T x 为横轴, f θ ( x ) 为纵轴。 设\theta^Tx为横轴,f_{\theta}(x)为纵轴。 θTx为横轴,fθ(x)为纵轴。

Sigmoid函数的图形如下:

Sigmoid函数

5.2决策边界

如果用sigmoid函数,那么会将f_θ(x)当作概率来使用,把位置数据x是某个结果的概率作为f_θ(x),其表达式是:
P ( y = 1 ∣ x ) = f θ ( x ) P(y=1|x)=f_\theta(x) P(y=1∣x)=fθ(x)
即在x的条件下,预测结果为1的概率为多少。一般来说,我们会设置一个阈值,以控制决策边界。

一个Sample:
先随便确定 θ 再具体地去考虑。 θ = [ θ 0 θ 1 θ 2 ] = [ − 100 2 1 ] , x = [ 1 x 1 x 2 ] 代入数据,把表达式便为容易理解的形式。 θ T x = − 100 × 1 + 2 x 1 + x 2 ≥ 0 x 2 ≥ − 2 x 1 + 100 此时,我们就可以画出横轴为 x 1 纵轴为 x 2 的图像,并划分两片区域以用作分类。 先随便确定\theta再具体地去考虑。\\ \theta= \begin{bmatrix} \theta_0\\ \theta_1 \\\theta_2\end{bmatrix} = \begin{bmatrix} -100\\ 2 \\ 1\end{bmatrix}, x=\begin{bmatrix} 1\\ x_1 \\x_2\end{bmatrix}\\代入数据,把表达式便为容易理解的形式。\\\theta^Tx=-100\times1+2x_1+x_2 \ge 0\\x_2\ge-2x_1+100\\此时,我们就可以画出横轴为x_1纵轴为x_2的图像,并划分两片区域以用作分类。 先随便确定θ再具体地去考虑。θ= θ0θ1θ2 = 10021 ,x= 1x1x2 代入数据,把表达式便为容易理解的形式。θTx=100×1+2x1+x20x22x1+100此时,我们就可以画出横轴为x1纵轴为x2的图像,并划分两片区域以用作分类。
获得的不等式取等号的直线即为决策边界,是用于数据分类的直线。

5.3似然函数、对数似然函数

逻辑回归依旧是需要为了求取正确的参数θ从而定义目标函数,进行微分,最后求其更新表达式。

似然函数即假定所有的训练数据都是互不影响、独立发生的,从而列出其联合概率。

我们求出似然函数的目的是什么呢?为了确定目标函数,从而求参数。 在概率论中,对于不同的似然函数,求参数会用不同的方法,如取ln再求导(似然函数为连乘形式),按情况做出不同的措施即可。

回归的时候处理的是误差,所以要最小化误差,而求联合概率时,我们希望概率尽可能大,所以要最大化。(我的理解,联合概率是多个条件概率连乘,概率尽可能大,说明在某个条件下,概率尽可能大,也就代表误差尽可能小,这就是怎么确定θ为最优的一个思路,求联合函数的最大值,从而确定参数θ)。

5.4似然函数的微分

逻辑回归就是将下式这个对数似然函数用作目标函数。
l n L ( θ ) = Σ i = 1 n ( y ( i ) l n f θ ( x ( i ) ) + ( 1 − y ( i ) ) l n ( 1 − f θ ( x ( i ) ) ) ) 用 l n 求导时要简单一些 lnL(\theta)=\Sigma_{i=1}^n(y^{(i)}lnf_\theta(x^{(i)})+(1-y^{(i)})ln(1-f_\theta(x^{(i)})))\\用ln求导时要简单一些 lnL(θ)=Σi=1n(y(i)lnfθ(x(i))+(1y(i))ln(1fθ(x(i))))ln求导时要简单一些
现在,对上式进行求导:
∂ l n L ( θ ) ∂ θ j = ∂ ∂ θ j Σ i = 1 n ( y ( i ) l n f θ ( x ( i ) ) + ( 1 − y ( i ) ) l n ( 1 − f θ ( x ( i ) ) ) ) = Σ i = 1 n ( y ( i ) − f θ ( x ( i ) ) ) x j ( i ) \frac{\partial lnL(\theta)}{\partial\theta_j}=\frac{\partial}{\partial\theta_j}\Sigma_{i=1}^n(y^{(i)}lnf_\theta(x^{(i)})+(1-y^{(i)})ln(1-f_\theta(x^{(i)})))\\=\Sigma_{i=1}^n(y^{(i)}-f_\theta(x^{(i)}))x_j^{(i)} θjlnL(θ)=θjΣi=1n(y(i)lnfθ(x(i))+(1y(i))ln(1fθ(x(i))))=Σi=1n(y(i)fθ(x(i)))xj(i)
更新表达式中,用效果最好的随机梯度下降法即可。 此处注意:最小化时要按照与微分结果的符号相反的方向移动,而最大化时要与微分结果的符号同向移动。
θ j 的更新表达式可以写成: θ j : = θ j − η Σ i = 1 n ( f θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j的更新表达式可以写成:\\\theta_j:=\theta_j-\eta\Sigma_{i=1}^n(f_\theta(x^{(i)})-y^{(i)})x_j^{(i)} θj的更新表达式可以写成:θj:=θjηΣi=1n(fθ(x(i))y(i))xj(i)

5.5 LR应用于 线性不可分

线性不可分的问题即直线不能分类的问题,但是有的可以用曲线分类。此时,我们只需要将θ^T · x的表达式变换一下,加入二次项或更高次项,就可以将直线变曲线了。
在之前的式子变换一下,加入二次项, θ T x = θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 1 2 此时我们考虑 θ T x ≥ 0 的图形。 可以假设向量 θ = [ 0 , 0 , 1 , − 1 ] ,那么 θ T x = x 2 − x 1 2 ,此时画出图像。 在之前的式子变换一下,加入二次项,\\\theta^Tx=\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_1^2\\此时我们考虑\theta^Tx \ge 0的图形。\\可以假设向量\theta = [0,0,1,-1],那么\theta^Tx = x_2-x_1^2,此时画出图像。 在之前的式子变换一下,加入二次项,θTx=θ0+θ1x1+θ2x2+θ3x12此时我们考虑θTx0的图形。可以假设向量θ=[0,0,1,1],那么θTx=x2x12,此时画出图像。
图像为曲线,就表示决策边界自从加入二次项后,就从直线变换为曲线了。

从而,逻辑回归就应用于线性不可分的问题上来了。

六.评估

6.1交叉验证

我们往往需要将全部训练数据进行划分,划分为训练集和测试集,一般为7:3随机划分——交叉验证。

6.1.1回归问题的验证

对于回归的情况,指要在训练好的模型上计算测试数据的误差的平方,再取其平均值就好了。【均方误差——MSE(Mean Square Error)】
假设测试数据由 n 个,那么可以利用 1 n Σ i = 1 n ( y ( i ) − f θ ( x ( i ) ) ) 2 其中 y ( i ) 为测试数据的实际值, f θ ( x ( i ) ) 为模型测试值。 假设测试数据由n个,那么可以利用\\\frac{1}{n}\Sigma_{i=1}^n(y^{(i)}-f_\theta(x^{(i)}))^2\\其中y^{(i)}为测试数据的实际值,f_\theta(x^{(i)})为模型测试值。 假设测试数据由n个,那么可以利用n1Σi=1n(y(i)fθ(x(i)))2其中y(i)为测试数据的实际值,fθ(x(i))为模型测试值。
MSE越小,精度就越高,模型的拟合效果就越好。

在回归问题中,会出现过拟合,即模型在测试集上训练效果好,但是在测试集上训练效果不好的情况。

6.1.2分类问题的验证

分类问题同样过拟合或欠拟合的情况。过拟合即模型的边界仅包含了训练集,但是测试集包括的很少或基本没有包括。

在分类问题中,我们可以通过标签是否分类正确以及标签是否被分类错误四种情况进行评估模型。

如A的分类结果应该是1,但是模型测试为1,或者测试为0。 此时就有(1,1),(1,0)两种情况,同理,就有(0,1),(0,0)另外两种情况。

这四种情况,分别称为 True Positive(TP), False Positive(FP), False Negative(FN), True Negative(TN)。

分类问题会用
A c c u r a c y = T P + T N T P + F P + F N + T N Accuracy = \frac{TP+TN}{TP+FP+FN+TN} Accuracy=TP+FP+FN+TNTP+TN
来计算出分类的精度,该精度表示的是在整个数据集中,被正确分类的数据TP和TN所占的比例。

6.1.3 精确率、召回率、F值

若出现某些级端情况,假设100个数据,其中有95个数据的实际标签为Negative,那么哪怕模型把数据全部分类为Negative,那么精度也为0.95,这样的模型是好模型吗? 答案当然是否定的。 为了避免极端数据以及模型的正确评估,故而引入了别的指标。

精确率——Precision,即只关注True Positve以及False Positive,即只关注原本是Postive,通过模型测试后正确分类为Positive以及原本是Negative,通过模型测试后错误分类为Positive两个数据。 精确率实际上就是Positive的数据所占的比例。
P r e c i s i o n = T P T P + F P Precision = \frac{TP}{TP+FP} Precision=TP+FPTP
精确率越高,说明分类的错误越少。

召回率——Recall,只关注True Positve以及 False Negative两个数据,即只关注原本为Positive,通过模型测试后正确分类为Positve以及原本为Positive,通过模型测试后被错误分类为Negative。 召回率即表示在Positive的数据中,实际被分类为Positive的数据所占的比例。
R e c a l l = T P T P + F N Recall = \frac{TP}{TP+FN} Recall=TP+FNTP
召回率越高,说明分类的错误越少。

但是!在一般情况下,精确率和召回率会一个高,一个低,需要进行取舍,此时引入了另一个指标——F值。

F值——F measure——该值与精确率和召回率息息相关。——精确率和召回率的调和平均值。
F   m e a s u r e = 2 1 P r e c i s i o n + 1 R e c a l l = 2 ⋅ P r e c i s i o n ⋅ R e c a l l P r e c i s i o n + R e c a l l F\ measure = \frac{2}{\frac{1}{Precision}+\frac{1}{Recall}} = \frac{2·Precision·Recall}{Precision+Recall} F measure=Precision1+Recall12=Precision+Recall2PrecisionRecall
精确率和召回率指要有一个低,那么就会拉低F值,该指标考虑到精确率和召回率的平衡,一般情况下,我们可以记住上式中中间的公式,有利于理解,在计算时,我们利用化简后的式子更为方便。

F值在某些情况下也叫F1值。F1的1表示为权重,有一个关于F值的权重F值指标:
W e i g h t e d   F   m e a s u r e = ( 1 + β 2 ) ⋅ P r e c i s i o n ⋅ R e c a l l β 2 ⋅ P r e c i s i o n + R e c a l l 注意分母的 β 2 是精确率的的系数,而不是整体的系数 Weighted\ F\ measure = \frac{(1+\beta^2)·Precision·Recall}{\beta^2·Precision+Recall}\\注意分母的\beta^2是精确率的的系数,而不是整体的系数 Weighted F measure=β2Precision+Recall(1+β2)PrecisionRecall注意分母的β2是精确率的的系数,而不是整体的系数
我们可以认为F值是带权重的F值,当权重为1时才是F1值。

6.1.4K折交叉验证

K 折交叉验证即 ①:把全部训练数据分为 K 份 ②:将 K − 1 份数据用作训练数据,剩下的 1 份用作测试数据 ③:每次更换训练数据和测试数据,重复进行 K 次交叉验证 ④最后计算 K 个精度的平均值,把它作为最终的精度。 K折交叉验证即\\①:把全部训练数据分为K份\\②:将K-1份数据用作训练数据,剩下的1份用作测试数据\\③:每次更换训练数据和测试数据,重复进行K次交叉验证\\④最后计算K个精度的平均值,把它作为最终的精度。 K折交叉验证即:把全部训练数据分为K:将K1份数据用作训练数据,剩下的1份用作测试数据:每次更换训练数据和测试数据,重复进行K次交叉验证最后计算K个精度的平均值,把它作为最终的精度。

6.2正则化

6.2.1过拟合

过拟合即模型只能拟合训练数据的状态——overfitting。

回归问题中,过度增加函数f_θ(x)的次数会导致过拟合。

避免过拟合的方法:
①增加全部训练数据的数量;
②使用简单的模型;
③正则化。

6.2.2正则化的方法、效果

正则化的方法即在目标函数后加入正则化项。
R ( θ ) = λ 2 Σ j = 1 m θ j 2 其中, m 为参数的个数,而非数据个数 R(\theta)=\frac{\lambda}{2}\Sigma_{j=1}^m\theta_j^2\\其中,m为参数的个数,而非数据个数 R(θ)=2λΣj=1mθj2其中,m为参数的个数,而非数据个数
即改变原有的目标函数,更新为加入了正则化项的目标函数,并对其进行最小化

注意:
一般不对 θ 0 应用正则化, j 的取值从 1 开始。 我们假设预测函数的表达式为 f θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 此时 m = 2 ,表示有两个参数,正则化的对象参数为 θ 1 和 θ 2 θ 0 这种参数的项被称为偏置项,所以一般不对它进行正则化。 一般不对\theta_0应用正则化,j的取值从1开始。 \\我们假设预测函数的表达式为f_\theta(x)=\theta_0+\theta_1x_1+\theta_2x^2\\此时m=2,表示有两个参数,正则化的对象参数为\theta_1和\theta_2\\\theta_0这种参数的项被称为偏置项,所以一般不对它进行正则化。 一般不对θ0应用正则化,j的取值从1开始。我们假设预测函数的表达式为fθ(x)=θ0+θ1x1+θ2x2此时m=2,表示有两个参数,正则化的对象参数为θ1θ2θ0这种参数的项被称为偏置项,所以一般不对它进行正则化。
此外,λ是决定正则化影响程度的正常数,需要我们自己来定。
下图中, C ( θ ) 为目标函数,表达式为 C ( θ ) = 1 2 Σ i = 1 n ( y ( i ) − f θ ( x ( i ) ) ) 2 R ( θ ) = λ 2 Σ j = 1 m θ j 2 ——正则化项 E ( θ ) 即为二者相加,将原来的目标函数通过正则化后进行更新。 下图中,C(\theta)为目标函数,表达式为C(\theta)=\frac{1}{2}\Sigma_{i=1}^n(y^{(i)}-f_\theta(x^{(i)}))^2\\R(\theta)=\frac{\lambda}{2}\Sigma_{j=1}^m\theta_j^2——正则化项\\E(\theta)即为二者相加,将原来的目标函数通过正则化后进行更新。 下图中,C(θ)为目标函数,表达式为C(θ)=21Σi=1n(y(i)fθ(x(i)))2R(θ)=2λΣj=1mθj2——正则化项E(θ)即为二者相加,将原来的目标函数通过正则化后进行更新。
在未加入正则化之前,目标函数C(θ)的最小值大概θ=4.5处,正则化后,最小值就更接近0了。

正则化示例

这也就是正则化的效果,可以防止参数变得过大,有助于参数接近较小的值,本例中只考虑了θ_1参数,对于其他参数的情况也是类似的。

为什么正则化会防止过拟合?

因为正则化会让参数的值变小,意味着该参数的影响会相应地变小。
若有一个预测函数 f θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 若有一个预测函数f_\theta(x)=\theta_0+\theta_1x_1+\theta_2x^2 若有一个预测函数fθ(x)=θ0+θ1x1+θ2x2
如果θ2=0,这个表达式就从二次变为一次了,意味着预测函数从曲线变为了直线。

正是通过减少不需要的参数的影响,将复杂模型替换为简单模型防止过拟合的方式。

为了防止参数的影响过大,训练时也会对参数是加一些惩罚,λ是可以控制正则化惩罚的强度,λ越小,正则化的惩罚越小,反之则越大。

6.2.3分类的正则化

以对数似然函数为例
l n L ( θ ) = Σ i = 1 n ( y ( i ) l n f θ ( x ( i ) ) + ( 1 − y ( i ) ) l n ( 1 − f θ ( x ( i ) ) ) ) 在这个目标函数中加入正则化项即可,但是需要 【注意】对数似然函数是以最大化为目标,为了与前面回归的目标函数一样的最小化问题,此时转换一下: l n L ( θ ) = − Σ i = 1 n ( y ( i ) l n f θ ( x ( i ) ) + ( 1 − y ( i ) ) l n ( 1 − f θ ( x ( i ) ) ) ) + λ 2 Σ j = 1 m θ j 2 lnL(\theta)=\Sigma_{i=1}^n(y^{(i)}lnf_\theta(x^{(i)})+(1-y^{(i)})ln(1-f_\theta(x^{(i)})))\\在这个目标函数中加入正则化项即可,但是需要\\ 【注意】对数似然函数是以最大化为目标,为了与前面回归的目标函数一样的最小化问题,此时转换一下:\\lnL(\theta)=-\Sigma_{i=1}^n(y^{(i)}lnf_\theta(x^{(i)})+(1-y^{(i)})ln(1-f_\theta(x^{(i)})))+\frac{\lambda}{2}\Sigma_{j=1}^m\theta_j^2 lnL(θ)=Σi=1n(y(i)lnfθ(x(i))+(1y(i))ln(1fθ(x(i))))在这个目标函数中加入正则化项即可,但是需要【注意】对数似然函数是以最大化为目标,为了与前面回归的目标函数一样的最小化问题,此时转换一下:lnL(θ)=Σi=1n(y(i)lnfθ(x(i))+(1y(i))ln(1fθ(x(i))))+2λΣj=1mθj2

6.2.4包含正则化项的目标函数表达式的微分

因为正则化项为含参数的表达式,且目标函数与正则化项为加法,那么我们只需要对各部分进行偏微分即可。

要注意一点,在正则化中,我们要知道对正则化项进行偏微分时,我们对θ_0是不应用正则化的,所以R(θ)对θ_0的微分结果是0,所以参数更新表达式就应该分开写,即j=0时,以及j>0时两种更新表达式。如:
θ 0 = θ 0 − η ( Σ i = 1 n ( f θ ( x ( i ) ) − y ( i ) ) x j ( i ) ) θ j = θ j − η ( Σ i = 1 n ( f θ ( x ( i ) ) − y ( i ) ) x j ( i ) + λ θ j )   ( 其中 j > 0 ) \theta_0=\theta_0-\eta(\Sigma_{i=1}^n(f_\theta(x^{(i)})-y^{(i)})x_j^{(i)}) \\\theta_j=\theta_j-\eta(\Sigma_{i=1}^n(f_\theta(x^{(i)})-y^{(i)})x_j^{(i)}+\lambda\theta_j)\ (其中j>0) θ0=θ0η(Σi=1n(fθ(x(i))y(i))xj(i))θj=θjη(Σi=1n(fθ(x(i))y(i))xj(i)+λθj) (其中j>0)
补充:

之前讲的正则化方法为L2正则化,还有一种是L1正则化方法,其正则化项R为:
R ( θ ) = λ Σ i = 1 m ∣ θ i ∣ R(\theta)=\lambda\Sigma_{i=1}^m|\theta_i| R(θ)=λΣi=1mθi
L1正则化的特征是【被判定为不需要的参数】会变为0,从而减少变量个数。

但是L2正则化不会把参数变为0。L2正则化会抑制参数,使变量的影响不会过大,而L1会直接去除不要的变量。

6.3学习曲线

6.3.1欠拟合

欠拟合——underfitting,模型性能很差,模型没有很好的拟合训练数据。

如何区分欠拟合和过拟合?

训练数据较少时训练好的模型难以预测未知的数据,精度自然会低,但是随着数据增加,预测精度会一点点地变高。

欠拟合——高偏差

欠拟合

使用训练数据时,模型的精度在降低,表示在模型对于训练数据的拟合情况差,即欠拟合,虽然可能会出现在测试数据上表现增加,但是综合而言,该模型是需要进一步调整的。

过拟合——高方差

过拟合

过拟合的模型随着数据量的增加,使用训练数据时的精度一直很高,但是使用测试数据时的精度一直没有上升到它的水准。 过拟合——一句话即——只对训练数据拟合得很好。

数据量+精度的图=学习曲线。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值