2016-07-28 3 views
1

사용자가 클릭 할 수있는 N 개의 카테고리 목록이 있습니다. 그러한 사용자 K가 완전히 있다고 가정 해 보겠습니다. 나는 과거 3 개월 동안 어떤 사용자가 어떤 날짜에 몇 번이나 클릭했는지 알려주는 데이터를 가지고있다. 예 : 2016 년 6 월 20 일 : [10,15,12,15]}이 사용자는 특정 사용자를 대상으로하며 6 월 20 일 한 번 카테고리 10, 12를 한 번, 두 번 클릭했습니다.다 변수 호크스 분포는 R

이 데이터가 주어지면,이를 모델링하기 위해 다 변수 호크스 배포본을 사용하여 클릭 한 과거 카테고리 (동일하거나 다른 카테고리)를 기반으로 사용자가 클릭 할 카테고리를 예측할 수 있습니다.

저는 많은 예제를 이미 살펴 봤습니다. http://jheusser.github.io/2013/09/08/hawkes.html 은 ptproc 패키지를 사용하여 단일 변이 호크스 분포를 사용합니다. 그러나 ptproc는 현재 존재하지 않습니다.

평균, 알파 및 베타 매개 변수의 임의의 초기화를 제공하고 모델에서 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 알고리즘을 사용하고 Multivariate Hawkes 분포에 대한 가능성을 극대화하여 최상의 매개 변수를 찾는 방법은 무엇입니까?

감사합니다.

답변

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)) 
} 

여기서, 알파, 베타 및 뮤는 음의 로그 우도를 최소화함으로써 업데이트 된 랜덤 값으로 초기화된다.

파라미터의 최종리스트에 저장된 param_hawkes

+0

'Optim을 (c (REP (1,2), 담당자 (0.2,4), 담당자 (2,2)), nloglik_bi_hawkes, 방법 = 'BFGS' , history = history)'더 좋은 결과를 만든다. – skwon