首页 > 其他分享 >R语言集成模型:提升树boosting、随机森林、约束最小二乘法加权平均模型融合分析时间序列数据

R语言集成模型:提升树boosting、随机森林、约束最小二乘法加权平均模型融合分析时间序列数据

时间:2023-11-23 23:47:38浏览次数:47  
标签:语言 预测 模型 时间 随机 boosting 序列 乘法

原文链接:http://tecdat.cn/?p=24148

原文出处:拓端数据部落公众号

 

最近我们被要求撰写关于集成模型的研究报告,包括一些图形和统计输出。 特别是在经济学/计量经济学中,建模者不相信他们的模型能反映现实。比如:收益率曲线并不遵循三因素的Nelson-Siegel模型,股票与其相关因素之间的关系并不是线性的,波动率也不遵循Garch(1,1)过程,或者Garch(?,?)。我们只是试图为我们看到的现象找到一个合适的描述。

模型的发展往往不是由我们的理解决定的,而是由新的数据的到来决定的,这些数据并不适合现有的看法。有些人甚至可以说,现实没有基本的模型(或数据生成过程)。正如汉森在《计量经济学模型选择的挑战》中写道。

“模型应该被视为近似值,计量经济学理论应该认真对待这一点”

所有的理论都自然而然地遵循 "如果这是一个过程,那么我们就显示出对真实参数的收敛性 "的思路。收敛性很重要,但这是一个很大的假设。无论是否存在这样的过程,这样的真实模型,我们都不知道它是什么。同样,特别是在社会科学领域,即使有一个真正的GDP,你可以认为它是可变的。

这种讨论引起了模型的组合,或者预测未来的组合。如果我们不知道潜在的真相,结合不同的选择,或不同的建模方法可能会产生更好的结果。

 

模型平均

让我们使用 3 种不同的模型对时间序列数据进行预测。简单回归 (OLS)、提升树和随机森林。一旦获得了三个预测,我们就可以对它们进行平均。

   
# 加载代码运行所需的软件包。如果你缺少任何软件包,先安装。

tem <- lappy(c("randomoest", "gb", "quanteg"), librry, charter.oly=T)


# 回归模型。

 



moelm <- lm(y~x1+x2, data=f)


molrf <- ranmFrst(y~x1+x2, dta=df)

mogm <- gb(ata=df, g.x=1:2, b.y=4
faiy = "gssian", tre.comle = 5, eain.rate = 0.01, bg.fratn = 0.5)



# 现在我们对样本外的预测。

#-------------------------------

Tt_ofsamp <- 500


boosf <- pbot(df_new$x1, df_new$x2)

rfft <- pf(df_new$x1, df_new$x2)

lmt <- pm(df_new$x1, df_new$x2)

# 绑定预测

mtfht <- cbind(bo_hat, f_fat, lm_at)

# 命名这些列

c("Boosting", "Random Forest", "OLS")

# 定义一个预测组合方案。


# 为结果留出空间。

resls <- st()

# 最初的30个观测值作为初始窗口

# 重新估计新的观测值到达

it_inw = 30

for(i in 1:leth(A_shes)){
A_nw$y, mt_fht,Aeng_hee= A_scmes[i, n_wiow = intwdow )



}

# 该函数输出每个预测平均方案的MSE。


# 让我们检查一下各个方法的MSE是多少。

atr <- apy(ma_ht, 2, fucon(x) (df_wy - x)^2 )

apy(ma_er[nitnow:Tou_o_saple, ], 2, fncon(x) 100*( man(x) ) )

在这种情况下,最准确的方法是提升。但是,在其他一些情况下,根据情况,随机森林会比提升更好。如果我们使用约束最小二乘法,我们可以获得几乎最准确的结果,但这不需要事先选择 Boosting 、Random Forest 方法。继续介绍性讨论,我们只是不知道哪种模型会提供最佳结果以及何时会这样做。

