library(data.table)

train <- fread( "../input/clicks_train.csv" ); gc()

prob_by_adid <- train[,list( sum(clicked), length(clicked),mean(clicked) ),keyby="ad_id"]


M <- mean( train$clicked)

prob_by_adid[, likelihood := ((V1)+(12*V3))/(12+V2)  ]; gc()


test <- fread( "../input/clicks_test.csv" )
test[, prob := prob_by_adid[J(test$ad_id)]$likelihood ]#Map probabilities
test[ is.na(prob) , prob := M ]; gc() #Remove NAs

setorderv( test, c("display_id","prob"), c(1,-1)  ) #Sort by -prob
sub <- test[,.(ad_id=paste0(ad_id,collapse=" ")), keyby="display_id" ]; gc() #Build submission

write.csv(sub,file = "submission.csv",row.names = F)