더북(TheBook)

이러한 패턴을 발견하는 연관 규칙 분석에서 결과를 해석할 때 주의할 점이 있다. 예를 들어 손님들에게서 우유를 사고, 소고기를 사는 패턴을 발견하였다고 하자. 이때 우유를 샀기 때문에 소고기를 샀다고 해석하면 안된다. 어디까지나 각 사상의 확률을 계산하는 것이므로 이 결과는 인과관계를 나타내지는 않는다. 실제로 우유와 소고기의 인과관계가 있을 수도 있지만, 이 분석의 결과로 인과관계를 얘기할 수는 없는 것이다.

파이썬에서 연관 규칙 분석을 위해 1장에서 설치한 모듈인 mlxtend를 활용해보자. 다음은 손님 5명이 마트에서 산 물건에서 패턴을 발견하는 예제이다. 각 손님이 산 물건은 한 리스트로 묶었고, 5명의 구매 내역 리스트도 한 리스트로 다시 묶었다.

dataset = [['Milk', 'Cookie', 'Apple', 'Beans', 'Eggs', 'Yogurt'],
           ['Coke', 'Cookie', 'Apple', 'Beans', 'Eggs', 'Yogurt'],
           ['Milk', 'Apple', 'Kidney Beans', 'Eggs'],
           ['Milk', 'Orange', 'Corn', 'Beans', 'Yogurt'],
           ['Corn', 'Cookie', 'Cookie', 'Beans', 'Ice cream', 'Eggs']]

이제 손님 5명의 구매 내역을 트랜잭션(transaction) 형태로 표현하려고 한다. 트랜잭션이란 원래 데이터를 처리하는 작업의 단위를 의미하지만, 여기서는 손님 한명 한명의 구매 내역을 효율적으로 나타내는 형태로 이해해보자. 위에서 리스트 형태로 표현된 구매 내역은 판다스의 데이터프레임을 통해 트랜잭션으로 표현할 수 있다. 이때 mlxtend에서 제공하는 TransactionEncoder를 활용한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.