加权平均模型融合预测

 y_t 是你的预测变量, \widehat{y}_{i,t} 是时间预测 吨 ,从方法 一世, 和 我 = 1 例如OLS, 我=2 提升树和 我 = 4 是随机森林。您可以只取预测的平均值:

  \[\frac{\sum^3_{i=1} \widehat{y}_{i,t} }{3}.\]

通常,这个简单的平均值表现非常好。

在 OLS 平均中,我们简单地将预测投影到目标上,所得系数用作权重:

  \[\widehat{y}^{combined}_t = \widehat{w}_{0t} + \sum_{i = 1}^3 \widehat{w}_{i,t} \widehat{y}_{它}。\]

这是相当不稳定的。所有预测都有相同的目标,因此它们很可能是相关的,这使得估计系数变得困难。稳定系数的一个不错的方法是使用约束优化,即您解决最小二乘问题,但在以下约束下:

  \[w_{0t} = 0 \quad \text{and} \quad \sum_{i = 1}^3 w_{it} = 1, \qquad \forall t.\]

另一种方法是根据预测的准确程度对预测进行平均化,直到基于一些指标如根MSE。我们反转权重,使更准确的(低RMSE)获得更多权重。

  \[w_{it} = \frac{\left(\frac{RMSE_{i,t} }{\sum_{i = 1}^3 RMSE_{i,t}}\right)^{-1}}{ \sum_{i = 1}^3 \left(\frac{RMSE_{i,t} }{\sum_{i = 1}^3 RMSE_{i,t}}\right)^{-1} } = \ frac{\frac{1}{RMSE_{i,t}}}{\sum_{i=1}^3\frac{1}{RMSE_{i,t}}}.\]

您可以绘制各个方法的权重:

这是预测平均方法。

   


## 需要的子程序。

er <- funcion(os, red){ man( (os - ped)^2 ) }



## 不同的预测平均方案

##简单


  rd <- aply(a_at, 1, an)

  wehs <- trx( 1/p, now = TT, ncl = p)

  ## OLS权重


   wgs <- marx( nol=(p+1)T)  

