어떤 사용자에게 어떤 상품을 어떻게 추천할지에 대해 이해
Ex) 당근 마켓(다른 사람들이 같이 본 상품 추천) 카카오(해당 글과 유사한 글 추천[실전 이탈 예측 모델링]) 유튜브
매출의 80%는 20%의 핵심 고객에게 나옴.
하위 80%가 더 큰 가치를 가짐 -> 추천 시스템이 등장
apriori 알고리즘(2015~2010) ->
협업 필터링(2010~2015) ->
빅데이터 알고리즘(2013~2017) ->
딥러닝을 이용한 추천 시스템+초 개인화 추천시스템(2015~)
어떤 연관이 있는지 찾아내는 알고리즘
(얼마나 같이 구매가 되는가, a를 구매하는 사람이 b를 구매하는가 두번째는 인과관계가 있다고 보면 됨[ex) 월마트에서 맥주를 구매할 때 기저귀를 같이 구매하는 경향이 큼])
지지도, 향상도, 신뢰도
가능한 모든 경우의 수를 탐색해 지지도, 신뢰도, 향상도가 높은 규칙을 찾아내는 방식
아이템의 증가에 따른 규칙의 수가 기하급수적으로 증가한다는 문제
이를 해결하고자 나온 알고리즘이 apriori
빈번한 아이템 셋의 하위 아이템 셋은 빈번할 것이다 라는 가정을 통해 P(a,b) > P(a,b,c)라는 기본적인 명제에서, 만약 P(a,b)가 작으면 하위 아이템 셋을 고려하지 않는 알고리즘
k 개의 item으로 단일 항목 집단 생성 (one item frequent set) ->
최소 지지도 이상의 항목 선택 ->
two item frequent set 생성 ->
최소 지지도 이상 항목 선택 ->
P(a), P(b), P(c), P(d) 를 계산해서 0.5보다 작은 친구들은 먼저 제외 ->
P(a) , P(b), P(c)로 2개의 원소가 있는 집합으로 0.5보다 작은 친구들 제외 —>
P(ac)와 P(bc)가 생존 —>
원리가 간단, 유의한 구매패턴 파악 가능
데이터가 크면 속도가 느리고 연산량이 많음, 실제 사용시 많은 연관상품이 나타남(상관관계와 인과관계 처럼..)
이를 해결하기 위해 FP-Growth 알고리즘 등장
모든 거래를 확인해 지지도 계산 후 최소 지지도 이상 아이템 선택 ->
거래에 최소 지지도 이하 아이템 삭제 후, 빈도가 높은 아이템 순서로 정렬 ->
트리 형태로 노드 생성! ->
가장 낮은 트리부터 모든 아이템 셋부터 신뢰도와 지지도를 생성해 패턴 분석
2번만 탐색하면 되는 빠른 계산, 후보 itemset 생성 필요 없음
여전히 많은 계산, 지지도의 계산이 FP-Tree가 생성 되어야만 가능, apriori 보다 설계 어려움
mlxtend라는 라이브러리로 실습 가능