【时序大模型总结】学习记录(1)

2024-05-07 12:28

本文主要是介绍【时序大模型总结】学习记录(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.TimeGPT-1

思路:在来自不同领域的大量数据上训练模型,然后对未见过的数据产生零样本的推断。
作者对TimeGPT进行了超过1000亿个数据点的训练,这些数据点都来自开源的时间序列数据。该数据集涵盖了广泛的领域,从金融、经济和天气,到网络流量、能源和销售。
在这里插入图片描述

TimeGPT 是一个基于 Transformer 的时间序列模型,具有基于 [Vaswani et al., 2017] 的自注意力机制。 TimeGPT 采用历史值窗口来生成预测,并添加本地位置编码来丰富输入。该架构由多层编码器-解码器结构组成,每层都有残差连接和层归一化。最后,线性层将解码器的输出映射到预测窗口维度。一般的直觉是,基于注意力的机制能够捕获过去事件的多样性并正确推断未来潜在的分布。

TimeGPT模型结构:

  • 架构基础:TimeGPT基于Transformer架构,使用自注意力机制,类似于在自然语言处理(NLP)中使用的模型。
  • 输入:模型接受历史值窗口作为输入,并添加局部位置编码以丰富输入信息。
    编码器-解码器结构:包含多层,每层都有残差连接和层归一化。
  • 输出:最后,一个线性层将解码器的输出映射到预测窗口维度。

损失函数和评价指标:

  • 损失函数:文章没有明确指出用于训练TimeGPT的具体损失函数,但通常时间序列预测模型会使用均方误差(MSE)或其变体作为损失函数。
  • 评价指标:
    相对平均绝对误差 (rMAE):用于衡量模型预测与实际值之间的误差,是平均绝对误差(MAE)与基线模型(如季节性天真模型)性能的比值。
    相对均方根误差 (rRMSE):与rMAE类似,但基于均方根误差(RMSE)计算。
  • 其他关键点:
    训练数据集:TimeGPT在超过1000亿数据点的公开可用时间序列数据集上进行训练,涵盖金融、经济、医疗保健、天气等多个领域。
    applicable to a dataset with n time series and a forecast horizon of h, are described in Equation 2

不确定性量化:

TimeGPT使用基于历史错误的一致性预测来估计预测区间,这有助于风险评估和决策制定。
零样本推断 (Zero-shot inference):TimeGPT能够在未经微调的情况下直接在新的预测任务上表现良好。
微调 (Fine-tuning):通过在特定任务的数据集上进一步训练,可以调整模型参数以适应新任务的需求。

https://blog.csdn.net/fengdu78/article/details/134301864

Chronos模型

注意:内容由kimi大模型生成,未做完全的校正,请辨别使用。

这篇文章介绍了一个名为Chronos的时间序列预测框架。Chronos利用了预训练的概率时间序列模型,并通过以下方式进行操作:

模型结构:

  • Chronos通过缩放和量化将时间序列值转换为固定词汇表中的离散标记(tokens)。
  • 它使用现有的基于Transformer的语言模型架构来训练这些标记化的时间序列,不需要对模型架构进行任何改变。
  • Chronos选用了T5家族的变体作为其主要架构,这些变体的参数量从20M到710M不等。

损失函数:

  • Chronos使用交叉熵损失函数来训练模型,该损失函数衡量的是量化的真实标签分布与模型预测分布之间的差异。

评价指标:

  • 文章使用了加权分位数损失(WQL)来评估概率预测的质量,这是一种与连续排序概率分数(CRPS)相关的度量,常用于评估概率预测。
  • 为了评估点预测性能,文章使用了平均绝对缩放误差(MASE),这是一种考虑了时间序列季节性的误差度量。

数据增强技术:

  • Chronos结合了数据增强策略,包括TSMixup和KernelSynth,以增强训练数据的多样性,提高模型的鲁棒性和泛化能力。
  • TSMixup通过随机采样基础时间序列,并基于它们进行凸组合来生成新的时间序列。
  • KernelSynth使用高斯过程通过随机组合核函数来生成合成时间序列。

实验结果:

  • Chronos在包含42个数据集的综合基准测试中表现出色,这些数据集既包括了训练语料库中的数据集,也包括了新的未见数据集。
  • Chronos模型在训练语料库中的数据集上显著优于其他方法,在新的未见数据集上也展现出了可比性,甚至是更好的零样本(zero-shot)性能。

结论:

  • Chronos证明了预训练的语言模型架构在时间序列预测任务上的有效性,即使是在没有特定于时间序列的设计或特征的情况下。
  • Chronos作为一个通用的时间序列模型,其准确性和相对较小的模型尺寸使其成为零样本预测应用的首选工具。
  • 通过进一步的微调,Chronos模型的性能还有望得到提升。

文章还讨论了Chronos的未来发展方向,包括扩展到多变量预测、考虑共变量的时间序列预测,以及其他时间序列分析任务。此外,文章还探讨了提高模型推理速度和处理更高频数据的可能性。最后,文章强调了高质量公共时间序列数据集的需求,以及合成数据生成方法的进步,这些对于发展和改进像Chronos这样的预训练模型至关重要。

回归函数评价指标

MSE均方误差
MSE(Mean Square Error):
在这里插入图片描述

    均方误差描述了样本真实值与预测值差方求和的平均值,在机器学习中,利用均方误差最小化优化模型的方法称为“最小二乘法”

RMSE
在这里插入图片描述

    RMSE(Root Mean Square Error)即对MSE开平方根:

MAE平均绝对误差
在这里插入图片描述
MAE(Mean Absolute Erroe)即真实值与预测值差的绝对值和求平均:

带归一化的误差求解方法
MAPE
MAPE(Mean Absolute Percentage Error):
在这里插入图片描述

    即求所有样本真实值与预测值差绝对值与真实值的比例的和求平均。

MSPE
MASE(Mean Scaled Percentage Error)平均平方百分比误差:
在这里插入图片描述
即求所有样本的真实值与预测值的差与真实值的比例求平方的和求平均。

MASE(chronos大模型中使用)
mean absolute scaled error (MASE, Hyndman & Koehler (2006))
平均绝对比例误差(Mean Absolute Scaled Error,简称MASE)是一种用于评估时间序列预测模型性能的指标。与其他误差指标不同,MASE 可以用于比较不同时间序列数据集的模型性能,因为它可以归一化误差值。
在这里插入图片描述
通常,MASE的值越小,表示预测的准确度越高。MASE的值可以为任何正实数,因此没有固定的范围或取值区间。


简单理解方式:本模型的MAE与naive模型或者说基线模型的比值。
在这里插入图片描述

  1. MASE 表示预测算法相对于基线模型预测的有效性。其值大于1表示该算法与天真预测相比表现较差。

  2. 当任何时间步的实际时间序列输出为零时,MASE 可避免平均绝对百分比误差 (MAPE) 所面临的问题。在这种情况下,MAPE 的输出是无限的,没有意义。不过,我们注意到,对于在所有时间步长上所有值都等于零的时间序列,MASE 输出也将是不确定的,但这种时间序列并不现实。

  3. MASE 与预测规模无关,因为它是用预测误差比来定义的。这意味着,如果我们预测的是每小时通过路由器的互联网流量包数等高价值时间序列,与预测每小时通过繁忙交通灯的行人数相比,MASE 值将是相似的。

Mean squared scaled error (MSSE) or root mean squared scaled error (RMSSE).
与MASE类似。

sktime里有各种评价指标的实现。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
MAE(平均绝对误差): MAE 值为 1.468。它表示预测值和实际值之间误差的平均值。在本例中,平均误差幅度为 1.468 度。MAE 值越低,表示准确度越高,因为这意味着模型的预测值平均更接近实际值。
MSE(平均平方误差): MSE 值为 2.805。它衡量的是预测值和实际值之间平方差的平均值。与 MAE 相比,MSE 更重视较大的误差。在本例中,平均平方误差为 2.805。需要强调的是,该指标的单位是原始量级的平方单位,在本例中为平方度。MSE 越低,表示精度越高。
RMSE(均方根误差): RMSE 值为 1.675。它是 MSE 的平方根,用于衡量误差的标准偏差。RMSE 与预测值和实际值的单位相同。在本例中,误差的平均标准偏差为 1.675 度。同样,RMSE 越低,表示精度越高。
MAPE(平均绝对百分比误差): MAPE 值为 8.42%。它表示预测值和实际值之间相对于实际值的平均百分比差异。当您想了解以百分比表示的相对误差时,MAPE 非常有用。在本例中,平均百分比差异为 8.42%。在这种情况下,较低的 MAPE 也表示较高的准确度。
SMAPE(对称平均绝对百分比误差): SMAPE 值为 8.15%。它与 MAPE 类似,但使用的是绝对差值的平均值以及预测值和实际值的总和。SMAPE 提供了预测值与实际值之间百分比差异的对称视图。在本例中,平均对称百分比差异为 8.15%。SMAPE 越低,说明准确度越高。
MASE(平均绝对缩放误差): MASE 值为 0.333。它衡量的是相对于天真基线模型( naive baseline model)平均绝对误差的预测准确度。MASE 是比较不同时间序列数据集预测准确性的有用指标。在本例中,该模型的预测准确度约为天真基线的 0.333 倍。MASE 越低,表示准确度越高,因为这意味着与基线相比,模型预测的准确度更高。因此,MASE 值越低越好。

参考

  • Another look at measures of forecast accuracy 【推荐】
  • https://mlpills.dev/time-series/error-metrics-for-time-series-forecasting/ [推荐,说明了指标的优劣]
  • https://www.sktime.net/en/latest/api_reference/auto_generated/sktime.performance_metrics.forecasting.mean_squared_scaled_error.html
  • https://en.wikipedia.org/wiki/Mean_absolute_scaled_error
  • https://blog.csdn.net/weixin_43786241/article/details/109626631

TILDE-Q:让时间序列预测结果更真实的损失函数

解决问题:常用的损失函数MSE、MAE是让预测结果与每个真实值的差距最小。所以训练的模型可能无法预测出准确的形状,而只是找到一种最简单的方法让点预测结果误差最小。
下述这篇文章为了解决这个问题,文中提出了一种新的时间序列预测损失函数,能够更加关注时间序列预测结果的形状和真实序列是否匹配,弥补了MSE等点误差损失函数的缺陷。

论文标题:TILDE-Q: A TRANSFORMATION INVARIANT LOSS FUNCTION FOR TIME-SERIES FORECASTING
下载地址:https://arxiv.org/pdf/2210.15050v1.pdf
源码:https://github.com/HyunWookL/TILDE-Q (备注:没太多人使用,目前效果存疑)

https://cloud.tencent.com/developer/article/2195702

相关性度量

MSE用来评估预测值与真值间误差的绝对值,但是无法度量相关性,因此常用PCC(皮尔逊相关)计算二者相关性作为补充的评价指标。
一致性度量: CCC则既能够体现相关性(趋势),又能够体现误差值。

一致性相关系数Concordance Correlation Coefficient

CCC结合了MSE和PCC的特点,提供了一种可以同时度量相关性和绝对插值的指标,具体定义如下:
在这里插入图片描述
其中
ρ表示相关系数。绝对差值越小,CCC值越大,相关性越强CCC值也越大,因此该值越接近1,则算法的表现越好。

主要应用于:衡量多种方法的一致性

详细理解
用于评价两份定量资料的一致性或可靠性,它在Pearson相关系数的基础上进行了改进,用Pearson相关系数描述一致性的缺点是,无法考查两个变量的差距有多大,而CCC还同时考察了两个变量偏离45°线的程度,可以反映两个变量的差距大小,如果两个变量的Pearson相关系数较大,且偏离45°线很小,则说明一致性较好。 ( https://www.bilibili.com/read/cv11060862/ )
在这里插入图片描述

有个疑问,PCC可以作为回归的衡量指标吗?
个人思考:PCC主要是衡量两个变量之间的线性相关,如果使用这个,仅能去评价预测值和真实值的线性相关性,但无法去衡量预测值与真实值之间实际的差异还有多少,即无法学习或者衡量真实分布的量纲。
而且,PCC也不是衡量分布一致性的指标,常常衡量两个概率分布之间的差异性指标有:KL(Kullback-Leibler divergence)散度、JS(Jensen-Shannon divergence)散度、交叉熵(cross entropy)、Wasserstein距离等。

参考:
https://blog.csdn.net/Avery123123/article/details/102681688
https://en.wikipedia.org/wiki/Concordance_correlation_coefficient
https://www.cnblogs.com/duduheihei/articles/14088547.html

PCC与CCC的区别联系

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

https://www.alexejgossmann.com/ccc/

这篇关于【时序大模型总结】学习记录(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/967352

相关文章

MyBatis的update语句的返回值改为从匹配数改为受影响的记录数,向mysql连接添加useAffectedRows=true一个参数即可。

1、现象mysql更新update语句执行时,没有内容变更的话,会返回“0”;存在内容更新的话,会返回会返回有内容更新的记录数“1”。  2、mybatis默认情况,没有内容更新也是返回“1”。这么怎么会是”1“,不应该是”0“???其实默认mybatis返回的是 Rows matched “1”,而不是 “ 0 row affected ”中的 “0”。  3、那需要怎么才能让m

Linux命令学习之二

每日一结 ​               命令置换:是将一个命令的输出作为另一个命令的参数,命令格式如下: commond1 `command2` 其中,命令command2的输出将作为命令command1的参数,需要注意的是, 命令置换的单引号为ESC键下方的 ` 其意思就是说,先运行单引号内的命令,再将其命令作为

Linux命令学习之一

每日一结                                                                                        注:当用户不确定一个软件包的类型时, 可使用file命令查看文件类型

Android_03_数据库的使用总结

前言: 1>区分SQL和SQLite SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。 SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。 不幸地是,存在着很多不同版本的 SQL 语言,但是为了与 ANSI 标准相

Android图片轮播的实现总结

前言: 在很多app中,我们都可以看到几张图片每隔一段时间就切换一下,这就是我们所称的图片轮播的功能,其主要实现就是用到了ViewPager, 下面我们来着重讲解一下其具体实现 效果图: 步骤一:在XML中添加ViewPager控件 比如: <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:a

自定义ViewGroup的总结(侧滑特效)

前言: 和自定义View控件一样,我们有时也需要自定义我们想要的ViewGroup,那么此时,我们就需要让其继承ViewGroup,然后重写 里边的onMeasure()和onLayout()方法,下面以侧滑特效为例,来讲解一下自定义ViewGroup所需的流程,关于侧滑特效, 其整体效果图如下: 对于自定义ViewGroup,主要有以下几步: 步骤一:编写ViewGroup

自定义View的总结(自定义滑动开关)

前言: 由于有些控件,在android中样式比较挫,并不能满足我们的需求,此时,我们可以将其进行一个自定义,下面一以一个自定义编写的ToggleButton为例, 来简要说明下,自定义所涉及到的一些步骤;以下是自定义控件ToggleButton的效果图: 其是由两张图片组成的: <1>   <2>  下面我们通过这个示例,来说明下,如何编写一个自定义view控件!!

关于隐藏Android标题栏总结

1>区分状态栏/标题栏/导航栏 状态栏(Status Bar) 标题栏(Title Bar) 导航栏(Navigation Bar) 2>区分Title Bar/Action Bar/Tool Bar Title Bar就是我们所俗称的标题栏,在Android 3.0 (API level 11)的时候,引入的Action Bar,其就是用来取代Title Bar的,

Android的Paint和Canvas的使用总结

前言: 在自定义控件时,我们有时可能会用到Paint和Canvas这两个类, Paint相当于我们在画画时的画笔,Canvs相当于我们在画画时的画布, 下面来简单讲一下这两个类常见的一些用法 Paint的使用总结: setAlpha(int a): 设置画笔的透明度,这样画笔所画的位置就会呈一定的透明度 setAntiAlias(boolean aa): 设置 tr

Android的FragmentTabHost使用总结(顶部或底部菜单栏)

前言: 我们经常看到一些app的自带一些标签,并且可以来回进行切换, 本章我们就通过FragmentTabHost来学习一下其如何实现,效果图如下: 步骤一: 编写布局文件 <android.support.v4.app.FragmentTabHost android:layout_width="match_parent" android:la