상세 컨텐츠

본문 제목

R의 recommenderlab를 이용한 추천 시스템 만들기

데이터 분석

by 메타샤워 2023. 7. 25. 16:12

본문

R의 recommenderlab 패키지를 통해 추천시스템을 구현할수 있다.
 
지금부터 하나하나 step by step으로 간략하게 recommenderlab 패키지를 사용하는 방법을 실습 해보겠다.
 
먼저 패키지 설치 한다.
 
install.packages("recommenderlab")
library(recommenderlab)
 
테스트를 위해 랜덤으로 데이터를 만들어봅시다.
U행은 user를 의미하고 i열은 item을 의미한다.
각 데이터들읜 user가 item에게 부여한 점수를 의미한다.
user는 특정 item에게 점수를 주었을수도 있고 안주었을수도 있다.
 
m = matrix(sample(c(as.numeric(0:5), NA), 
                  50, 
                  replace = TRUE,
                  prob = c(rep(.4/6,6),.6)),
           ncol = 10,  
           dimnames = list(user=paste("u",1:5, sep=''),  
                           item=paste("i",1:10, sep='')
                           )
           )

m변수를 recommenderlab의 점수 데이터 인 realRatingMatrix 자료구조로 변환한다.

자료구조의 타입을 변환하는 이유는 
 
원래 형태인 matrix 형태에서 list로 타입을 변환하면 각각 단일 개수의 리스트로 변환이 되는데
realRatingMatrix 형태에서 list로 타입을 변환하면 각 사용자별 항목의 튜플형태로 반환된다.
마치 데이터 프레임구조로 변환이 된다.
 
그래서 realRatingMatrix에서 다시 list로 자료구조를 변환시킨다
 
r = as(m, "readRatingMatrix") 
 
as(r, "list")   # 1
as(m, "list") # 2
 
#위 두 명령행을 실행하여 비교해보길 바란다.
실제 데이터 프레임구조로 바꾸게 되면 유저별 아이템 점수를 실제로 매긴 데이터만 데이터프레임구조로 반환된다.
데이터프레임 자료구조는 등급 데이터를 파일에 작성하는데 적합하다.
 
as(r, "data.frame")

 

실제로 데이터를 추천하기 위해서 데이터의 정규화가 필요하다.

장규화는 각 등급에 전체 등급의 평균을 빼므로서 편차를 제거할수 있다.
 
r_m = normalize(r)
 
getRatingMatrix(r)    #1
getRatingMatrix(r_m)  #2
 
#getRaingMatrix 함수는 realRatingMatrix 변수의 내부 값을 확인해주는 함수이다.
#위 두 명령행을 비교해보자.
Colored by Color Scripter
cs

 

 

각 정규화 상태를 이미지로 확인해보자

 

image(r, main="Raw Ratings")
image(r_m, main="Normalized Ratings")

 

정규화된 Ratings에 대한 사용자 지정 값계값 minRatings를 지정해야한다.
예를들면 4점 이상 평점을 매긴 아이템에 대해서는 긍정적인 등급이라 판단하여 
각 사용자별 긍정적 아이템을 선별할수 있다.
 
r_b = binarize(r, minRating =4)
getRatingMatrix(r_b)
as(r_b,"matrix")
 

관련글 더보기