E-commerce 데이터 분석 - ④ 장바구니 분석

김재현·2022년 10월 17일
0

project

목록 보기
6/12

1. 프로젝트 목적

4차 과제는 전통적인 데이터 마이닝 기법 중 하나인 장바구니 분석을 활용해 인사이트와 액션 플랜을 도출하는 것입니다. 그와 동시에 SQL 활용 능력과 Python을 활용한 데이터 활용 능력을 기르는 것입니다.


2. 장바구니 분석

2.1 SQL 활용

4차 과제에서 다룰 데이터에 대한 내용은 다음과 같습니다. 2022년 8월 1일 ~ 2022년 9월 1일 간 집계된 고객 6,620명의 구매 데이터 13,506건입니다. 구매가 이루어진 상품은 총 439개입니다.


(1) A 상품 ID, B 상품 ID, A 상품 구매 횟수, B 상품 구매 횟수, A와 B를 함께 구매한 횟수

우선 CROSS JOIN을 활용하여 A 상품과 B 상품을 구매한 모든 경우의 수를 구했습니다. 그리고 WHERE 구에서 조건을 주어 상품 A, B가 다르고 중복된 데이터가 나오지 않도록 하였습니다.

그러면 위와 같이 한 고객이 동시에 구매한 물건의 상품 A의 ID와, 상품 B의 ID를 구할 수 있습니다.

앞서 CROSS JOIN하여 경우에 수를 구했던 테이블과 함께 각 상품별 구매 횟수 테이블을 WITH 구문으로 저장하였습니다.

그리고 각 상품별 구매 횟수 테이블을 INNER JOIN으로 합치면, 구하고자 하는 지표를 모두 확인해볼 수 있었습니다.

결과를 확인해보면 두 물건을 구매한 전체 경우의 수 중에서, 상품 0과 1을 구매한 사람들이 가장 많았다는 것을 확인해볼 수 있습니다.


2. A 상품 ID, B 상품 ID, 지지도(Support), 신뢰도(Confidence), 향상도(Lift)

이제 이 데이터를 가지고 지지도, 신뢰도, 향상도를 계산해 보겠습니다. 공식은 위의 내용과 같습니다.

해당 공식에 값을 대입한 쿼리문은 위와 같습니다. 실행을 하면 지지도, 신뢰도, 향상도가 계산됩니다.

지지도는 연관성이 없는 데이터를 Screen Out 하는데 사용합니다. 그러면 지지도가 높은 데이터만 확인하면 될 것 같은데 왜 향상도를 구하는 것일까요?

향상도는 두 상품의 연관성을 오판할 여지를 줄여줍니다. 기준 상품과 함께 구매되는 상품이 생필품이어서 빈번하게 구매가 되면 연관성이 없음에도 지지도가 올라가는 경우가 있습니다. 향상도를 사용하면 이러한 빈틈을 보완하는데 사용됩니다.


2.2 Python 활용

Python에서도 SQL에서 진행했던 장바구니 분석을 수행할 수 있습니다. 우선 프로젝트를 진행하기 위해 PyMySQL과 Pandas, Numpy를 함께 import 하였습니다.

우선 pymysql.connect 메소드를 사용하여 MySQL 데이터베이스와 연결하였습니다.

그리고 커서를 생성하여 SQL문을 작성 및 실행하였고, 이를 fetchall()로 저장하였습니다. 이제 이 저장된 내용으로 장바구니 분석을 진행할 수 있습니다.

다음으로 컬럼을 설정해주고, fetchall()로 저장한 내용을 넣어, Pandas로 데이터프레임을 만들었습니다. 이제 데이를 확인해보겠습니다.

MySQL 데이터베이스에 저장되어 있던 13,506건의 레코드가 모두 성공적으로 데이터프레임으로 만들어졌음을 확인했습니다.

장바구니 분석을 도와주는 Apriori 알고리즘을 활용할 것인데요. 우선 이를 위해 전처리를 진행하겠습니다. 구매를 했는지 여부를 확인할 수 있도록 숫자 1이 들어간 컬럼을 생성하여 원본 데이터에 이어붙였습니다.

그리고 피봇테이블을 활용하여 구매여부를 0과 1로 확인할 수 있도록 하였습니다.

0과 1은 replace를 활용하여 True와 False로 변경하였습니다. 이제 상품의 구매여부를 참과 거짓으로 확인할 수 있습니다.

이제 Apriori 알고리즘 활용해보겠습니다. 위와 같은 코드를 통해 데이터들의 발생 빈도를 구했습니다.

그리고 앞에서 구한 발생 빈도를 활용하여 신뢰도, 향상도 평가(association rules)를 진행했습니다. 그럼 위와 같은 결과를 얻을 수 있습니다.

결과를 보면 Python에서 나온 결과와 SQL에서 나온 결과가 다른 것을 확인할 수 있습니다. 이는 기준 상품과 함께 구매한 상품을 한 가지로 제한하는가, 그렇지 않은가의 차이 때문입니다.


3. Action Plan

SQL과 Python을 통해 이와 같은 분석을 할 수 있다는 것을 알게 된 것만으로도 충분히 재밌었던 프로젝트였습니다. 이 결과를 가지고 어떤 액션을 취할 수 있을까요?

오프라인 마트의 경우 묶음 상품 이벤트를 진행할 수 있습니다. 그리고 이커머스 기업이라면 특정 상품을 검색했을때, 함께 사면 좋은 제품을 추천해줄수도 있겠죠. 그리고 유통기업이 아니라 OTT 기업인 경우에도 추천 컨텐츠를 함께 제공해줄 수도 있을 것입니다.

장바구니 분석은 데이터 마이닝의 한 기법입니다. 이런 데이터 마이닝 기술을 활용해 추천 시스템을 기획할 수 있다는 점을 기억해둬야겠습니다.

0개의 댓글