欲速不達

일을 급히 하고자 서두르면 도리어 이루지 못한다.

Fantastic AI, Fantastic World

DS | Data Science/RecSys | Recommendation System

[RecSys] Basic - 2

_껀이_ 2022. 10. 11. 00:27
728x90
반응형

(1) 추천시스템은 다른 분야(CV, NLP)에 비해 딥러닝 모델과 전통적인 머신러닝 모델의 성능차이가 Dramatic하지 않다.

(2) 현업에서는 규모가 큰 데이터의 트래픽을 감당해야한다 -> 모델의 Inference time(모델 서빙의 latency)가 중요해짐 -> 근데 딥러닝 모델은 아무래도 무겁기 때문에, 성능차이가 아주 크지 않는 이상 장점이 적음

 

위의 두 가지 이유로 추천시스템에서는 클래식한 머신러닝 모델도 아직 많이 사용하고 있다.

 

클래식한 모델은 연관분석(Association Rule Analysis / Association Rule Mining), Content-based Recommendation, Collaborative Filtering, Item2Vec Recommendation and ANN 등이 있다.

 

 

1. 연관분석 : Association Rule Analysis

- 흔히 장바구니 분석 or 서열 분석이라고도 불림

- 상품의 구매, 조회 등 하나의 연속된 거래(transaction) 사이에서 규칙을 발견하기 위함

 

1) 규칙 : IF (condition) THEN (result)

- condition과 result 사이의 일련의 규칙이 있음을 나타낸다. ex) 빵->우유, 맥주->물 등

- 인과관계를 의미하진 않고 같은 transaction에 포함되었다는 관계 정도의 의미

 

2) 연관규칙 : IF (antecedent) THEN (consequent)

- 특정 사건이 발생했을 때, 함께 빈번하게(frequently) 발생하는 또 다른 사건의 규칙

- 규칙들 중에서 특정 threshold로 설정한 기준을 만족하여 연관성이 높다고 판단되는 규칙

 

* Itemset : antecedent와 consequent 각각을 구성하는 상품들의 집합

- antecedent와 consequent는 disjoint(서로소)를 만족해야 함

   ex) antecedent:(빵, 버터) -> consequent:(우유) --> 겹치는게 없음

 

3) 척도 : support / confidence / lift

: frequent itemset들 사이의 연관규칙을 만들기 위해서는 measurement(척도)가 필요!!

 

- support

: 두 itemset X,Y를 모두 포함하는 transaction의 비율

: 연관규칙에 대해서도 support를 정의할 수 있음

 

- confidence

: X가 포함된 transaction 중, Y도 포함하는 transaction의 비율 -> Y의 X에 대한 조건부 확률

 

- lift

: X, Y의 상관관계를 나타내는 척도

: (X가 포함된 transaction 중 Y가 등장할 확률) / (Y가 등장할 확률)

-> lift = 1 : 독립관계 / lift>1 : 양의 상관관계 / lift<1 : 음의 상관관계

----> lift 값이 클수록 X,Y의 연관성이 크다는 것

 

- 사용방법

: item의 수가 많아질수록, 가능한 itemset에 대한 rule의 수가 기하급수적으로 많아짐 -> 유의미한 item만 filtering할 필요함

(1) minimum support, minimum confidence로 의미없는 rule을 filtering

(2) lift 값을 내림차순 정렬해서 의미있는 rule만 평가함

 

 

4) 연관규칙의 탐색 : Mining Association Rules

- Brute-force approach : 가장 단순무식한 방법

: 가능한 모든 연관규칙을 나열

: 나열된 연관규칙에 대해 각각 support, confidence를 계산

: minimum support, minimum condifence를 만족하는 rule만 남기고 pruning

--> 계산량이 어마무지하게 필요함 : 3^d

 

그래서, 

- 효율적인 Association Rule Mining의 필요함

 

(1) Frequent Itemset Generation

(2) Rule Generation

 

두 가지 스텝을 거치게 되는데, (1) 스텝에서 minimum support로 filtering하게 되기 때문에 연산량이 가장 많기 때문에, 이걸 최적의 방법으로 해내야하고, 아래와 같은 방법을 사용

 

1) Apriori 알고리즘 : 가능한 후보 itemset의 개수를 줄임

