카테고리 없음

컨텐츠기반 추천알고리즘

햄스틴 2022. 4. 12. 18:38

 

 

 

 

 

컨텐츠기반 추천시스템

  • 컨텐츠가 비슷한 아이템을 추천한다.
  • 사용자가 과거에 경험했던 아이템 중 비슷한 아이템을 현재 시점에 추천한다.
  • Information Retrieval과 Machine Learning의 중간 지점
  • Main Idea - 유저 A가 높은 평점을 주거나 큰 관심을 갖은 아이템 x와 유사한 아이템 y를 추천
  • 예시 - 영화: 같은 배우, 같은 장르, 같은 감독 등 비슷한 특징을 갖는 영화를 찾아서 추천

 

 

장점

  • 다른 유저의 데이터가 필요하지 않다.
  • 추천할 수 있는 아이템의 범위가 넓다.
  • 추천하는 이유를 제시할 수 있다.

 

단점

  • 적절한 features를 찾기가 어렵다.
  • 새로운 유저를 위한 추천이 어렵다.
  • 선호하는 특성을 가진 항목을 반복 추천한다.

 

 

컨텐츠기반 추천시스템 Architecture

 

 

예시

  1. 신곡이 출시되면, 음악을 분석하여 장르, 비트, 음색 등 400여 항목 체크 -> features extraction
  2. 유저로부터 'like'를 받은 음악의 특색과 해당 유저의 프로파일 준비 -> profile learner
  3. 음악의 특징과 사용자 프로필을 바탕으로 선호하는 음악 추천 -> filtering component

 

컨텐츠 기반 추천시스템에서 가장 중요한 것

  • 컨텐츠의 내용을 분석하는 아이템 분석 알고리즘
  • 추천시스템의 성능을 높일 수 있는 적절한 컨텐츠를 사용하는 것

 

 

 

 

Item Representation-1

  • Item을 set of features로 표현한다.
  • Item의 여려 특성을 attributes, features라고 한다.
  • Item Profile은 분석된 여러 특성들을 나타내며, 이를 정량화해서 사용한다. 
  • Item 설명은 text features이므로, text preprocessing 등을 통해 features를 얻을 수 있다.
  • Item-Item 간의 유사도는 Cosine Similarity를 활용한다.

 

 

Item Representation-2

1. Features Extraction

  • 유저의 관심사를 나타내는 많은 정보를 얻을 수 있다. -> 만족스러운 추천 결과로 이어진다.
  • Feature Weighting 또는 Feature Selection을 통해 discriminative한 features를 추춘한다.

2. 영화

  • Meta Information: 영화 장르, 배우, 감독, 간단한 설명, 예고편 등
  • 영화 리뷰에 대한 키워드 분석, 영화 설명(시놉시스) 키워드 분석

3. 음악

  • Meta Information: 음악 장르, 음악 가사, 음원 데이터 등
  • 음악 리뷰, 함께 소개된 음악 종류, 제목 등

4. 뉴스, 웹페이지 등

  • 기사 원문, 헤드라인, 댓글 등 텍스트 정보

 

 

User Profile -1

  • 특성 가중치는 사용자가 가지고 있는 아이템 특성 가중치의 평균 값을 주로 활용한다.
  • 사용자의 기호를 따로 파악하거나, 설문조사 또는 자발적인 키워드 입력 등으로 얻은 프로필이다.
  • Like/Dislike, Ratings from 0 to 5, 직접 작성한 유저의 주관적인 생각을 담은 댓글 등
  • 검색 로그, 아이템 선택 후 구매 또는 선택, 특정 아이템을 위해 비슷한 아이템을 tag한 이력 등
  • User Profile 학습은 분류 문제를 푸는 것과 같다. -> 주어진 user profile 정보를 바탕으로 새로운 아이템을 유저가 평가한 metric 중 하나를 선택, 아이템에 대한 유저의 기존 평가 = {r1, r2, ..., r5}

 

 

 

 

 

비슷한 컨텐츠를 찾는 방법

 

유클리드 거리(Euclidean Distance)

  • 두 점 사이의 거리를 계산할 때, 사용하는 평가 지표(evaluation metric)
  • 여러 차원을 갖는 점과 점 사이의 거리를 계산 할 수 있다.
  • 거리 기반 유사도 측정 방법 

 

코사인 유사도(Cosine Similarity)

  • 벡터를 비교할 때, 가장 많이 유용하게 사용되는 평가 지표(evaluation metric)
  • 코사인 유사도는 벡터 A와 벡터 B 사이의 각도로 계산된다.
  • 코사인 유사도는 -1과 1사이의 값을 가지며, -1은 완전히 반대, 0은 서로 독립, 1은 완전히 같은 경우
  • 각도 기반 유사도 측정 방법; 두 벡터간 유사한 정도를 코사인 값으로 표현

 

유클리드 거리와 코사인 유사도 비교

  • 비교하고자 하는 데이터(벡터) 간의 스케일 차이가 크게 날 경우 코사인 유사도, 크지 않다면 유클리드 거리
  • 유클리드 거리는 단순하게 점과 점 사이의 거리만 측정
  • 반면, 코사인 유사도는 무게나 크기 고려하지 않고, 벡터 사이의 각도만으로 측정

 

 

