R/eval_nDCG.R

eval_nDCG <- function(recommendedIDX, testSetIDX){
  
  #extract index of the hits
  match_TS <- which(recommendedIDX %in% testSetIDX)
  
  if(length(match_TS)==0) return(0)
  #generate ideal discounted comulative gain
  idcg <- getiDCG(length(recommendedIDX))
  
  if(1 %in% match_TS){
    dcg <- 1/log2(match_TS[-1])
    dcg <- 1 + sum(dcg)
  }else{
    dcg <- sum(1/log2(match_TS))
  }
  
  dcg/idcg
}

getiDCG <- function(n){
  
  idcg <- 1
  
  if(n > 1){
  idcg <- idcg + sum(1/log2(2:n))
  }
  
  idcg
}

Try the rrecsys package in your browser

Any scripts or data that you put into this service are public.

rrecsys documentation built on June 10, 2019, 1:02 a.m.