카테고리 없음
[삼성 SDS Brightics #18] 브라이틱스로 연관성 분석하기 (장바구니 데이터)
song2001
2021. 10. 5. 23:26
안녕하세요!
오늘도 개인 프로젝트 분석한 거 들고 왔어요
참고로 제가 사용한 데이터 셋은 Kaggle에서 가져왔어요!
https://www.kaggle.com/c/instacart-market-basket-analysis/overview
특히 오늘은 Brightics의 Association Rule, Association Rule Visualization 함수를
집중적으로 사용해 보려고 해요!
얼마나 다양한 연관성이 나올지 보러 갑시다
오늘 분석하면서 겪었던 문제 --> 해결 방법 이런 식으로 진행해 볼게요!
문제 #1) 연관성이 너무 적게 나오는 경우
아래 사진처럼 설정을 하고 Association Rule 함수를 실행시켰더니
rows 가 32줄밖에 안 나왔어요
제가 가진 데이터는 약 1,400,000개의 row 가 있었지만
32줄밖에 안 나온 거 있죠 ㅠㅠ
이렇게 되면 의미 있는 연관성은 못 찾겠다 싶어서
row 가 더 많이 나올 수 있는
방법을 썼어요
해결 #1) Support, Confidence, Lift 값 조정하기
그전에는 support를 0.01로만 설정했었어요
처음엔 전체 내역 중 antecedent 와 consequent가 같이 구입될 확률이
1%는 넘어야 하지 않을까? 싶었는데,
생각해 보니까 제가 고른 item column 이 너무 다양한 아이템을 포함하고 있더라고요
이게 무슨 말이냐면 다 같은 바나나여도
스위티오 바나나가 있고 다른 브랜드 바나나가 있잖아요
이걸 데이터가 다른 product로 구분해놔서
아래 사진처럼 banana 따로
Bag of Organic Banana 따로 연관성을 지었더라구요..ㅋㅋㅋㅋㅋ
참고로 이 그래프는 'Association Rule Visualization' 함수를 사용했어요!!
그냥 Association Rule의 table로 보는 것보다
시각화해서 보는 게 더 빠르고
내가 놓치는 부분을 캐치해주기 때문에
매우 유용합니다 bb

그래서 저는 support를 0.005로 조정해 줬어요
그랬더니 더 많은 규칙이 생성됐어요!
그리고 lift >1로 해줬는데, 이게 1이 넘어야
아이템 1의 구매가 아이템 2의 구매에 양(+)의 영향력이 있다는 뜻이에요
row 가 아까보다 몇 배는 늘었죠!
support를 0.005로 설정하면,
전체 구매 내역 중에서 X 와 Y 가 같이 구입될 확률이
최소 0.05%는 넘겨라 이 뜻이에요
문제 #2) 데이터가 비슷한 연관 규칙만 찾을 때
흠.. 근데 이렇게 association 이 많아진다 해도,
아까 그 바나나를 두 개의 다른 아이템으로 보는 문제는 해결이 되지 않고,
애초에 전체 데이터 중에 과일이 가장 많은 비중을 차지하고 있기 때문에
연관 규칙이 전보다 많이 생성되긴 해도,
아까와 비슷하게 과일 관련된 것만 계속 나왔어요.
해결 #2) 골고루 분배될 수 있는 넓은 범위의 변수 선택
그래서 저는 item column 을 다른 변수로 설정해뒀어요.
'product name'보다는 광범위한 'Department' 변수를 사용했답니다
'Department'는 유제품 / 과일 / 고기 / 해산물 등등 20개의 아이템이 있어요
아까 과일은 다 produce 카테고리에 있었던 건데,
이렇게 department으로 묶여진 변수를 선택하니까
bulk, snack, pantry, dairy eggs, frozen 등등
더 다양한 연관 규칙이 발견되었어요!
문제 #3) 카테고리별 연관 규칙은 찾았지만 정확히 어떤 물건인지 모를 때
하지만 여기서 문제는,
bulk, snack, pantry, dairy eggs, frozen 등등 서로 연관이 있다는 건
찾았지만, 그 제품들이 정확히 무엇인지는
모른다는 점..
아까 order_id와 department를
Association Rule Visualization로 시각화해 봤을 때
pets -> frozen
international -> pantry
meat seafood -> snacks
이런 규칙을 봤으니까
예를 들어 그중 pets와 frozen의 관계만 보고 싶다 하면
데이터 셋을 'Filter' 함수로 특정 department만 남겨두고,
여기서 바로 Association Rule 을 product name으로 사용할 수 있어요!
저는 이런 식으로 계속 다양한 연관 규칙을 찾아가고 있는 중입니다!
다음 블로그에서는 제가 발견한 인사이트, 그리고
transaction 데이터로 브라이틱스에 있는 다른 추천 알고리즘을 어떻게 쓸 수 있는가
알아보겠습니다!
