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用戶的序列
代碼地址: https://github.com/dunan/NeuralPointProcess
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: