AI & Data를 활용하는 기술경영자

전통적인 추천시스템 알고리즘(2022/06/19~2022/07/16) 본문

Recommend_System

전통적인 추천시스템 알고리즘(2022/06/19~2022/07/16)

Data_Lover 2022. 6. 26. 23:54
728x90

Intro

추천시스템 톺아보기에선 추천시스템의 전반적인 흐름을 파악했다면, 이번에는 전통적인 추천시스템 알고리즘에 대해서 설명합니다.

 

콘텐츠기반 추천시스템 알고리즘을 알아보기 전 '콘텐츠'에 대해서 알아봅니다.

 

콘텐츠란?

추천시스템을 구축하기 위해서 사용되는 데이터로 Item Profile과 User Profile등이 있다.

 

Item Profile

  •  Item을 set of features로 표현한다.
  • 영화,작가,제목,배우, 키워드,TF-IDF를 Sample features라고 한다.
  •  Item의 여러 특성을 attributes, features라고 한다.
  • 여러 특성을 분석하여 구성된 목록을 바탕으로 가중치를 부여하여 정량화한다.
  • Item 설명은 text features이므로 text preprocessing등을 활용하여 features를 얻는다.
    • 설명이 포함된 문서의 키워드 활용
    • TF-IDF를 활용하여 가중치 부여
  •  Item-Item간의 유사도는 Cosine Similarity를 활용한다.

활용 예시

  • Features Extraction
    • 유저의 관심사를 나타내는 많은 정보를 얻으면 추천 결과가 만족스럽게 나온다.
    • Feature Weighting 혹은 Feature  Selection을 통해서  discriminative한 features 추출
  • 영화
    • Meta information: 영화 장르, 배우, 감독, 간단한 설명, 예고편
    • 영화 리뷰에 대한 키워드 분석, 영화 설명 키워드 분석
  • 음악
    • Meta information:음악 장르, 음악 가사, 음원 데이터
    • 음악 리뷰, 함께 소개된 음악 종류, 제목
  • 뉴스, 웹페이지
    • 기사 원문, 헤드라인, 댓글등과 같은 텍스트 정보

User  Profile

  • User ratings, implicit feedback와 같은 데이터를 활용하여 유저 성향 파악한다.
  • 사용자가 갖는 아이템들의 특성 혹은 조사된 사용자 특성으로 구성이된다.
  • feature weight는 사용자가 갖고 있는 아이템의 feature weigh의 평균 값을 주로 활용한다.
  • 사용자의 기호, 설문조사, 자발적인 키워드 입력등으로 얻은 프로필이다.
    • Explicit and Implicit feedback to get user profile
    • Like/Dislike, Ratings from 0 to 5, 직접 작성한 유저의 주관적인 댓글
    • 검색 로그, 아이템 선택 후 구매, 특정 아이템을 위해 비슷한 아이템을 tag한 이력
  • 이미지로 보는 User Profile
    • User Profile는 분류 문제를 푸는 것과 같다.
    • 주어진 user profile정보를 바탕으로 새로운 아이템을 유저가 평가한 metric 중 하나 선택

 

앞으로 계속 나올 TF-IDF에 대한 설명을 합니다.

TF-IDF

Vector Representation

  • m개의 review 문서가 있다고 가정했을 때, review 문서 전체에 등장하는 단어의 수는 n개이다.
  • 각 항목은 해당 단어가 review에 등장하는 빈도수를 의미한다.
    • (Review 1, Word0) = 2 -> Review 1에 Word 0은 2번 등장한다.

Term Vector Representation

Term Weight

  • (i,j) = weight
  • 단어의 빈도수로 벡터를 나타내고, 문서 i에서의 단어 j의 중요도이다.

TF-IDF

  • 흔하게 등장하는 단어는 키워드가 아니다.(조사...등등)
  • Information Retrieval에서 많이 사용되는 개념이다.
  • 각 단어에 가중치를 부여해서 Keyword extraction등에 활용된다.
  • 문서에서 특정 단어의 등장을 기반으로 문서간의 연관성을 표현한다.

