1. 컨텐츠 기반 추천 알고리즘
■ 컨텐츠 기반 추천시스템 개요
1) 개요
- 컨텐츠가 비슷한 아이템을 추천한다.
- 사용자가 과거에 경험했던 아이템 중 비슷한 아이템 추천
- 유저 A 가 높은 평점을 추거나 큰 관심을 갖은 아이템 X와 유사한 아이템 Y를 추천한다.
2) 중요점
- 컨텐츠의 특징들이 어떻게 이루어져 있는지 파악
- 특징들 간에 유사성을 파악
- 컨텐츠 분석하는 아이템 분석 알고리즘이 중요
- 선능을 높일 수 있는 적절한 컨텐츠를 사용
3) 장/단점
- 장점 :
다른 유저의 데이터가 필요하지 않다.
추천할 수 있는 아이템의 범위가 넓다. (다른 유저와 관계없이 추천 가능하다.)
추천의 이유가 명확하다.
- 단점 :
적절한 특징을 찾아야 성능이 올라간다.
Cold Start, 새로운 유저를 위한 추천이 어렵다.
유저 프로필 외에는 추천이 불가능해서, 선호하는 특성을 가진 항목을 반복 추천한다.
4) 알고리즘 과정
① 데이터 습득
② 컨텐츠 분석(Contents Analyer)
- 특징 추출
- Vector Representation : 벡터 집합으로 변경
③ 유저 프로필 파악 (Profile Learner)
④ 유사 아이템 선택 (Filtering Component)
■ 컨텐츠 선정 방법 = Profiling
1) Item
- Item Profile
- Item을 특성들의 리스트(Set of feature)로 표현한다.
- 특성 : Attribute, Features
- Nomalization : Vector Representation
- 보통 Text 처리를 통해 특성을 얻을 수 있다.
- 유사도 기법 :
① 코사인 유사도 (Cosine)
② 자카드 유사도 (Jacard)
③ 피어슨 유사도 (Pearson)
2) User
- 특성 가중치는 사용자가 가지고 있는 아이템 특성 가중치의 평균값
- 설문조사 및 키워드 입력으로 프로필을 얻는다.
- 분류(Classification) 문제 해결 : 주어진 user Profile에서 새로운 아이템을 유저가 평가한 Metric에서 선택
■ 비슷한 컨텐츠를 찾는 방법
* 비슷한 아이템을 고르는 기준 : 객관적인 사실이 아닌 사용자의 데이터를 사용한다.
1) 거리기반 계산식
** Euclidean Distance (유클리드 거리)
- 두 점 사이의 거리를 계산할 때 쓰이는 수식
- 여러 차원(feature)을 가지는 점과 점 사이의 거리 계산 가능
- 거리 기반 유사도 측정 방법
- 스케일이 비슷할 때 사용
- 단순 점과 점 사이의 거리만 측정
** Mahalanobis Distance
- 변수의 상관관계를 고려한 지표.
- 변수 내 분산과 변수 간 공분산 반영
** Manhattan Distance
: 좌표축을 따라 이동한 거리(절대값)을 이용한 지표
2) 유사도 계산식
** Cosine Similarity (코사인 유사도)
- 벡터 A와 벡터 B의 각도로 계산된다.
- -1 ~ 1 사이의 값을 가지며, -1은 반대, 0은 서로 독립, 1은 완정히 같은 경우이다.
- 데이터 간에 스케일 차이가 날 경우 사용
- 무게나 크기를 고려하지 않고 각도만으로 측정
** Jacard Similarity (자카드 유사도)
- 집합의 개념을 이용한 유사도 계산
- 집합 A와 B사이에 얼마나 많은 아이템이 겹치는지로 유사도 판단
- 공통 아이템이 없으면 0, 모두 겹치면 1
- 주로 여러 단어로 구성된 문서 또 는 문장이 유사한지를 판단.
** Pearson Similarity (피어슨 유사도)
- Vector X,Y 사이의 상관관계를 계산(피어슨 상관계수)
- 각 Vector의 표본평균으로 각 Vector를 정규화하고 코사인 유사도를 구한다.
- 1은 양의 상관관계, -1는 음의 상관관계, 0은 관계 없음
3) 근접이웃 추천 알고리즘 : KNN(K-Nearest Neighbor) 알고리즘
- 데이터로부터 거리가 가까운 K 개의 다른 데이터를 선택하는 알고리즘
- K 값을 설정하는 것이 가장 중요하다.
: 홀수 선택(과반수 선택)
: Overfitting과 underfitting 발생
: 개별 데이터 모두를 반영하거나 과도한 정규화로 특성이 반영 안된 모델이 나올 수 있다.
- 정규화 필수
- 유클리드 거리 식 등 거리계산식 이용. 거리 측정의 효율화 필요
- 회귀(Regression) : 객체의 특성 값이며 k개의 최근방 점들 값의 평균
- 분류(Classification) : 소속된 항목을 출력하여 과반수로 분류
- 장점 :
훈련이 없기에 빠르게 학습 가능하다.
수치 기반 테이터(0과1로 이루어짐)에서 우수하다
- 단점 :
명목 또는 더미데이터 처리가 어렵다(노미널 데이터)
단순 특성인데 데이터로 바꾸면 0과 1이라는 거리가 되어 변수가 된다.(ex 성별)
K를 적절하게 선택하기 어렵다.
각 특징을 이해하는 것이 아니어서 관계 파악 및 설명이 되지 않는다.
■ 나이브베이즈 추천 알고리즘
1) 개념
- 베이즈 정리에 의한 통계기반 분류 알고리즘. 확률을 이용. 지도학습이다.
- 구성 : 공식 , 사전확률, 사후 확률
2) 특징
- 아이템의 특징 끼리 서로 독립이다.
- 서로 연관이 없는 특징이어야 한다.
- Discrete Variable 에 더 잘 맞는다.
- 데이터의 차원이 높아질수록 Class에 대해 0으로 수렴된다 : Laplace Smoothing 을 이용해서 0으로 가는 것을 방지
■ TF-IDF (Term Frequency-Inverse Document Frequency)
1) 개요
- 단어의 빈도수를 벡터로 나타내었다. 문서 i 에서 j의 중요도
2) 구성
- N : 전체 문서 수
- TF(w, d)
: 단어 w가 문서 d에 등장한 빈도 수.
: 해당 당어가 문서에 얼마나 자주 등장하는지 체크
: 문서 내 단어 w의 수 / 문서 내 모든 단어의 수
- DF(w) : 단어 w 가 등장한 문서 d의 개수
- IDF(w)
: log(전체 문서 수 / DF(w)).
: 해당 단어가 다른 문서에 비해 해당 문서에서 얼마나 특별한지 체크
3) 특징 :
- 흔하게 등장하는 단어는 중요하지 않은 단어
- 각 단어의 가중치를 부여
- 특정 단어가 등장하는 것으로 각 문서의 관련도를 표현
- 특정 단어가 모든 문서에 등장하면 그 단어는 정보력이 없다. (조사나 관사)
- TF - IDF(w, d) = TF(w, d) X IDF(w)
2. 이웃 기반 협업 필터링
■ 협업 필터링(Collaborative Filtering)이란?
1) 개요
- 많은 사람의 의견으로 더 나은 추천을 한다.
- 개인이 아닌 단체, 다수의 의견을 따른다.
- 나랑 같은 취향의 사람의 취향을 추천해 준다.
2) 과정
① 유저 A와 비슷한 평가를 한 유저 B 선정
② B가 호감을 나타낸 다른 컨텐츠 선정
③ 그 중 A와 성향이 비슷한 컨텐츠 추천
3) 종류
- 이웃기반 협업 필터링
: Item-based
: User-based
- 모델 기반 협업 필터링
: 딥러닝 협업 필터링
-하이브리드 협업 필터링
■ 협업 필터링
1) User-based
- 두 사용자가 얼마나 유사한 항목을 좋아했는지를 바탕으로 추천
- 플래폼에서 유저가 많은 부분을 차지할 때 사용
- SNS 등 사용자에 포커스 되어있는 서비스의 경우
- 아이템이 많을 시 = User based
- 특정 유저와 비슷한 유저로 분류된 실제 유저의 취향을 알 수 없다.
- 여러 유저의 데이터를 보았기 때문에 새로운 추천을 할 수 있다.
2) Item-based
- 아이템과 아이템 사이의 유사도 계산
- 과거 아이템 선호도를 기반으로 선호 연관성이 높은 다른 아이템 추천
- 컨텐츠 기반은 컨텐츠의 특성으로 추천, 협업 필터링은 과거의 선호도를 측정
- 아이템의 수가 크게 변하지 않는다면 Item-based
- 비슷한 아이템과 가중치로 함께 설명될 수 있다.
- 과거 아이템에 의존하기 때문에 새로운 아이템을 추천하기 어렵다.
3) 문제점
- Cold Start 문제 : 충분한 데이터가 필요하다.
- 계산 량
: 데이터가 많아질수록 유사도 계산이 많아진다.
: 그러나 데이터가 많아야 추천 품질이 높아진다.
- Long Tail Economy
: 대부분의 사용자가 관심가지는 소수의 아이템으로 추천이 쏠릴 수 있다.
: 관심이 부족한 아이템은 추천되지 못한다.
'Develope > AI 교육' 카테고리의 다른 글
[AI-역량강화] 협업 필터링(Collaborative Filtering) 관련 논문과 해당 모델의 특징 (0) | 2021.05.31 |
---|---|
[AI-역량강화] 추천 알고리즘 - 협업필터링 개념 및 용어 설명 (0) | 2021.05.31 |
Ch 01. 추천시스템이란 (0) | 2021.01.29 |
[코딩야학] 머신러닝 3일차 (0) | 2021.01.06 |