首页 > 其他分享 >什么是梯度下降?用线性回归解释和R语言估计GARCH实例

什么是梯度下降?用线性回归解释和R语言估计GARCH实例

时间:2022-11-26 22:31:11浏览次数:53  
标签:函数 梯度 下降 最小值 实例 GARCH 我们 成本

梯度下降是什么?

最近我们被客户要求撰写关于梯度下降的研究报告,包括一些图形和统计输出。梯度下降是一种优化算法,能够为各种问题找到最佳解决方案。

梯度下降的主要功能是最小化成本函数。

这个定义很难理解,对吧?!好的,让我们让它变得简单,并通过一个例子来理解它。

假设我们有2个变量的数据,并且 ,其中x是自变量,y是因变量。因此,我们的目标是预测给定的y。假设数据如下所示。在这里,我们正在考虑线性回归问题。所以我们得到这条线,这样我们就可以预测任何.​​x``y​

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_梯度下降

众所周知,直线的等式,如下所示。​​y = mx + c​

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_最小值_02

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_最小值_03

这里的 θ₀ 和 θ₁ 称为权重。我们必须找到这些权重才能获得数据的最佳拟合线。

但问题是,如何获得这条线以使其适合数据?为此,首先我们必须找到误差,即实际输出和预测输出之间的差异,这是由我们的假设函数用一些随机权重计算的。

为此,我们需要一个成本函数来计算这个误差。对于线性回归,成本函数定义如下:

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_数据_04

你会发现,首先成本函数取实际值和预测值的差值,然后取它的平方,然后取所有数据的平均值。所以基本上它是在计算线在数据上的拟合程度。如果成本函数的值接近0,那么很好,但如果是一个很大的值,那么必须改变假设函数的权重。 那么是否必须随机尝试不同的权重才能获得最佳拟合线?不用,这时就可以用梯度下降方法。 这里,成本函数是 θ₀ 和 θ₁ 的函数。 例如,我们有x和它的函数f(x)。现在我们想要具有最小值的值。 众所周知,在某个点取函数的微分,意味着该点的斜率。因此,我们可以说,在这一点上,这种分化变为 0 意味着在该点上,斜率的值为 0,意味着我们得到一条水平的斜线。

请看下图:

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_梯度下降_05

在这里你可以看到,在x'值时,斜率变成了水平的。这意味着此时的值是最小的。您可以在图像中清楚地看到这一点。此时,f(x)的微分为0。所以在这里,我们正在做的是找到图形的最小值。

现在让我们回到梯度下降。

我们有 θ₀ 和 θ₁ 作为参数和成本函数,它是 θ₀ 和 θ₁ 的函数。因此,这里我们希望最小化成本函数,以便我们可以为我们的模型获得最佳拟合线。如上例所述,我们必须找到成本函数的微分,此时它变为 0,将得到最佳拟合线的 θ₀ 和 θ₁ 值。所以我们想找到最小值。

所以我们有 2 个参数和一个成本函数。如果我们将其绘制在图形中,它将是 3D,如下所示。看到图像,你会得到更好的理解。

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_最小值_06

这里我们在图中有 θ₀、θ₁ 和 J(θ₀, θ₁)。现在取一个随机值 θ₀, θ₁ 并为此计算成本函数。在图形中设置此值,假设该点显示在图形中。我们希望该点最小点。您可以看到,在点斜率变为 0,对于该 θ₀,θ₁ 成本函数具有最低值意味着我们有数据的最佳拟合线。​​A``A'``A'​

现在的问题是,在这一点上如何到达?

程序是首先计算一个点的斜坡。之后,朝那个方向走下。并重复此步骤,直到我们得到 slop 0 的值。

例如,假设你在浓雾中迷失在山上,你只能感觉到脚下地面的坡度。快速到达底部的一个好策略是朝最陡峭的斜坡方向下坡。

让我们看看梯度下降的方程,然后你很容易理解。

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_数据_07

学习率(也称为步长或alpha)是为达到最小值而采取的步骤的大小。这通常是一个较小的值,它根据成本函数的行为进行评估和更新。

所以现在,如果你看到这个等式,就可以理解它是如何工作的。对于任何θ,它将首先计算斜率,然后将这个斜率乘以学习率,使其变为比较小的值,然后从原始θ中减去该值并将θ替换为我们得到的值。这个过程会重复,直到找到任何最小值或收敛。基本上,它将θ移动到局部或全局最小值。

如果α很小,那么算法将经历多次迭代并花费大量时间。
如果α很高,您可能会跳过山谷,这可能会使算法发散并且无法找到最佳解决方案。

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_梯度下降_08

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_梯度下降_09

梯度下降的类型

