가장 적합한 모델 식별
이전과 마찬가지로 plot을 사용해 ROC 곡선을 나타내는 도표를 만들어 모델을 비교할 수 있다. annotate 매개변수는 레이블을 포함한 커브를 지정한다. 예를 들어 첫 번쨰와 두 번째 곡선은 annotate = c(1, 2)를 정의함으로써 레이블링 된다. 지금은 첫 번째 곡선에만 레이블을 붙일 것이다.
plot(list_results, annotate = 1, legend = "topleft")
title("ROC curve")
좋은 성능 지표는 그래프가 가지는 면적이 커지게 되므로 AUC(Area Under the Curve), 즉 ROC 곡선 아래 면적으로 성능을 가늠할 수 있다. 여기서는 계산하지 않아도, 가장 높은 것이 피어슨 상관 계수 기반의 UBCF임을 알 수 있으며 최적의 성능을 가지는 기법이다.
이전과 마찬가지로 정확도별 재현력 도표를 만들 수 있다.
plot(list_results, "prec/rec", annotate = 1, legend = "bottomright")
title("Precision-recall")
다음 도표는 정확도별 재현력을 보여준다.
피어슨 상관 계수 기반의 UBCF는 여전히 최적의 성능을 가지는 모델이다. 달성하고자 하는 목적에 따라, 추천할 아이템의 수를 적절하게 설정할 수 있다.
매개변수 최적화
추천 모델에는 숫자 매개변수가 종종 포함된다. 예를 들어 IBCF는 가장 가까운 k개의 아이템들을 고려한다. 어떻게 k를 최적화할 수 있을까?
범주 매개변수와 유사한 방법으로 숫자 매개변수의 다양한 값을 테스트할 수 있다. 이 경우에는 테스트하고자 하는 값을 정의해야 한다.
이제까지는 k를 기본값(30)으로 지정했지만 5와 40 사이의 범위로 다양하게 탐색할 수 있다.
vector_k <- c(5, 10, 20, 30, 40)
lapply를 사용해 평가할 모델의 목록을 정의할 수 있다. 거리 매트릭은 코사인이다.
models_to_evaluate <- lapply(vector_k, function(k){
list(name = "IBCF", param = list(method = "cosine", k = k))
})
names(models_to_evaluate) <- paste0("IBCF_k_", vector_k)
이전과 같은 방법으로 모델을 만들고 평가해본다.
n_recommendations <- c(1, 5, seq(10, 100, 10))
list_results <- evaluate(x = eval_sets, method = models_to_evaluate, n = n_recommendations)
ROC 곡선을 도표로 만들어보면 가장 성능이 좋은 k를 식별할 수 있다.
plot(list_results, annotate = 1, legend = "topleft")
title("ROC curve")
가장 큰 AUC를 가진 k는 40이다. 그다음으로 좋은 후보는 30이지만 높은 TPR은 가질 수 없다. 이는 매우 높은 n 값을 설정하더라도 사용자가 선호하는 아이템을 높은 비율로 추천할 수 없기 때문이다. k = 5인 IBCF는 구매와 유사한 몇 가지 아이템만을 추천한다. 따라서 많은 아이템을 추천하는 데 사용할 수 없다.
다음으로 정확도별 재현력 도표를 살펴본다.
plot(list_results, "prec/rec", annotate = 1, legend = "bottomright")
title("Precision-recall")
다음 도표는 정확도별 재현력 도표를 살펴본다.
가장 높은 재현력을 얻으려면 k = 40으로 설정해야한다. 정확도에 더 비중을 든다면 k = 5로 설정한다.
지금까지 서로 다른 방법을 사용하는 네 가지 기법을 평가했다. 그런 다음 그중 하나의 숫자 매개변수를 최적화했다. 달성하고자 하는 목적에 따라 매개변수의 선택은 다를 수 있다.
요약
지금까지 가장 정확한 모델을 선택하기 위해 다양한 모델의 성능을 평가하는 방법을 알아봤다. 다양한 선택으로 이어질 수 있는 잠재적인 성능을 평가하는 다양한 방법이 있다. 비즈니스 목표에 따라 평가 척도가 달라진다. 이는 최종 결과를 달성하기 위해 비즈니스와 데이터가 결합하는 예다.
다음 장에서는 데이터를 준비하고, 서로 다른 모델을 만들어 테스트하는 완전한 사용사례에 관해 알아본다.
'R > R로 만드는 추천 시스템' 카테고리의 다른 글
사례 연구 : 나만의 추천 시스템 만들기 - 02 (0) | 2020.03.31 |
---|---|
사례 연구 : 나만의 추천 시스템 만들기 - 01 (0) | 2020.03.30 |
추천 시스템의 평가 - 03 (0) | 2020.03.24 |
추천 시스템의 평가 - 02 (0) | 2020.03.24 |
추천 시스템의 평가 - 01 (0) | 2020.03.24 |