for (i in in_wnow:TT) {

  wghs[i,] <- lm $oef

pd <- t(eigs[i,])%*%c(1, aht[i,] )

## 稳健的权重



   for (i in iitnow:T) {

    whs[i,] <- q(bs[1:(i-1)]~ aft[1:(i-1),] )$cef

   prd[i] <- t(wihs[i,] )*c(1, atfha[i,])

   ##基于误差的方差。MSE的倒数


  for (i in n_no:TT) {

   mp =aply(aerr[1:(i-1),]^2,2,ean)/um(aply(mter[1:(i-1),]^2,2,man))

  wigs[i,] <- (1/tmp)/sum(1/tep)

  ped[i] <- t(wits[i,] )%*%c(maat[i,] )

  ##使用约束最小二乘法



for (i in itd:wTT) {

  weht[i,] <- s1(bs[1:(i-1)], a_fat[1:(i-1),] )$wigts

  red[i] <- t(wehs[i,])%*%c(aht[i,] )

  ##根据损失的平方函数,挑选出迄今为止表现最好的模型


    tmp <- apy(mt_fat[-c(1:iit_wdow),], 2, ser, obs= obs[-c(1:ntwiow)] )

    for (i in it_idw:TT) {

    wghs[i,] <- rp(0,p)

    wihts[i, min(tep)] <- 1

    ped[i] <- t(wiht[i,] )*c(mht[i,] )

    } }

MSE <- sr(obs= os[-c(1:intiow)], red= red[-c(1:itwiow)])

最受欢迎的见解

1.在python中使用lstm和pytorch进行时间序列预测

2.python中利用长短期记忆模型lstm进行时间序列预测分析

3.使用r语言进行时间序列(arima,指数平滑)分析

4.r语言多元copula-garch-模型时间序列预测

5.r语言copulas和金融时间序列案例

6.使用r语言随机波动模型sv处理时间序列中的随机波动

7.r语言时间序列tar阈值自回归模型

8.r语言k-shape时间序列聚类方法对股票价格时间序列聚类

9.python3用arima模型进行时间序列预测

标签:语言,预测,模型,时间,随机,boosting,序列,乘法
From: https://www.cnblogs.com/tecdat/p/17852787.html

相关文章

  • 在r语言中使用GAM(广义相加模型)进行电力负荷时间序列分析|附代码数据
    原文链接:http://tecdat.cn/?p=9024原文出处:拓端数据部落公众号  最近我们被要求撰写关于GAM的研究报告,包括一些图形和统计输出。用GAM进行建模时间序列我已经准备了一个文件,其中包含四个用电时间序列来进行分析。数据操作将由data.table程序包完成。将提及的智能电表数据......
  • C#通过循环绘制九九乘法表以及杨辉三角形
    九九乘法表 定义两个变量intx,y;for(x=1;x<=9;x++)//循环列{for(y=1;y<=x;y++)//循环行{Console.Write("{1}*{0}={2}",x,y,x*y);//显示出每一个式子}Console.WriteLine();//在每一行换行}杨辉三角形......
  • 大模型基础
    学习以下文章:揭密Transformer:大模型背后的硬核技术人人都需要掌握的PromptEngineering技巧通俗解读大模型微调(FineTuning)大模型时代的应用创新范式如何理解大模型中的参数?大模型可以看作是数据转换问题,即输入\(X\)序列,输出\(Y\)序列,其中\(Y=WX\),这里的W矩阵就可以......
  • 三大基础方案和AI出海计划重磅发布!加速盘古大模型生态发展
    本文分享自华为云社区《三大基础方案和AI出海计划重磅发布!加速盘古大模型生态发展》,作者:华为云头条。近日,以“开放同飞,共赢行业AI新时代”为主题的华为云盘古大模型主题论坛·深圳站成功举办。华为云与多位不同行业的客户和伙伴围绕AI大模型、技术创新应用和产业发展新机遇等话......
  • Unity3d中使用sketchup 3dwarehouse模型
    1、选择菜单【文件】【导出】【三维模型】,打开导出对话框。选择保存类型为“*.fbx”。2、进行选项配置,“几何图形”类别勾选【导出两边的平面】【分离不连接的平面】,“材料”类别勾选【导出纹理映射】,“比例”类别中勾选【切换yz坐标(Y向上)】,单位选择【米】点击【确定】按钮。3......
  • 程序员指南|学会与大模型相处,提升个人开发效率
    过去一年,通过各种平台我们可以轻而易举的接收到人们关于使用大模型遇到诸多问题的声音。然而,显而易见的是,大模型可以在许多方面提高我们的效率,尤其是在处理文档、测试用例和代码等繁琐事务方面。大模型的优势和短板是什么?首先,我们需要了解大模型的概念。由于训练数据和参数等多种......
  • 清华发布LCM-LoRA模型:图像生成速度提升10倍,下载量破20万
    LCMLoRA模型概述LCMLoRA模型是一种创新的深度学习模型,它通过特殊的技术手段,显著提高了图像生成的效率。这种模型特别适用于需要快速生成高质量图像的场景,如艺术创作、实时图像处理等。技术实现LCMLoRA模型的核心在于其独特的LoRA(Low-RankAdaptation)技术。这种技术的基本原理是......
  • 程序员指南|学会与大模型相处,提升个人开发效率
    过去一年,通过各种平台我们可以轻而易举的接收到人们关于使用大模型遇到诸多问题的声音。然而,显而易见的是,大模型可以在许多方面提高我们的效率,尤其是在处理文档、测试用例和代码等繁琐事务方面。大模型的优势和短板是什么?首先,我们需要了解大模型的概念。由于训练数据和参数等多......
  • 基于空间截面的通用地理因果模型GCCM
      ......
  • 又一个涵盖前后端+DevOps+OpenAI大模型的高并发项目启动了
    大家好,我是冰河~~今天,正式通知大家一件事情:又到了启动新项目的时候,这也是冰河技术知识星球继Seckill秒杀系统项目后,又一个高并发实战项目。星球其他项目与专栏,大家可移步到冰河的个人站点:https://binghe.gitcode.host进行查看。那这次又是怎样的一个高并发项目呢?没错,这次......