我有一个用户可以点击的N个类别的列表。可以说完全有K这样的用户。我有过去3个月的数据,告诉哪个用户点击了哪个类别的日期多少次。对于前 - 2016年6月20日:[10,15,12,15]}这个词典是针对特定用户的,并且在6月20日他说他点击类别10,12一次和15次两次。
鉴于这些数据,我想使用多变量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 :(得分:0)
params_hawkes <- optim(c(rep(1,2), rep(0.2,4),rep(2,2)), nloglik_bi_hawkes, history = history)
optim函数可用于查找最佳参数。
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
中