1 2 3 4 5 6 7 8 9 10 11 | ## Step.3 Evaluating model performance ### #추천실시 UBCFlist <- predict(mUBCF, recommenderUserList, n=5) IBCFlist <- predict(mIBCF, recommenderUserList, n=5) #추천받은 리스트 보기 as(UBCFlist, "list") as(IBCFlist, "list") | cs |
이제 본격적으로 모델을 구현해 보겠다.
위 코드처럼 입력해주면 우리는 추천 리스트를 만들게 되는데, 그 결과는 아래 화면과 같다
직관성이 떨어지지만 읽어보면 제일 위 114 고객에는 20, 425, 771, 31, 47번 물품을 추천한다는 것이다.
바로 위에서 추천을 할때 n을 5로 주어서 다섯개만 추천해 준 것이며, 이 숫자를 바꿔주면 해당 숫자의 갯수만큼 추천해준다.
이제 모델 결과표와 그래프를 생성해 보겠다. (사실 위 과정까지만 해도 추천 과정은 끝난것이다)
1 2 3 4 5 6 7 8 9 10 | # 시뮬레이션에 사용할 알고리즘과 유사도 지표 종류 지정 alUBCF<-list("user-based CF_Cosine" = list(name = "UBCF", param = list(method = "Cosine")), "user-based CF_Pearson" = list(name = "UBCF", param = list(method = "Pearson"))) alIBCF<-list("item-based CF_Cosine" = list(name = "IBCF", param = list(method = "Cosine")), "item-based CF_Pearson" = list(name = "IBCF", param = list(method = "Pearson"))) | cs |
위는 평가를 위한 알고리즘을 생성한 것이다. 각각 Cosine과 Pearson 두 가지를 모두 포함한 알고리즘을 만들어주면 된다.
위는 우리가 생성했던 모델에 대한 최종 평가에 사용할 evaluation 함수이다. 바로 위에서 생성한 알고리즘이 알고리즘 자리로,
초반부에 evaluationScheme 함수로 생성한 결과같이 scheme로 오게 된다.
1 2 3 4 5 6 7 8 | # 실행 및 결과 표시 result1<-evaluate(scheme, alUBCF,n=c(1,3,5)) result1 avg(result1) #결과값 테이블을 볼 수 있는 결과물 result2<-evaluate(scheme, alIBCF,n=c(1,3,5)) result2 avg(result2) | cs |
이런식으로 실행을 해주게 되면
이런 결과가 나온다.
여기서 핵심적으로 봐야할 것은 precision 과 recall 이며, 해당 지표에 대한 설명은 이전 포스팅에서 진행하였다.
하지만 직관성이 떨어지기 때문에 다시 그래프를 그려보도록 한다.
1 2 3 4 5 6 7 | # 그래프 plot(result1, annotate = TRUE , legend = "bottomright") # 높음 (두자리) - 코사인 높음 plot(result1, "prec/rec", annotate = TRUE , legend = "bottomright") # 낮음 (세자리) plot(result2, annotate = TRUE , legend = "topleft") # 피어슨이 더 높다 plot(result2, "prec/rec", annotate = TRUE , legend = "topleft") # 추천성능 UBCF 가 현저하게 높다 | cs |
참고로 plot 함수의 인자는 아래와 같다.
위의 과정을 끝냈으면, 각각 ROC 방식("pre/rec"라고 입력 안하면 defalt가 ROC) 일때 result1 과 result2의 성과를 확인해보도록 하겠다.
제일 위 코드를 실행시키면 아래와 같은 그래프가 뜬다.
UBCF 의 경우 코사인 방식이 더 성과가 좋은것을 알 수 있다.
IBCF 의 경우 피어슨 방식이 더 성과가 좋은것을 알 수 있다.
'데이터분석 > with R' 카테고리의 다른 글
베깅(Bagging) 과 랜덤포레스트, 부스팅의 정의 및 설명 (0) | 2018.03.12 |
---|---|
[R] Rattle을 이용한 데이터 분석(머신러닝) 알고리즘 구현 (0) | 2018.01.22 |
[R] R로 구현하는 상품추천기술(IBCF, UBCF) - (1) (2) | 2018.01.09 |
[R] 상품추천기술: 협업필터링의 정의와 예시 (0) | 2018.01.02 |
[R] R로 구현하는 서포트 벡터 머신(SVM) (0) | 2017.12.29 |