추천 시스템에서의 모형 선택 (추천 목록 기준) :: 추천 시스템: 원리와 구현 - mindscale
Skip to content

추천 시스템에서의 모형 선택 (추천 목록 기준)

모형 평가를 위해서 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")