Tacademy의 추천 시스템 영상을 토대로 정리를 진행해 보겠습니다.
추천 시스템 개요
- 정의
- 추천시스템은 사용자에게 상품을 제안하는 기술
- 어떤 상품을 소비할지 다양한 의사결정과 연관되어 있음
- 목표
- 어떤 사용자에게 어떤 상품을 어떻게 추천할지이 대해 이해
기존 사례
- 당근마켓
- 카카오 브런치
- 유튜브
- 딥러닝을 활용해 방대한 양의 데이터 관리를 통해 유사한 영상 추천
추천 시스템의 역사
1. 연관분석
- 정의
- Rule 기반 모델로서 상품과 상품 사이에 어떤 연관이 있는지 찾는 알고리즘
- 얼마나(Frequent)같이 구매가 되는가?
- A 아이템을 구매하는 사람은 B 아이템을 구매하는가?
- 어떤 상품들이 장바구니 안에 담기는지 살피는 모습과 비슷하기 때문에 장바구니 분석이라고도 불림
- 예시
- 과거 월마트에서 기저귀를 구매할 때 맥주를 같이 구매하는 경향이 크다는 것을 기반으로 둘을 같이 진열하는 전략이 있었음
규칙 평가 지표
-
지지도
- 전체 거래 중 A와 B가 동시에 포함된 거래의 비율
-
신뢰도
- 품목 A를 구매했을 때, 품목 B를 추가로 구매할 확률
-
향상도
- A를 구매했을 때, B를 구매할 가능성에 관한 지표
- 향상도가 1보다 높다면 A를 구매했을 때 B를 구매할 가능성이 높아짐
- 향상도가 1보다 작다면 A를 구매했을 때 B를 구매할 가능성이 낮아짐
알고리즘
상품 중 가능한 모든 경우의 수를 탐색해 규칙 평가 지표를 통해 높은 규칙들을 찾아내는 방식
상품이 4개일 경우 경우의 수 : 4C1 + 4C2 + 4C3 + 4C4 = 4 + 6 + 4 + 1 = 15
장단점
장점
- 쉽게 이해 가능
- 분석 방향 or 목적이 없는 경우 목적 변수가 없어 유용하게 활용 가능
- 거래 내용에 대한 데이터를 변환없이 그대로 사용 가능
- 품목이 적을 경우 분석을 위한 계산이 간단
단점
- 품목수가 증가할 수록 계산량은 기하급수적으로 증가
- 너무 세분화된 품목을 가지고 규칙을 찾을 경우 의미 없는 분석이 될 가능성 존재
- 거래량이 적은 항목은 규칙 발견 시 제외될 가능성 존재
2. Apriori
- 연관분석의 연장선으로 아이템셋의 증가를 줄이기 위한 방법
- "빈번한 아이템셋은 하위 아이템셋 또한 비번할 것이다"라는 가정을 토대로 아이템셋의 증가를 줄이는 방법
알고리즘
- K개의 item을 가지고 단일 항목 집단 생성
- 단일 항목 집단 생성 : 우유 / 양상추 / 기저귀 / 맥주 / 쥬스
- 단일 항목 집단에서 최소 지지도 이상의 항목만 선택
- 최소 지지도(예, 0.5) 이상 항목만 선택
- P(우유) = 0.5 / P(양상추) = 0.75 / P(기저귀) = 0.75 /
P(쥬스) = 0.25 / P(맥주) = 0.75 /
- 위에서 선택된 항목만을 대상으로 2개 항목 집단 생성
- 2개 항목 집단 생성 : {우유, 양상추}, {우유, 기저귀}, {우유, 맥주}, {양상추, 기저귀}, {양상추, 맥주}, {기저귀, 맥주}
- 2개 항목집단에서 최소 지지도 혹은 신뢰도 이상의 항목만 선택
- 최소 지지도(예, 0.5) 이상 항목만 선택
{우유, 양상추} : 0.25 / {우유, 기저귀} : 0.5 / {우유, 맥주} : 0.25 / {양상추, 기저귀} : 0.5 / {양상추, 맥주} : 0.75 / {기저귀, 맥주} : 0.5
- 위 과정을 K개의 k-item frequent set을 생성할 때 까지 반복
장단점
장점
- 원리가 간단하여 사용자가 쉽게 이해하고 의미 파악 가능
- 유의한 연관성을 갖는 구매 패턴을 찾아줌
단점
- 데이터가 클 경우 (=item이 많을 경우) 속도가 느리고 연산량이 많아짐
- 실제 사용시에 많은 연관 상품들이 나타나는 단점이 있음
- 연관 상품들이 상관 관계는 의마할 수 있어도 인과 관계는 의미하지 않음
3. FP-Growth
- Apriori의 속도 측면의 단점을 FP Tree 구조를 통해 속도 개선한 알고리즘
- 동일하게 발생하는 아이템셋을 찾는데는 좋지만 아이템간의 연관성을 찾는 것은 어려움
알고리즘
- 모든 거래를 확인하여, 각 아이템마다 지지도를 계산하고 최소 지지도 이상의 아이템만 선택
- 모든 거래에서 빈도가 높은 아이템 순서대로 순서를 정렬
-
부모 노드를 중심으로 거래를 자식 노드로 추가해주면서 Tree 생성
-
새로운 아이템이 나올 경우 부모노드 부터 시작하고, 그렇지 않다면 기존 노드에서 확장
-
위 과정을 모든 거래에 대해 반복하여 FP Tree를 만들고 최소 지지도 이상의 패턴만 추출
장단점
장점
- Apriori 알고리즘 보다 빠르고 2번의 탐색만 필요함
- 후보 item set을 생성할 필요 없이 진행 가능
단점
- 대용량 데이터셋에서 메모리를 비효율적으로 사용
- Apriori 알고리즘에 비해 설계에 어려움
- 지지도의 계산이 FP-Tree가 만들어지고 나서야 계산 가능