TF-IDF 식

  • TF(Term Frequency): 단어 w가 문서 d에 등장한 빈도 수
  • DF: 단어 w가 등장한 문서d의 수
  • N: 전체 문서의 수
  • TF(w,d) = 문서 내 단어 w의 수 / 문서 내 모든 단어의 수
  • IDF(Inverse Document Frequency)(w) = log(N) / DF(w)
  • DF가 큰 단어는 정보력이 적다
    • 문서 Corpus(말뭉치)에 모두 포함이 된 단어는 흔히 등장하는 단어이므로 의미가 크지 않다.
    • 흔하게 등장하는 단어는 유사도 관계에서 제외된다.
    • 흔하게 등장하는 단어는 주로 조사와 관사등 문법적 역할을 하는 언어들이다.

이미지로 보는 TF-IDF

 

TF는 해당 단어가  문서에 얼마나 자주 등장하는지 체크하고 IDF는 얼마나 다른 문서에 비해서 해당 문서에서특별한지 체크한다.

 

콘텐츠기반 추천시스템(Contents-based Filtering,CBF)

목적

유저 A가 높은 평점을 주거나 크게 관심을 갖고 있는 아이템X와 유사한 이이템 Y를 추천한다.

 

특징

이용자가 과거에 시청했거나 구매했던 아이템 중에서 비슷한 아이템을 추천해주는 것이다.

즉, 정보(아이템)을 찾는 과정과 과거 정보를 활용하여 유저의 성향을 배워서 기존의 선호했던 컨텐츠와 유사한 것을 추천한다.

 

비슷한 아이템은 어떻게 고를까?

다양한 평가지표에 대해서 알아봅니다.

 

유클리드 거리(Euclidean Distance)

거리를 기반으로 유사도 측정하는 방식으로 여러 차원을 갖는 두 점 사이의 거리를 계산한다.

from scipy.spatial import distance
a = (1, 2, 3)
b = (4, 5, 6)

print(distance.euclidean(a, b))

 

코사인 유사도(Cosine Similarity)

각도기반 유사도 측정 방식으로 두 벡터간의 유사한 정도를 코사인 값으로 표현하기에 -1과 1사이의 값을 가진다.

값의 따라서 의미가 달라지는데, -1은 완전 반대, 0은 서로 독립, 1은 완전히 같다라는 의미를 뜻한다,

실제로 추천시스템에서 추천이 적절하게 잘 되었는지 활용하는 지표이다.

 

from scipy import spatial
List1 = [4, 47, 8, 3]
List2 = [3, 52, 12, 16]
result = 1 - spatial.distance.cosine(List1, List2)
print(result)

 

중요한 것

  • Clustering, Machine Learning, TF-IDF등을 활용하여 적절하게 컨텐츠의 내용을 분석하는 아이템 분석 알고리즘 사
  • 영화 추천을 위해서 영화 정보를 활용하고, 뉴스 추천을 위해서 뉴스의 내용을 활용하듯이 추천시스템의 성능을 높이는 적절한 콘텐츠 사용

 

CBF 알고리즘의 전반적인 WORKFLOW입니다.

 

Architecture

  • Pandora
    • Features extraction: 신곡이 출시될 경우, 음악의 특성을 장르,비트,음색 등 400여 항목 체크
    • Profile learner: 유저로부터 'like'를 받은 음악의 특색과 해당 유저의 프로파일 준비
    • 음악의 특징과 사용자 프로필을 바탕으로 선호하는 음악을 추천

 

장점

  • 다른 유저의 데이터가 필요하지 않다.
  • Unique, New,Unpopular아이템을 모두 활용이 가능하기에 추천할 수 있는 아이템 항목의 범위가 넓다.
  • 아이템의 features에 대한 컨텐츠 분석이 가능하고, 특정 features가 추천된 이유를 설명한다.

단점

  • 영화,사진,음악,text등 다양한 features로 인해서 추천을 위한 적절한 특징을 찾기가 어렵다
  • 신규 유저일 경우 과거의 데이터가 없어서 추천이 어렵다
    • Cold start문제가 있다.
    • User Profile가 존재하지 않거나 데이터가 매우 부족하다.
  • 유저 프로필을 기반으로만 추천이 되므로 선호하는 특성을 가진 항목만 반복추천이 된다.
  • 세부적인 특징은 파악이 되지 않고 큰 틀의 파악만 되므로 유저의 다양한 취향이 반영되기 어렵다.
  • Overspicalization문제가 있다.
728x90