时序点过程学习笔记

Posted 朝晖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了时序点过程学习笔记相关的知识,希望对你有一定的参考价值。

https://zhuanlan.zhihu.com/p/110171621

一、什么是时序点过程

现实世界中有这么个问题:有这么一系列历史事件,每个事件都有其对应的发生时间,也有其所属的事件类型,基于这一系列历史事件,预测下一个要发生的是什么类型的事件,以及其发生的时间。

比如下一次地震发生在何时,何地是事件类型,比如一种股票的下一次买卖将发生在何时,买入或卖出是事件类型,比如用户将在何时去下一个目的地,目的地是哪里是事件类型。

点过程可以对这一系列历史事件建模,来解决这个预测问题。

[公式]

时序点过程的核心是强度函数 [公式] 。 [公式] 是截止 [公式] 时刻之前事件类型 [公式] 发生的总次数。 [公式] 代表在时间窗口 [公式] 内,事件类型 [公式] 发生的概率。

[公式]

其中 [公式] 代表基于历史行为,事件类型 [公式] 在 [公式] 时刻发生的条件概率密度函数; [公式] 代表基于历史行为,至少有一个事件类型在 [公式] 发生的条件概率。强度函数 [公式] 为:

[公式]

[公式]

因此,只要能根据历史事件模拟出强度函数 [公式] ,则可以根据 [公式] 预测下一个事件。对 [公式] 的模拟将点过程分为传统点过程和深度点过程。

二、传统点过程

1.homogeneous poisson process假设 [公式] 独立于历史事件,且随着 [公式] 的变化恒定,即 [公式] 。inhomogeneous poisson process假设 [公式] 独立于历史事件,且随着 [公式] 的变化而变化,即 [公式]

2.hawkes process 认为历史事件有激励作用: [公式] , [公式] , [公式] , [公式]

3. self-correcting process 认为强度函数的趋势是一直在增大,但是当一个事件发生后,会先减小。 [公式] , [公式] , [公式]

三、深度点过程

传统点过程缺点:

(1)传统点过程对强度函数有着上述设定,很有可能不符合实际情况,比如历史事件对强度函数的影响并不一定是累加的;

(2)如果有多种事件类型的话,还需作出各个事件类型是互相独立的假设,并且对每个事件类型求强度函数;

(3)传统点过程对数据的缺失处理不是很好,有时我们只能观测到一部分事件。

深度点过程就无需这么麻烦,用神经网络这样的非线性函数模拟强度函数,这样一个黑盒子无需设定任何先验知识。

1. Recurrent Markd Temporal Point Processes:Embedding Event History to Vector(kdd2016)

输入层:事件类型和发生时间为输入。事件类型用词向量,时间用时间的特征(比如是否周末,是否深夜等)

事件类型生成:普通的softmax

强度函数为:

[公式]

时间生成:用下面这种求平均值的算法比较复杂,没有数值解,有一种简单的解法,我还没弄明白是啥...

[公式]

[公式]

loss: [公式]

实验使用的四个数据集:

New York City Taxi Dataset:共173 million记录,299个事件类型,670753 个序列

Financial Transaction Dataset:共0.7 million记录,2个事件类型,693499 个序列

Electrical Medical Records:204个事件类型,650个病人的序列

Stack OverFlow Dataset :共480k记录,81个事件类型,6k用户的序列

代码地址: 

2. The Neural Hawkes Process: A Neurally Self-Modulating Multivariate Point Process(nips 2017)

上一篇论文中,lstm的不同时步的hidden state是离散的,换句话说:当一个新事件发生后,断崖式变化。本文提出一个连续的hidden state变化方式。

[公式] [公式]

事件 [公式] 到事件 [公式] 之间的 [公式] 时刻,强度函数由 [公式] 决定,[公式] 由 [公式] 决定。注意 [公式] 在上篇论文是没有的哦,因为上一篇论文只有事件 [公式] 到事件 [公式] ,没有他们之间的 [公式] 时刻

[公式]

[公式]

[公式]

这里的 [公式] 和 [公式] 都不和上一篇论文中一样,而是 [公式] 和 [公式] 在 [公式] 时刻的值。

可见 [公式] 事件 [公式] 到事件 [公式] 之间从[公式] 向 [公式] 变化的,至于 [公式] 怎么来的,大概是训练的参数吧(还没太明白)。

loss是根据强度函数算的:

[公式]

本文的测试数据集:

Retweets Dataset:3个事件类型,1739547 个序列,序列长度109

MemeTrack Dataset:5000个事件类型,93267 个序列,序列长度3

3. CTRec: A Long-Short Demands Evolution Model for Continuous-Time Recommendation(SIGIR 2019)

这篇文章主要是将深度点过程用在商品推荐上,之前的商品推荐只考虑推荐对的商品,没有考虑在对的时间推荐对的商品,比如用户刚买了个厕所读物,不代表它喜欢厕所读物,不能一直给他推荐厕所读物,而应该考虑商品周期,等他看完了上一本,再给他推荐新的(长期需求)。再比如用户买了个画板,就得立马推荐颜料了(短期需求)。总之,就是考虑用户画像、短期需求和长期需求。

论文有三个创新点:使用的连续lstm,就是上一篇论文中的;使用cnn捕捉短期需求;使用attention捕捉长期需求。

强度函数融合了用户画像、短期需求和长期需求。

[公式]

cnn使用k个核做多层卷积,最后average pooling。

attention:

[公式]

[公式]

[公式]

[公式]

以上是关于时序点过程学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

FPGA学习笔记之 ADC_549模块

学习笔记TF036:实现Bidirectional LSTM Classifier

2017-3-4学习笔记

51单片机学习笔记

笔记 | 不规则波动的时间序列数据处理与关联模型小结

动态点分治学习笔记