추천 시스템 패키지 소개 - recommenderlab
Page content
I. 개요
-
추천시스템을 처음 배우는 접하는 사람들을 위해 준비한 입문
Tutorial
이다. -
패키지 소개서에 있는 내용을 한글로 번역하였다.
-
This R package provides an infrastructure to test and develop recommender algorithms. The package supports rating (e.g., 1-5 stars) and unary (0-1) data sets. Supported algorithms are:
-
이 R 패키지는 추천자 알고리즘을 테스트하고 개발할 수 있는 인프라를 제공한다. 이 패키지는 등급(예: 별 1-5개) 및 단항(0-1) 데이터 세트를 지원한다. 지원되는 알고리즘:
- User-based collborative filtering (UBCF)
- Item-based collborative filtering (IBCF)
- SVD with column-mean imputation (SVD)
- Funk SVD (SVDF)
- Alternating Least Squares (ALS)
- Matrix factorization with LIBMF (LIBMF)
- Association rule-based recommender (AR)
- Popular items (POPULAR)
- Randomly chosen items for comparison (RANDOM)
- Re-recommend liked items (RERECOMMEND)
- Hybrid recommendations (HybridRecommender)
-
For evaluation, the framework supports given-n and all-but-x protocols with
- Train/test split
- Cross-validation
- Repeated bootstrap sampling
Evaluation measures are:
- Rating errors: MSE, RMSE, MAE
- Top-N recommendations: TPR/FPR (ROC), precision and recall
II. 패키지 설치
- 패키지 설치는 크게 두가지 방법이 있다.
- CRAN에서 설치 방법
- 깃허브에서 직접 설치하는 방법
install.packages("recommenderlab")
library(recommenderlab)
- 이제 도움말 기능을 활용하여 도움말 파일과 함수 목록을 확인한다.
help(package = "recommenderlab")
- 데이터를 불러온 뒤, 사용자 기반의 추천시스템 알고리즘을 활용해본다.
III. 데이터 수집 및 전처리
- 데이터를 불러와서
data("MovieLense")
MovieLense100 <- MovieLense[rowCounts(MovieLense) > 100,]
MovieLense100
## 358 x 1664 rating matrix of class 'realRatingMatrix' with 73610 ratings.
rowCounts
의 뜻은 행의 총합을 의미하며, 이 때 100개 이상의 데이터만 추출하겠다는 뜻임- 이를 통해 데이터의 왜곡을 줄여줄 수 있음
VI. 추천시스템 모델링 구현 및 추천
- 간단하게 사용자 기반의 추천 시스템 모델링을 구현한 뒤, 테스트를 진행해보자.
train <- MovieLense100[1:70]
rec <- Recommender(train, method = "UBCF")
rec
## Recommender of type 'UBCF' for 'realRatingMatrix'
## learned using 70 users.
- 이번에는 구현된 모형을 바탕으로 추천 영화를 10개 정도 출력할 수 있도록 구현하자.
pre <- predict(rec, MovieLense100[101], n = 10)
as(pre, "list")
## $`291`
## [1] "Braindead (1992)"
## [2] "Bad Taste (1987)"
## [3] "Mrs. Brown (Her Majesty, Mrs. Brown) (1997)"
## [4] "Cry, the Beloved Country (1995)"
## [5] "Gridlock'd (1997)"
## [6] "Charade (1963)"
## [7] "Nosferatu (Nosferatu, eine Symphonie des Grauens) (1922)"
## [8] "Ruling Class, The (1972)"
## [9] "Brassed Off (1996)"
## [10] "It's My Party (1995)"
V. 결론
- 모든 함수 기반에는 알고리즘이 내재가 되어 있지만, 그렇다고 입문하시는 분들이 처음부터 알고리즘을 공부해서 새로 짜야 하는 것은 아니다.
- 그러나, 이론 학습이 필요한 이유는 패키지 내 다양한 함수들을 보다 적절하게 사용하기 위함이다.
- 위 패키지는 지속적으로 업그레이드가 되고 있기 때문에 꼭 Reference Manual을 활용한다.
- 만약 R을 활용해서 추천시스템을 구현한다면
shiny app
을 활용하여 배포까지 하는 것을 추천한다.- Sample: https://andreasvoglstatworx.shinyapps.io/apptest/
- 추천시스템은 서비스까지 연결이 되어야 의미가 있기 때문에,
shiny app
배포를 추천한다.