AI_ML

[Boostcamp AI Tech] 추천 시스템 Basic(2)

썬2 2022. 3. 31. 01:53

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