[Recommendation System] 추천 시스템의 여러 Measure (Beyond Accuracy)

Sion Park·2022년 6월 19일

안녕하세요! 오늘은 추천 시스템의 여러 Measure에 대해 알아보겠습니다! 데이터 분석 또는 여러 머신러닝 알고리즘들이 거의 대부분 정확도라는 것에 초점을 맞추고 있습니다. 하지만 추천시스템에서는 정확도뿐만 아니라 다른 여러가지 사항을 많이 고려한다고합니다. 이 포스트에서는 그것들을 알아보고 어떻게 처리하는지에 대해 알아보겠습니다!

추천의 만족도

  • Accuracy : 유저의 평점/ 소비에 맞게 예측하는지에 대한 척도

  • Diversity : 다양한 유형의 아이템이 추천되는지에 대한 척도

  • Serendipity : 예상할 수 없는 아이템이 추천되는지에 대한 척도

  • Novelty : 그동한 경험하지 못한 참신하고 새로운 아이템이 추천되는지에 대한 척도

  • Coverage : 얼마나 많은 아이템이 추천되는지에 대한 척도

Accuracy(정확도) 위주 추천

  • 수치적으로 연관성이 높은 아이템을 추천

    • R^=argmaxRiRfobj(i)\hat{R} = argmax_R \sum_{i \in R} f_{obj}(i) 이때 fobj(i)=rel(i)f_{obj}(i) = rel(i)
  • 이때 fobjf_{obj}에 연관성이 아닌 다른 요소를 비율적으로 포함하여 계산하기도 합니다.

    • fobj(i)=αrel(i)+(1α)g(i)f_{obj}(i) = \alpha\cdot rel(i) + (1-\alpha)\cdot g(i)

Diversity 위주 추천

Intra List Diversity

추천 결과로 제공되는 K개의 아이템이 비슷한 속성으로만 이루어지는 것을 지양

  • R이 추천리스트의 유사도라고 할때,

    diversity(R)=1sim(R)diversity(R) = 1 -sim(R), 이때 sim(R)=j=1R1k=j+1Rsim(ij,ik)12R(R1)sim(R) = \frac{\sum^{|R|-1}_{j=1}\sum^{|R|}_{k =j+1}sim(i_j, i_k)}{\frac{1}{2}|R|(|R| -1)}

Inter List Diversity

  • 여러 번의 추천 요청에 대해 사용자에게 같은 아이템을 제공하는 것을 지양

    diversity(R1,R2)=1sim(R1,R2)diversity(R_1, R_2) = 1 -sim(R_1, R_2), 이때 sim(R1,R2)=iR1jR2sim(i,j)R1R2sim(R_1, R_2) = \frac{\sum_{i\in R_1}\sum_{j \in R_2}sim(i, j)}{|R_1||R_2|}

다양성 확대 방법

  • 통 채우기 방법

    • Intra List Diversity 를 향상 시키는 방법
    • 추천아이템의 어떠한 클래스 분포가 선호 클래스 분포와 유사하도록 추천하는 방법으로 각 클래스별로 정해진 수의 아이템이 추천되도록 조정.
  • Weighted Random Choice

    • Inter List Diversity 를 향상 시키는 방법
    • 추천 목록을 구성한 뒤에 임의성을 부여하여 추천되는 아이템이 다양하도록 만드는 방법

  • Greedy Re-ranking
    - 하나씩 추천 선정집합에 넣어가며 diversity를 함께 고려하며 re-ranking을 시행하며 추천.
    fobj(i,R)=αrel(i)+(1α)1R+jR(1sim(i,j))f_{obj}(i, R) = \alpha\cdot rel(i) + (1-\alpha)\frac{1}{|R|}\sum+{j \in R} (1- sim(i,j))
    로 계속해서 re-ranking 하며 추천목록을 구성함.

Serendipity 위주 추천

  • 연관이 있지만 (Relevant), 놀라운 (Suprise) 추천에 대한 척도
  • Beyond accuracy: evaluating recommender systems by coverage and serendipity, Ge at al., 2010 에서는 Serendipity를 아래와 같이 정의

    Serendipity(R,u)=RunexpRrelRSerendipity(R,u) = \frac{|R_{unexp} \cap R_{rel}|}{|R|}
    • RR: 추천 목록
    • RunexpR_{unexp}: 추천 목록 중 예상치 못한 아이템 집합
    • RrelR_{rel}: 추천된 목록 중 만족하는/연관된 아이템들
  • Serendipity는 시스템상에서 정량화 하기 매우 어려움

  • Serendipity를 느낄 수 있는 navigation을 도입하여 증대 가능

Novelty 위주 추천

  • 관련있지만 사용자가 알 수 없고 사용자의 프로파일과 상이한 아이템 추천

  • Novelt측정 시 설문이 필요하지만, 이를 대신해 추천되는 아이템의 인기도(popularity)를 이용해서 근사가 가능하다고 합니다.

    Novelty(R)=1RiRlog2p(i)Novelty(R) = \frac{1}{|R|} \sum_{i \in R} -\log_2p(i)
    p(i)=nrankin1, 이때   ranki 는 아이템 i의 평균 추천 랭크, n은 총 아이템 수p(i) = \frac{n-rank_i}{n-1}, \text{ \footnotesize 이때 }\;rank_i\text{ \footnotesize 는 아이템 i의 평균 추천 랭크, n은 총 아이템 수}
  • 일반적으로 CBF방법이 CF방법에 비해 Novelty가 높은 추천을 만들기 용이함.

Coverage 위주 추천

  • User Coverage: 추천 할 수 있는 사용자의 총 비율

  • Item Coverage: 추천 되는 아이템의 총 비율

    Coverageitem=uinURuICoverage_{item} = \frac{|\cup_{u in U} R_u|}{|I|}
  • 인기 아이템이 너무 많이 추천되지 않도록함.

  • 일반적으로 Serendipity 와 Novelty가 높아지는 방향으로 추천시스템이 구축된다면 Coverage도 함께 증가하는 경향이 있음.

profile
Statistician, Data Analyst

0개의 댓글