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

Sion Park·2022년 6월 19일
0

안녕하세요! 오늘은 추천 시스템의 여러 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개의 댓글