有 3 种类型:

  1. 批次梯度下降
    它计算训练集中每个示例的误差。评估完所有参数后,它会更新模型参数。
    它的计算效率很高,会产生稳定的误差梯度和收敛性,但它需要在内存中有一个完整的训练集。
  2. 随机梯度下降
    它根据单个训练样本的误差梯度更新参数。
    它比批量梯度下降更快。频繁更新可提供详细的改进速度,但这些更新的成本更高。
  3. 小批量梯度下降
    它将训练集分成小批次,并为每个批次执行更新。
    它平衡了批处理和随机梯度下降,因为它使用两者的组合。

梯度下降的挑战

  • 局部最小值和高原
    并非所有成本函数看起来都不像一个普通的碗。第一个情况,它可能卡在局部最小值。第二个情况,需要很长时间才能达到全局最小值。

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_最小值_10

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_最小值_11

  • 爆炸梯度
    当梯度太大时会发生这种情况,从而创建不稳定的模型。在这种情况下,模型权重将变得太大,最终将表示为 NaN。此问题的一个解决方案是利用降维技术,这有助于最大程度地降低模型中的复杂性。

R语言用极大似然和梯度下降算法估计GARCH(p)过程

本文考虑一些ARCH(p)过程,例如ARCH(1)。

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_数据_12

其中

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_最小值_13

有一个高斯白噪声 

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_最小值_14

.

> for(t in 3:n){
+ sigma2[t]=w+a1*epsilon[t-1]^2+a2*epsilon[t-2]^2
+ epsilon[t]=eta[t]*sqrt(sigma2[t])
+ }

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_数据_15

(红线是条件方差过程)。

> acf(epsilon,lag=50,lwd=2)

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_数据_16

如果

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_梯度下降_17

是一个ARCH(),那么

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_梯度下降_18

就是一个AR(1)过程。所以第一个想法是考虑回归,就像我们对AR(1)所做的那样

> summary(lm(Y~X1,data=db))

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_数据_19

 这里有一些明显的自相关。但由于我们的向量不能被认为是高斯分布的,使用最小二乘法也许不是最好的策略。实际上,如果我们的序列不是高斯分布的,它仍然是有条件的高斯分布的,因为我们假设

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_最小值_20

是高斯(强)白噪声。

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_梯度下降_21

然后,似然函数是

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_数据_22

而对数似然函数为

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_数据_23

而一个自然的想法是定义

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_梯度下降_24

代码简单地说就是

> OPT=optim(par=
+ coefficients(lm(Y~X1,data=db)),fn=loglik)

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_最小值_25

由于参数必须是正数,我们在此假定它们可以写成一些实数的指数。观察一下,这些值更接近于用来生成我们的时间序列的值。

如果我们使用R函数来估计这些参数,我们会得到

> summary(garch(epsilon,c(0,1)))
...

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_最小值_26

 所以

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_最小值_27

的置信区间是 

coef[2,1]+
+ c(-1.96,1.96)*coef[2,2]

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_最小值_28

 实际上,由于我们的主要兴趣是这个

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_梯度下降_29

参数,所以有可能使用轮廓似然方法。

> OPT=optimize(function(x) -proflik(x), interval=c(0,2))
objective-qchisq(.95,df=1)
> abline(h=t,col="red")

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_梯度下降_30

当然,所有这些技术都可以扩展到高阶ARCH过程。例如,如果我们假设有一个ARCH(2)时间序列

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_数据_31

其中

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_梯度下降_32

有一个高斯(强)白噪声 

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_最小值_33

.对数似然性仍然是

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_数据_34

而我们可以定义

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_数据_35

上面的代码可以被修改,以考虑到这个额外的部分。

optim(par=
+ coefficients(lm(Y~X1+X2,data=db)),fn=loglik)

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_梯度下降_36

我们也可以考虑一些广义的ARCH过程,例如GARCH(1,1)。

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_梯度下降_37

其中

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_梯度下降_38

同样,可以使用最大似然技术。实际上,我们也可以用Fisher-Scoring算法编码,因为(在一个非常普遍的情况下 

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_最小值_39

这里 

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_梯度下降_40

. 使用标准的​​梯度下降​​算法,我们可以得到以下对GARCH过程的估计。

> while(sum(G^2)>1e-12){
+ s2=rep(theta[1],n)
+ for (i in 2:n){s2[i]=theta[1]+theta[2]*X[(i-1)]^2+theta[3]*s2[(i-1)]}

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_最小值_41

这里有趣的一点是,我们也得出了(渐进的)方差

>sqrt(diag(solve(H))

什么是梯度下降?用线性回归解释和R语言估计GARCH实例_梯度下降_42


什么是梯度下降?用线性回归解释和R语言估计GARCH实例_最小值_43


▍关注我们 【大数据部落】第三方数据服务提供商,提供全面的统计分析与数据挖掘咨询服务,为客户定制个性化的数据解决方案与行业报告等。



标签:函数,梯度,下降,最小值,实例,GARCH,我们,成本
From: https://blog.51cto.com/u_14293657/5889195

相关文章