다른 평가지표

  • Manhattan Distance
  • Pearson Similarity
  • Minkowski Distance
  • Mean Squared Difference Similarity
  • Jaccard Similarity

 

 

 

 

근접 이웃 추천알고리즘

 

k-Nearest Neighbor 알고리즘

  • 데이터(아이템 또는 유저)로부터 거리가 가까운 k개의 다른 데이터를 선택하는 알고리즘
  • 데이터와 다른 데이터 사이의 거리를 측정할 때, 'Euclidean distance'등 거리계산 metric을 활용

  • 회귀(Regression)의 k-NN 알고리즘 -> 객체의 특성 값이며, 이 값은 k개의 nearest neighbor값들의 평균
  • 분류(Classification)의 k-NN 알고리즘 -> 소속된 항목(label)을 출력하며, k개의 nearest neighbor 중 과반수로 분류

  • Model-based Learning이 아닌 Lazy Model
  • k값과 거리측정 방법 -> 알고리즘 성능의 가장 중요한 Hyperparameter

1. k 값

  • k 값에 따라 overfitting과 underfitting 발생
  • 개별 데이터 모두를 반영한 지역적 모델 또는 과도한 정규화로 데이터 label 특성 반영이 안된 모델
  • k는 홀수로 하는 것이 일반적

2. 거리측정 metric

  • Euclidean Distance: 데이터 A와 B사이의 직선거리를 사용한 지표
  • Mahalanobis Distance: 변수의 상관관계를 고려한 지표, 변수 내 분산과 변수간 공분산 반영
  • Manhattan Distance: 좌표축을 따라 이동한 거리를 사용한 지표

 

 

 

k-NN 알고리즘 장단점

1. 장점

  • 훈련이 (거의) 없기 때문에, 빠르게 학습 가능한 알고리즘
  • 수치 기반 데이터에서 우수한 성능을 나타내는 알고리즘
  • 단순하고 효율적이다.

2. 단점

  • 명목 또는 더미 데이터를 처리하기 어렵다.
  • 변수(특징)가 많은 데이터는 처리 속도가 느리고 정확도가 많이 떨어진다.
  • 적절한 k를 선택하는 것이 어렵다.
  • 변수(특징)을 이해하는 알고리즘이 아니며, label과의 관계 파악 등 설명력이 떨어진다.
  • 각 변수(특징)마다 스케일이 다른 경우 동일한 거리 척도를 사용하기 어렵다.

 

 

k-NN 구현을 위해 고려해야할 부분

  • 변수 간의 분포가 다르기 때문에 데이터 정규화를 꼭 해야한다.
  • 데이터 간의 거리 측정 효율화
  • 공간 상에서 데이터의 representation 상태를 확인해야한다.

 

 

 

 

 

나이브베이즈 추천알고리즘

 

베이즈 정리(Bayes's Theorem)

 

1. 공식

2. 사전확률

  • 현재 정보를 바탕으로 정한 확률(동전 앞면 나올확률 = 1/2)

3. 사후확률

  • 사건 B가 사건 A로부터 발생했다는 가정하에 사건 A의 확률 업데이트
  • 베이즈 정리를 통해 사후확률 계산

 

 

 

나이브베이즈 분류기(Naive Bayes Classifier)

 

1. 베이즈 정리에 의한 통계기반 분류 알고리즘; 지도학습

2. 특징

  • 아이템의 특징끼리 서로 독립
  • 영화 장르와 영화 감독이 서로 연관이 없는 특징이어야 한다
  • 데이터 셋이 커도 모델 예측에 관계 없다
  • Continuous Variable보다 Discrete Variable에 더 잘 맞는다
  • 간단하고, 계산량이 많지 않은 모델
  • 데이터의 차원이 높아질수록 모든 class에 대해 확률이 0으로 수렴 가능 -> Laplace Smoothing 활용

 

 

 

 

 

 

 

TF-IDF

 

Vector Representation(벡터화)

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

 

 

Term Vector Representation

 

1. Term Weight

  • (i, j) = weight
  • Term Frequency Vector: 단어의 빈도수로 벡터를 나타냄, 문서 i에서의 단어 j의 중요도

2. TF-IDF

  • 흔하게 등장하는 단어는 중요하지 않은 단어
  • Information Retrieval에서 많이 사용하는 개념
  • 각 단어에 가중치를 부여해서 Keyword extraction 등에 활용
  • 문서에서 특정 단어가 등장하는 것으로 문서끼리 관련있음을 표현할 수 있음

 

 

 

TF-IDF

  • TF: 단어(Word) w가 문서 d에 등장한 빈도수
  • DF: 단어(Word) w가 등장한 문서 d의 수
  • N: 전체 문서의 수

  • 만약 [단어 w가 포함된 문서 수 = 전체 문서 수] 이면 TF-IDF(w, d) = 0 -> 단어 w의 정보력은 없다
  • DF가 큰 단어는 정보력이 적다 -> 흔하게 등장하는 단어는 유사도 계산에서도 제외하게 된다, 대부분 조사, 관사 등이 해당된다

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

 

 

 

 

TF-ID 실습

https://colab.research.google.com/drive/1TStJAGQMqS-Wbqeq_vb_tBVnMoV_um6o#scrollTo=GNdKEkqxOD2V

 

Google Colaboratory Notebook

Run, share, and edit Python notebooks

colab.research.google.com