추천 시스템 분야는 다른 분야에 비해 ML기법을 DL기법 보다 많이 사용한다. DL이 더 좋은 성능을 내긴 하지만 향상 폭이 dramatic하지 않고, 많은 유저가 이용하는 서비스에서 큰 트래픽을 감당하기에 DL은 연산량이 많아서 무겁다.
연관 규칙 분석=장바구니 분석=서열 분석 Association Rule Analysis=Association Rule Mining
소비자가 한 장바구니 안에 어떤 물건을 같이 담는지 유저가 상품을 구매하는 연속된 거래 사이에서 규칙을 발견하기 위해서 적용
ex) 컴퓨터를 산 고객이 같이 구매하는 상품
연관 규칙 Association Rule
하나의 상품이 등장했을 때 다른 상품이 같이 등장하는 규칙을 찾는 것
ex) 기저귀를 샀을 때 맥주도 같이 산다 : {기저귀}$\rightarrow${맥주}
- 규칙
IF (condition) THEN (result)
{condition} $\rightarrow$ {result}
어떤 condition에 해당하는 아이템이 있을 때 result에 해당하는 아이템이 등장한다. - 연관 규칙
IF (antecedent) THEN (consequent)
antecedent와 consequent라는 아이템 집합이 빈번하게 나타나 기준을 만족시키는 규칙 - Itemset
antecedent와 consequent를 구성하는 상품의 집합
antecedent와 consequent는 서로 겹치는 아이템을 가지고 있지 않다.
1개 이상의 item으로 이루어져 있다. - k-itemset
k개의 item으로 이루어진 itemset - support count($sigma$)
전체 transaction data에서 itemset이 등장하는 비율
ex) itemset : {빵, 우유}
Transaction Items 1 {빵} 2 {빵,우유} - support
연관 규칙에서 가장 중요한 개념 중 하나
support({빵,우유})=1/2=0.5 - 빈발 집합 Frequent Itemset
transaction data에 자주 등장한다.
모든 itemset 가운데 유저가 지정한 minimum support값 이상을 만족시키는 itemset을 의미한다. - Infrequent Itemset
Frequent Itemset과 반대로 유저가 지정한 minimum support보다 작은 itemset을 의미한다.
연관 규칙의 척도
Support
$X\rightarrow Y$가 존재할 때, 전체 transaction에서 itemset이 등장하는 비율 [0,1]
※$X,Y$는 itemset, N은 transaction 수
$X$에 대해서만도 정의할 수 있고
$$s(X)=\frac{n(X)}{N}=P(X)$$
$X\rightarrow Y$에 대해서도 정의할 수 있다.
$$s(X\rightarrow Y)=\frac{n(X\cup Y)}{N} = P(X\cap Y)$$
$P(X\cap Y)$ : $X$와 $Y$가 모두 등장할 확률
항상 s(X) $\geq s(X\rightarrow Y)$가 된다
Confidence
$Y$의 $X$에 대한 조건부 확률[0,1]
:X가 포함된 transaction 가운데 Y도 포함하는 transaction 비율
$$c(X\to Y)=\frac{n(X\cup Y)}{n(X)}= \frac{s(X\rightarrow Y)}{s(X)}=frac{P(X\cap Y)}{P(X)} = P(Y|X)$$
$n(X)$ : X에 대한 support count
그래서 confidence가 높으면 추천하기에 유용한 규칙임을 알 수 있다.
Lift
lift = 1 이면 X, Y는 서로 독립이고,
lift > 1 이면 X, Y가 양의 상관관계,
lift < 1 이면 X, Y가 음의 상관관계를 가진다.
$$l(X\to Y) = \frac{P(Y|X)}{P(Y)} = \frac{P(X\cap Y)}{P(X)P(Y)}=\frac{s(X\rightarrow Y)}{s(X)s(Y)} = \frac{c(X\to Y)}{s(Y)}$$
=(X가 주어졌을 때 Y가 등장할 확률)/(Y가 등장할 확률)
유의미한 rule filtering
item수가 많아짐 -> 가능한 itemset 수가 많아짐 ->rule수가 기하급수적으로 많아짐
그렇기 때문에 유의미한 rule 을 찾아서 사용해야 한다.
- 사용자가 지정한 minimum support, minimum confidence값을 가지고 의미없는 rule을 screen out한다.
support $\geq$ minimum support
confidence $\geq$ minimum confidence
:전체 transaction 중에서 너무 적게 등장하는 itemset이나 조건부 확률이 아주 낮은 rule을 필터링 한다. - 최종 추천을 제공하기 위한 척도로 lift값을 이용한다.
더보기예를 들어 x=와인, y=오프너, z=생수일 때,와인을 샀는데 오프너도 살 확률은 P(Y|X)=0.1와인을 샀는데 생수도 살 확률 P(Z|X)=0.2이고평소에 오프너를 살 확률 P(Y)=0.01평소에 생수를 살 확률 P(Z)=0.2 라고하자와인을 사지 않아도 평소 사람들이 많이 생수를 소비하기 때문이다.이 경우 lift값을 구하면 오프너는 10, 생수는 1이라는 결과가 나온다.그래서 와인을 샀을 때 오프너를 추천받으면 더 만족스러운 결과를 얻을 것이고,소비자 입장에서 lift를 사용하는 것이 만족스러운 추천 결과가 나온다.
연관 규칙의 탐색
Mining Association Rules
: 연관 규칙을 추천에 사용하기 위해서 주어진 데이터 셋에서 모든 연관 규칙을 추출하는 것
연관 규칙을 탐색하는 과정이 연관 분석에서 가장 중요하고 어렵다.
위의 1번에서 본 규칙
support $\geq$ minimum support
confidence $\geq$ minimum confidence
을 만족하는 모든 연관 규칙을 어떻게 찾아야 할까?
Brute-force approach
가장 간단하고 무식한 방법
가능한 규칙을 나열하고 그 규칙들에 대한 각각의 support와 confidence를 계산해서 rule에 따라 pruning해서 frequent item을 찾는 것이다.
하지만 그렇기 때문에 Brute-force approach는 엄청난 계산량을 요구한다.
개별 transaction별로 모든 item을 full scan하고 가능한 itemset별로 모든 support를 또 계산 해야한다.
- N : 전체 transaction 수
- W : 각 transaction의 itemset의 갯수
- M : itemset의 모든 가능한 갯수 $=2^{d}$ ※d=unique한 item의 갯수
그래서 계산량이 N*W*M이 된다.
M이 exponential scale로 증가하기 때문에 M이 가장 큰 문제이다.
만약 itemset의 support를 계산했다고 하더라고 주어진 d개의 item으로 구성한 모든 연관 규칙의 갯수는 $3^{d}$이 되어 계산이 매우 복잡하다.
결국 제한시간 내에 의미있는 연관 규칙을 탐색할 수 없게 된다.
효율적인 Association Rule Mining
- Frequent Itemset Generation
minimum support 이상의 모든 itemset을 생성한다.
이렇게 확 수가 줄어든 frequent itemset을 만들 수 있다.
하지만 가능한 모든 itemset의 support를 계산하는 과정이 또 계산량이 크다. 그래서 또 이를 해결할 전략이 필요하다. 밑의 전략들은 원래 exponential 시간이 걸리는 itemset계산을 단축시킨다.
Frequent Itemset Generation Strategies
- 가능한 후보 itemset의 개수를 줄인다.
M의 수 줄이기 -> Apriori 알고리즘 - 탐색하는 transaction의 숫자를 줄인다
N의 수 줄이기 -> DHP(Direct Hashing & Pruning) 알고리즘 - 탐색 횟수를 줄인다
N*M 줄이기 -> FP-Growth 알고리즘
- 가능한 후보 itemset의 개수를 줄인다.
- Rule Generation
minumum confidence 이상의 association rule을 생성한다.
1번의 계산량 문제를 해결하기 위한 전략
'부스트캠프 AI Tech 3기 > 이론 : U-stage' 카테고리의 다른 글
[추천시스템] Precision@K, Recall@K, AP@K (0) | 2022.03.08 |
---|---|
[Day31] 추천 시스템 Basic 2-2 TF-IDF를 활용한 컨텐츠 기반 추천 (0) | 2022.03.08 |
[Day31] 추천 시스템 Basic 1-2 추천시스템의 평가 지표와 인기도 기반 추천 (0) | 2022.03.07 |
[Day31] 추천 시스템 Basic 1-1 추천시스템이란 (0) | 2022.03.07 |
[Day21] AI 서비스 기초 5. MLflow (0) | 2022.02.20 |