2016-07-28 84 views
1

我有一個用戶可以點擊的N個類別的列表。假設有K個這樣的用戶。我有過去3個月的數據,告訴哪個用戶點擊了哪個類別的哪個日期多少次。對於前{2016年6月20日:[10,15,12,15]}這個字典是針對特定用戶的,並且在6月20日說他點擊了10,12次一次,15次兩次。R中的多變量霍克分佈

鑑於此數據,我希望使用多變量Hawks分佈對其進行建模,以便根據點擊過去的類別(相同和不同類別),我可以預測用戶將點擊哪些類別。

我已經看了一些例子。 http://jheusser.github.io/2013/09/08/hawkes.html 使用ptproc軟件包的單變量Hawks分佈。但是,ptproc現在不存在。

我想提供一些隨機初始化的平均值,alpha和beta參數,並希望模型使用EM算法執行最大似然估計來查找最佳參數值並將其返回。

使用hawkes包,

library(hawkes) 
lambda0 <- c(0.2,0.2) 
alpha <- matrix(c(0.5,0,0,0.5),byrow=TRUE,nrow=2) 
beta <- c(0.7,0.7) 
history <- simulateHawkes(lambda0,alpha,beta,3600) 
l  <- likelihoodHawkes(lambda0,alpha,beta,history) 

此計算用於參數一些隨機初始化的可能性。如何通過使用EM算法找到最佳參數,並在這裏最大化多變量Hawkes分佈的可能性?

謝謝!

回答

0
params_hawkes <- optim(c(rep(1,2), rep(0.2,4),rep(2,2)), nloglik_bi_hawkes, history = history) 

優化函數可用於查找最佳參數。

nloglik_bi_hawkes <- function(params, history){ 
mu <- c(params[1],params[2]) 
alpha <- matrix(c(params[3],params[4],params[5],params[6]),byrow=TRUE,nrow=2) 
beta <- c(params[7], params[8]) 
return(likelihoodHawkes(mu, alpha, beta, history)) 
} 

在這裏,alpha,beta和mu被初始化爲隨機值,然後通過最小化負對數似然值進行更新。

的參數的最終列表存儲在param_hawkes

+0

'的Optim(C(代表(1,2),代表(0.2,4),代表(2,2)),nloglik_bi_hawkes,方法= 'BFGS' ,歷史=歷史)'產生更好的結果。 – skwon