추천 시스템에서의 모형 선택 (추천 목록 기준)
모형 평가를 위해서 Traing Set과 Test Set 분할하기: 단, 3점 이상일 경우 재미있게 봤다고 가정
set.seed(12345)
scheme <- evaluationScheme(m, method="split",
train = .8, k = 1, given = 15, goodRating = 3)
평가할 알고리즘 설정하기
algorithms <- list(
"random" = list(name="RANDOM"),
"popular" = list(name="POPULAR"),
"popularZ" = list(name="POPULAR", param=list(normalize = "Z-score")),
"userN10C" = list(name="UBCF", param=list(normalize = NULL, nn = 10, method = 'cosine')),
"userN10P" = list(name="UBCF", param=list(normalize = NULL, nn = 10, method = 'pearson')),
"userN50C" = list(name="UBCF", param=list(normalize = NULL, nn = 50, method = 'cosine')),
"userN50P" = list(name="UBCF", param=list(normalize = NULL, nn = 50, method = 'pearson')),
"userC50C" = list(name="UBCF", param=list(normalize = 'center', nn = 50, method = 'cosine')),
"userC50P" = list(name="UBCF", param=list(normalize = 'center', nn = 50, method = 'pearson')),
"userZ50C" = list(name="UBCF", param=list(normalize = 'Z-score', nn = 50, method = 'cosine')),
"userZ50P" = list(name="UBCF", param=list(normalize = 'Z-score', nn = 50, method = 'pearson')),
"userZ100C" = list(name="UBCF", param=list(normalize = 'Z-score', nn = 100, method = 'cosine')),
"userZ100P" = list(name="UBCF", param=list(normalize = 'Z-score', nn = 100, method = 'pearson')),
"userZ500C" = list(name="UBCF", param=list(normalize = 'Z-score', nn = 500, method = 'cosine')),
"userZ500P" = list(name="UBCF", param=list(normalize = 'Z-score', nn = 500, method = 'pearson'))
)
Training Set으로 각 알고리즘에 대해서 학습 후 Test Set을 이용하여 정확도 평가하기
results <- evaluate(scheme, algorithms, type='topNList', n=c(1, 3, 5, 10, 15, 20))
정확도 결과 그래프로 나타내기
plot(results, annotate = 1, legend="topleft")