0. 추천 시스템 기법
- 추천 시스템은 다른 분야보다 ML과 DL의 성능 폭이 크지 않다.
1. 연관 분석 (Association analysis)
1) 연관 규칙
- 상품의 구매, 조회 등 하나의 연속된 거래들 사이의 규칙을 발견하기 위해 적용.
- 주어진 transaction 데이터에 대해서, 하나의 상품이 등장했을 때 다른 상품이 같이 등장하는 규칙 찾기 (인과관계가 아님!!)
- 규칙: IF (condition) THEN (result)
- 연관 규칙: IF (antecedent) THEN (consequent)
- 특정 사건이 발생했을 때 함께 빈번하게 발생하는 또 다른 사건의 규칙
- antecedent와 consequent는 disjoint(서로소)를 만족한다.
- 빈발 집합(Frequent Itemset)
- itemset: 1개 이상의 item의 집합(set)
- support count(𝜎): 전체 transaction data에서 itemset이 등장하는 횟수
- support: itemset이 전체 transaction data에서 등장하는 비율
- frequent itemset: 유저가 지정한 minimum support 값 이상의 itemset.
- infrequent itenset: 유저가 지정한 minimum support 보다 작은 itemset.
2) 연관 규칙의 척도
규칙에 대한 척도는 어떻게 만들까? -> frequent itemset들 사이의 연관 규칙을 만들기 위해서는 measurement가 필요하다.
X -> Y (X와 Y는 itemset)
1) support: 두 itemset X, Y를 모두 포함하는 transaction의 비율. P(X교집합Y)
2) confidence: X가 포함된 transaction 가운데 Y도 포함하는 transaction 비율. P(Y|X)
- confidence가 높을수록 유용한 규칙.
3) lift: X와 Y의 상관 관계 파악. P(Y|X) / P(Y)
- lift가 크다. == rule을 구성하는 antecedent와 consequent가 연관성 이 높고 유의미하다.
연관 규칙의 척도를 사용하는 방법은?
1. minimum support, minimum confidence로 의미 없는 rule을 screen out
1.1 Frequent Itemset Generation: minimum support 이상의 모든 itemset을 생성한다.
1.2 Rule Generation: minimum confidence 이상의 association rule을 생성한다. 이때 rule을 이루는 antecedent와 consequent는 서로소를 만족해야 한다.
2. lift 값으로 내림차순 정렬을 하여 의미 있는 rule을 평가함
잠깐, 왜 lift로 볼까?:
-> X(와인) Y(오프너) Z(생수)가 있을 때, P(Y|X)=0.1, P(Z|X)=0.2
위 수식만 보면 와인 샀을 때 생수를 더 많이 샀다. 그런데 P(Y)=0.01, P(Z)=0.2를 추가해서 l(X->Y)=10 l(X->Z)=1이면 X와 Y가 연관있음을 알 수 있다. (원래 생수는 와인과 관계없이 많이 산다.)
3) 연관 규칙의 탐색
잠깐, 그럼 minimum support와 minimum confidence 이상을 만족하는 모든 연관 규칙을 어떻게 찾을 것인가?
Brute-force로 가능한 모든 연관 규칙을 나열하고 개별 support와 confidence 계산.. 그런데 이렇게 하면 엄청나게 많은 계산량이 요구된다.
-> 효율적인 Association Rule Mining이 필요하다!
1.1 Frequent Itemset Generation: minimum support 이상의 모든 itemset을 생성한다.
보통 여기서 computation cost가 가장 커서 해당 부분 줄이기.
<Frequent Itemset Generation Strategies>
1. 가능한 후보 itemset의 개수를 줄인다. -> Apriori 알고리즘: 가지치기를 활용하여 탐색해야하는 숫자 줄이기.
2. 탐색하는 transaction의 숫자를 줄인다. -> DHP(Direct Hashing & Pruning) 알고리즘: Itemset의 크기가 커짐에 따라 전체 N개 transaction보다 적은 개수를 탐색한다.
3. 탐색 횟수를 줄인다. -> FP-Growth 알고리즘: 효율적인 자료구조를 사용하여 후보 itemset과 transaction을 저장한다. 모든 itemset과 transaction의 조합에 대해서 탐색할 필요가 없다.
3. TF-IDF를 활용한 컨텐츠 기반 추천
1) 컨텐츠 기반 추천이란?
- 유저가 과거에 선호한 아이템과 비슷한 아이템을 해당 유저에게 추천.
- 장점:
- 유저에게 추천을 할 때 다른 유저의 데이터가 필요하지 않음.
- 새로운 아이템 혹은 인기도가 낮은 아이템을 추천할 수 있음.
- 추천 아이템에 대한 설명이 가능함.
- 단점:
- 아이템의 적합한 피쳐 찾기 어려움.
- 한 분야/장르의 추천 결과만 나올 수 있음.
- 다른 유저의 데이터를 활용할 수 없음.
2) Item Profile 기반 추천
- 추천 대상이 되는 아이템의 feature들로 구성된 item profile을 만들어야 한다. (feature는 벡터 형태로 표현)
- 텍스트의 경우, 중요한 단어를 선정할 수 잇는 TF-IDF를 활용한 text feature를 만들 수 있다.
잠깐, TF-IDF (Term Frequency - Inverse Document Frequency):
: 문서 d에 등장하는 단어 w에 대해서, 단어 w가 문서 d에 많이 등장하면서(Term Frequency, TF)
단어 w가 전체 문서(D)에서는 적게 등장하는 단어라면 (Inverse Document Frequency, IDF)
단어 w는 문서 d를 설명하는 중요한 feature로, TF-IDF 값이 높다.

3) User Profile 기반 추천
- 유저에게 아이템을 추천하는 것이므로, User Profile도 구축해야한다.
- 각 유저의 Item List 안에 있는 Item의 Vector들을 통합하면 User Profile이 된다.
- Simple하게 하려면 유저가 선호한 Item Vector들의 평균값을 사용한다.
- Variant하게 하려면 유저가 아이템에 내린 선호도로 정규화한 평균값을 사용한다. - 유저와 아이템 사이의 거리 계산: score(u, i) == cos(u, i)
새로운 아이템 i'에 대한 평점 예측 가능
'AI_ML' 카테고리의 다른 글
[Boostcamp AI Tech] Item2Vec and ANN (0) | 2022.04.06 |
---|---|
[Boostcamp AI Tech] Collaborative Filtering (0) | 2022.04.03 |
[Boostcamp AI Tech] 추천 시스템 Basic(1) (0) | 2022.03.30 |
VAE 기초 다지기_1 (0) | 2021.09.30 |
Hello 파이토치 (0) | 2021.08.20 |