| 아이템A | 아이템B | 아이템C | |
|---|---|---|---|
| 사용자1 | o | o | |
| 사용자2 | o | o | |
| 사용자3 | o | ||
| 사용자4 | o | o | o |
지지도(A) = (A의 출현 수) / 전체 데이터 수 3/4 = 0.75
지지도(B) = (B의 출현수) / 전체 데이터 수 3/4 = 0.75
지지도(C) = (C의 출현수) / 전체 데이터 수 2/4 = 0.5
지지도(A and B) = (A와 B의 동시 출현 수) / 전체 데이터 수 = 3/4 = 0.75
확신도(A -> B) = (A와 B의 동시 출현 수) / (A의 출현수) = 3/3 = 1.0
리프트(A -> B) = 지지도(A and B) / (지지도(A) 지지도(B)) = 0.75 / (0.75 0.75) = 1.333
서로 독립적인 아이템이라면 리프트값은 1이 된다.
각 아이템의 양의 상관관계가 존재하면 리프트 값은 1보다 커지며 음의 상관관계의 경우 리프트 값은 1보다 작아진다.
또한 이러한 리프트 값에 로그를 취하면 점별 상호정보량(PMI)(Point Mutual Information)이 된다.
추천시스템의 경우 리프트 값이 높을 수록 아이템 A 출현과 아이템 B의 출현의 상관관계가 높으므로 아이템 A를 구입한 사용자에게 아이템 B를 추천하면 구입 확률이 높아질 가능성이 있다.
엄밀하게는 인과 관계가 아니기 때문에 실제 추천을 통하여 검증해야한다.
mlxtend 라이브러리의 apriori를 통하여 구현가능