资源行业动态Time2Vec 时序特征编码

Time2Vec 时序特征编码

2020-02-06 | |  247 |   0

原标题:Time2Vec 时序特征编码

来源:AI 研习社          链接:https://www.yanxishe.com/TextTranslation/377


在涉及时间序列的每个机器学习问题中,时间都是黄金信息。作为数据科学家,我们必须尽最大努力提取时间模式,并使我们的数据能够自我说明。在预处理过程中,常见的程序包括标准化(平稳性检查,自相关删除...),创建和编码分类时间特征(日,周,月,季节...),手动特征工程(傅立叶变换...)。并非总是能付出我们的努力,因为在建模过程中,我们选择的模型可能无法将时间本身正确地视为一项功能。


在本文中,我尝试重现论文``Time2Vec:学习时间的向量表示''中提出的方法,该方法的最终范围是为时间开发通用的模型不可知的表示形式,该表示形式可以在任何体系结构中潜在地使用(我采用此解决方案在Keras开发神经网络。作者不想提出一个用于时间序列分析的新模型,而是他们的目标是以向量嵌入的形式提供时间表示,以便以更好的方式自动执行特征工程过程和模型时间。


数据集

为了提供证据和整个解决方案的具体实用性,我们需要一个足够的数据集。就我而言,我需要时间序列格式的数据,而没有以额外功能形式出现的任何冗余信息。这种情况在自回归问题中很常见,在这种情况下,我们只有一个时间序列,我们将其用作预测未来的功能。在现实生活中,这是一项常见的任务,因此查找数据集并不困难。我在Kaggle上找到了一个不错的人。它存储了威尼斯的大量历史水位。预测这些值是一项艰巨的任务。每天的游客都可以访问该城市各个部分的详细而准确的海平面报告。


我爱威尼斯,我的目标不是与他们竞争。我们也没有足够的信息来提供真正明显的性能(温度,月相,天气状况等额外的回归因素可以提供足够的推动力)。在这里,我们必须压缩唯一可用的历史数据来提供下一个小时水位的预测。

02.png

一周中每小时水位(cm)的示例


TIME2VEC的实现

从数学上讲,实现Time2Vec非常容易:


03.png

来自:https://arxiv.org/pdf/1907.05321.pdf


其中k是time2vec维,tau是原始时间序列,F是周期激活函数,omega和phi是一组可学习的参数。 在我的实验中,我将F设置为sin函数,以便能够选择一种算法来捕获数据中的周期性行为。 同时,线性项代表时间的进程,可用于捕获依赖于时间的输入中的非周期性模式。


简单性使得该时间向量表示可以通过不同体系结构轻松使用。 以我为例,我尝试在修改简单Keras密集层的神经网络结构中传递此概念。

class T2V(Layer):def __init__(self, output_dim=None, **kwargs):
       self.output_dim = output_dim
       super(T2V, self).__init__(**kwargs)def build(self, input_shape):
       
       self.W = self.add_weight(name='W',
                     shape=(self.output_dim,
                            self.output_dim),
                     initializer='uniform',
                     trainable=True)
       
       self.B = self.add_weight(name='B',
                     shape=(input_shape[1],
                            self.output_dim),
                     initializer='uniform',
                     trainable=True)
       
       self.w = self.add_weight(name='w',
                     shape=(1, 1),
                     initializer='uniform',
                     trainable=True)
       
       self.b = self.add_weight(name='b',
                     shape=(input_shape[1], 1),
                     initializer='uniform',
                     trainable=True)
       
       super(T2V, self).build(input_shape)def call(self, x):
       original = self.w * x + self.b
       x = K.repeat_elements(x, self.output_dim, -1)
       sin_trans = K.sin(K.dot(x, self.W) + self.B)
       return K.concatenate([sin_trans,original], -1)def compute_output_shape(self, input_shape):
       return (input_shape[0], input_shape[1], self.output_dim+1)

此自定义层的输出尺寸是用户指定的隐藏尺寸(1≤i≤k),即从网络中学习到的正弦波,加上输入的线性表示(i = 0)。 有了此仪器,我们只需要将其与其他层堆叠在一起,并在案例研究中尝试其功能。


该模型

Time2Vec是否可以很好地表示时间? 为了回答这个问题,我比较了在预测任务中实现的性能,建立了两种不同的顺序神经网络模型。 第一个输入是我们的自定义Time2Vec层作为输入,该层堆叠在一个简单的LSTM层上。 第二层仅由先前结构中使用的简单LSTM层组成。

def T2V_NN(dim, t2v_dim):
   inp = Input(shape=(dim,1))
   x = T2V(t2v_dim)(inp)
   x = LSTM(32)(x)
   x = Dense(1)(x)
   m = Model(inp, x)
   return mdef NN(dim):
   inp = Input(shape=(dim,1))
   x = LSTM(32)(inp)
   x = Dense(1)(x)
   m = Model(inp, x)
   return m

结果

我将数据的前70%用作训练集,将其余30%用作测试。 我训练了100个时期的模型,对于LSTM + T2V,我的MSE约为10.09,对于简单LSTM,我的MSE达到了13.12。


为了提供性能差异的证据,我决定比较最终预测的分布:

04.png

测试数据的预测分布。 橙色:LSTM。 蓝色:T2V + LSTM


乍一看,分布之间有很多重叠。 但是,我们无法看到两个样本之间在统计上是否存在显着差异。 在这种情况下,引导程序将为我们提供帮助!


引导程序是一种随机重采样的直观技术,它允许估计几乎所有统计信息的采样分布。 它的实现非常容易。 在我们的情况下,我们必须从预测分布中提取重复的小样本,为这些样本中的每一个计算均值,创建这些均值和voilà的新分布

05.png

测试数据的自举预测分布。 橙色:LSTM。 蓝色:T2V + LSTM


这两个新的重采样分布对我们来说很熟悉。 它们是正态分布的,因此比较起来比较容易。 为了使此比较容易,我将第一个分布的第90个百分位数和第二个分布的第10个百分位数进行比较,并检查是否存在重叠。 我们可以看到29.77(来自没有T2V的LSTM)小于32.23(来自带有T2V的LSTM)。 换句话说,我们可以得出90%的置信度,即预测分布之间存在统计差异,并且T2V能够显着提高性能。


摘要

在这篇文章中,我提出了一种自动学习时间特征的方法。 特别是,我再现了Time2Vec,它是时间的矢量表示,并使其适应了神经网络体系结构。 最后,我能够在实际任务中展示这种表现的有效性。 正如本文的作者所建议的,我想指出的是,T2V并不是用于时间序列分析的新模型,而是一种简单的矢量表示形式,可以轻松地将其导入许多现有和未来的体系结构中并改善其性能。


检查我的GITHUB回购

保持联系:Linkedin


参考资料

Time2Vec:学习时间的向量表示。 Seyed Mehran Kazemi,Rishab Goel,Sepehr Eghbali,Janahan Ramanan,Jaspreet Sahota,Sanjay Thakur,Stella Wu,Cathal Smyth,Pascal Poupart,Marcus Brubaker

THE END

免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。

合作及投稿邮箱:E-mail:editor@tusaishared.com

上一篇:智能音箱是怎么察觉你情绪的?

下一篇:LinkedIn 机器学习架构

用户评价
全部评价

热门资源

  • 国内人才报告:机...

    近日,BOSS 直聘职业科学实验室 &BOSS 直聘研究院...

  • AI使物联网更智能...

    看到微软对物联网和人工智能的结合感兴趣是一个明...

  • 推荐一批学习自然...

    这里推荐一批学习自然语言处理相关的书籍,当然,...

  • 安防智能化大势下...

    大部分传统安防设备不仅拍摄视野有限,而且无法事...

  • 20亿创业基金、10...

    近日,杭州举办了建设国家新一代人工智能创新发展...