본문 바로가기

Dev/AI 인공지능

[RecSys] 컨텐츠 기반 추천 | Content-based Recommendation | TF-IDF | Term Frequency - Inverse Documnet Frequency | 코사인 유사도 | Cosine Similarity

728x90
반응형

컨텐츠 기반 추천 (Content-based Recommendation)

특정 유저가 과거에 선호한 아이템과 비슷한 아이템을 해당 유저에게 추천해준다!

 

 

장점

  • 유저에게 추천을 할 때 다른 유저의 데이터가 필요하지 않음
  • 새로운 아이템 혹은 인기도가 낮은 아이템을 추천할 수 있음
  • 추천 아이템에 대한 설명이 가능함: 왜 이런 추천결과가 나왔는가에 대해서 합리적이고 타당한 근거를 찾을 수 있음

단점

  • 아이템의 적합한 특징을 찾는 것이 어려움
  • 한 분야나 장르의 추천 결과만 계속해서 나올수도 있음 (Overspecializatino)
  • 다른 유저의 데이터를 활용할 수 없음

 

 

어떻게 아이템의 특징을 알아낼까?

Item Profile: 추천 대상이 되는 아이템을 식별하고 특징이 되는 속성을 구성하는 것 → 다양하게 구성한 속성은 vector로 나타낸다

 

문서 데이터에 대해서 적용한다면 ? TF-IDF !

문서(documnet)의 경우, 중요한 단어들의 집합으로 표현 가능

→ 각 단어에 대한 중요도를 점수(score)로 매길 수 있어야 함

→ 대표적인 방법에는 TF-IDF가 있음

 

 

[1단계] 아이템 프로파일링 — TF-IDF (Term Frequenct - Inverse Document Frequency)

기본 원리

  • 전체 문서 D, 전체 문서 내 특정 문서 d, 문서 내 단어 w
  1. 단어 w가 문서 d에 많이 등장 (TF, Term Frequency)
  2. 단어 w가 전체 문서 D에서는 적게 등장 (IDF, Inverse Document, Frequency)
  3. 단어 w는 문서 d를 설명하는 중요한 특징 및 단어로 해석 가능 (TF-IDF값 높음)

 

TF-IDF 계산 공식

  • TF: 단어 w가 문서 d에 등장하는 횟수
  • IDF: 전체 문서 가운데 단어 w가 등장한 비율의 역수

 

[2단계] 유저 프로파일링 — TF-IDF (Term Frequenct - Inverse Document Frequency)

  • 유저 프로파일링
    • 유저가 과거에 선호했던 item-list가 있고, 개별 item은 TF-IDF을 통해 벡터로 표현할 수 있음
    • 각 유저가 선호한 Item의 Vector들을 통합하면 User Profile이 됨
    • Simple: 유저가 선호한 Item vector들의 평균값 사용
    • Varient: 유저가 아이템에 내린 선호도로 정규화한 평균값 사용

 

[3단계] 유저와 아이템간 유사도 계산

  • 유저 프로파일링 벡터와 아이템 프로파일링 벡터간 거리(유사도) 계산

두 벡터가 가리키는 방향이 비슷할수록 1, 직교 0, 반대 -1를 반환하는 cos 유사도

 

[4단계 ] Recommendation or Prediction

  • Recommendation
    • 유저 벡터 u와 아이템 벡터 i 간 cos 유사도(score)를 계산 → 둘의 차원이 동일해야 함
    • 유사도가 클수록 해당 아이템과 유저간 관련성이 높음
    • score가 가장 높은 아이템부터 K개를 유저에게 추천 (Top-N Recommendation)

 

  • Predction
    • 유저가 선호하는 아이템 리스트와, 각 아이템들의 벡터, 평점이 존재한다고 가정
    • 새로운 아이템과 유저가 선호하는 아이템 간 유사도 계산
    • 아이템간 유사도 값을 가중치로 사용하여 평점 추론

728x90
반응형