2) DHP(Direct Hashing Pruning) : 탐색하는 transaction의 수를 줄임

3) FP-Growth 알고리즘 : 탐색횟수를 줄임

 

 

 

2. TF-IDF를 활용한 Content-based Recommendation

- Content-based Recommendation

: 유저가 과거에 선호한 아이템과 비슷한 아이템을 추천하는 방식

-> 비슷한 아이템 : 아이템의 성격, 속성이 비슷한 아이템

ex) 영화 : 배우, 감독, 영화 / 음악 : 작곡가, 장르, 리듬 등

 

-- 장점

1) 유저에게 추천을 할 때, 다른 유저의 데이터가 필요하지 않음 -> cold start 불필요

-> 해당 유저의 선호도만 있으면 추천할 수 있기 때문에

2) 새로운 아이템 or 인기도가 낮은 아이템을 추천할 수 있음

-> 해당 유저의 선호도를 가지고 추천하는 방식이므로 외부 요인의 개입이 필요치 않음

3) 추천 아이템에 대한 설명이 가능함

-> user profile을 통해 유사 속성이 무엇인지가 밝혀지므로 설명이 가능해짐

 

-- 단점

1) 아이템의 적합한 feature를 찾기가 어려움

-> 유저의 선호도만으로 user profile을 만들기 때문에 한계가 발생

2) 한 분야/장르의 추천 결과만 반복적으로 나올 가능성 : overspecialization

-> overfitting과 마찬가지로 유저의 선호도에 적합한 결과만 반복할 수 있다는 것

3) 다른 유저의 데이터를 활용할 수 없음

 

----> 유저의 데이터만을 활용하여 추천하는 방식이 장점이 될 수도 있고, 단점이 될수도 있음

----> 다른 유저의 데이터를 사용하는 collaborative filtering과는 반대 성격의 추천 방식

 

 

- Item Profile

: 추천 대상이 되는 아이템의 feature들로 구성 -> vector 형태

: 문서의 경우, 중요한 단어들의 집합으로 표현할 수 있음

-> 그렇다면 중요한 단어를 어떻게 선정하는가?? : 단어에 대한 중요도를 나타내는 Score가 필요함

 

-- TF-IDF

: item profile을 만들때, 가장 많이 쓰는 기본적인 score 산출 방법 / 중요한 feature일수록 TF-IDF값이 높음

 

-- TF(Term Frequency)

: 단어 w가 문서 d에 등장하는 횟수

: 문서의 길이가 모두 다를 때, 가장 긴 문서를 기준으로 정규화해서 사용하기도 함

-- IDF(Inverse Document Frequency)

: 전체문서의 수 D 중에서 단어 w가 등장하는 비율의 역수

 

----> TF-IDF를 사용하여 문서 d에 대한 단어 w_nitem profile vector를 만들 수 있음

 

 

- User Profile

: item profile vector를 통합하면 User Profile로 사용할 수 있음

-- 방법

1) simple : 유저가 선호하는 아이템의 item vector들의 평균값

2) variant : 유저가 선호하는 아이템의 item vector와 해당 아이템의 선호도(rating)으로 가중평균한 값

 

- Cosine Similarity : 코사인 유사도

: user profile을 사용해 추천할 때 사용

: 주어진 두 벡터 X, Y에 대해, Cosine Sililarity가 1에 가까울수록 유사하고, -1에 가까울수록 정반대 성격을 가짐

 

-- 예시 

1) 유저 벡터 u와 아이템 벡터 i에 대해서, cos(u,i) = score(u,i)

    -> 둘의 유사도가 클수록 해당 아이템이 유저에게 관련성이 높음

    -> score(u,i)가 가장 높은 아이템부터 유저에게 추천하게 됨

    ----> Top-N recommendation 모델에서 사용

 

2) 유저가 선호하는 아이템의 I={i1,...,in} 각각의 item vector V={v1,...,vn}, 평점 r_ui일때, 새로운 아이템 i^에 대한 평점

   -> i^과 I에 속한 아이템 i1,...,in의 유사도

   -> sim(i^,i)를 가중치로 i^의 평점 추론

----> Prediction (예측) 모델에서 사용 / neighborhood model

 

 

 

이미지 출처 : 네이버커넥트 부스트캠프 AI Tech 강의자료, 구글링 등

728x90
반응형