Applied unsupervised learning with python 책을 기반으로 작성된 글입니다.

 

장바구니 분석의 기본적인 아이디어는 고객의 행동 패턴이나 제품 간의 관계에 대한 통찰을 끌어낼 수 있을 정도로 충분하게 함께 판매되는 제품 또는 제품 그룹 간의 관계와 빈도를 분석하는데 있다.

 

장바구니는 경제 시스템 내에 존재하는 유지되는 상품의 집합이다. 유지 된다는 말은 카탈로그에서 없애기 전까지는 계속 구매가 가능하다는 말로 이해하면 된다. 제품에는 일반적으니 모든 상품이나 서비스가 속할 수 있으며 경제 시스템은 하나의 회사나 행동 주체, 심지어 국가도 이에 해당할수 있다.

7장에 배운 토픽 모델에서는 자주 발생하는 단어 그룹을 찾았다면 이번 장에서는 자주 발생하는 제품 그룹을 찾는 형태이다. 따라서 토픽 모델에서의 단어 클러스터링이 장바구니 분석에 활용될 수 있다. 하지만 가장 큰 차이점은 장바구니에서의 클러스터는 몇개의 제품만 포함하는 작은 단위라는 점이며 클러스터 내 항목의 순서가 확률적 지표를 계산할 때 중요하다는 점이다. 이런 지표가 무엇을 의미하고 어떻게 계산하는지를 살펴 보겠다. 또한 장바구니 분석을 하기전에 요구되는 사항으로는 아이템의 컬렉션으로 구성된 리스트 형태의 데이터를 말한다.

 

 활용 사례

전통적인 소매업에서 적용할 수 있는 3가지 분야로는 1. 가격 개선 2. 쿠폰과 할인 추천 3. 매장의 배치 이다. 

모델을 사용해 제품 간의 관계를 알아내면 이를 전략적으로 활용해 제품을 배치하면 고객들이 더 많은 제품을 구매하도록 유도할 수있다. 둘 이상의 제품 간 관계가 충분히 강하고 단독으로는 잘 구매되지 않는 특성을 가진 제품(예를 들면 고기와 야채)이라면 이를 매장에서 서로 먼곳으로 배치하여 고객들이 두 제품을 구매하러 가면서 다른 제품도 중간에 구매할수 있게 유도할 수 있다. 반대로 관계가 약한 두 제품을 옆에 나란히 배치하면 이를 통해 추가적으로 구매를 유도할 가능성이 있다. 예를 들면 기저귀와 맥주 미국에 아기를 가진 아버지가 매장에 와서 기저귀를 고르고 맥주를 사는 사람이 많은것을 확인하고 바로 옆에 두고 판매를 하니 대부분이 기저귀를 구매하고 맥주를 구매하는 분들이 많았다 라는 것을 예로 들수가 있다. 

가격 개선과 쿠폰 및 할인 추천은 모두 상품의 가격을 다룬다는 측면에서 유사한 전략이다. 다시말해 어떤 제품은 가격을 올리고 어떤 제품은 가격을 내릴 것인가로 설명가능하다. 연관성이 높은 두제품을 생각해보면 이 두 제품은 함께 구매 될 가능성이 높기 떄문에 두 제품 중 하나의 가격을 올리더라도 함께 구매가 이뤄지면서 수익성이 개선 될 수 있다. 하지만 일반적으로 제품의 가격을 올리면 구매 빈도가 감소할 가능성이 있지만 연관성이 높은 상품이라면 risk(위험성)은 줄어든다. 비슷한 방식으로 관련이 별로 없는 제품에 대해서는 한 제품을 구매할 때 나머지 제품의 할인이나 쿠폰을 제공해 구매를 유도 할 수도 있다.

1. 중요한 확률 지표

- 장바구니 분석은 다양한 확률 지표를 기반으로 계산하는데 5가지 지표로는 1. 지지도 2. 신뢰도 3. 향상도 4. 레버리지 5. 확신 로 구성 된다.

1. 지지도 

 - 단순히 아이템 세트가 데이터 내에 나타날 확률로 전체 거래 횟수에 대한 해당 아이템 세트의 거래 횟수 비중으로 간단하게 계산할수 있다. (단 아이템 세트는 단일 또는 묶음 일수 있다.)

- 지지도는 매우 단순하지만 신뢰도 및 연관의 강도를 판단하는데 있어서 중요한 지표이다.

- 지지도는 확률이므로 값의 범위는 [0-1]이다. 

Support(X =>Y) = Support(X,Y) = P(X,Y) = Frequency(X,Y) / N

example) 샘플 데이터가 10개중에 우유와 빵이 함께 나온 데이터를 세어보면 4번 동시에 판매 되었다. 그러면 지지도는 4/10 으로 0.4로 쉽게 계산 가능하다.

2. 신뢰도

- 신뢰도 지표는 기본적으로 제품 A의 구매에 따른 제품 B의 구매 확률이기 때문에 조건부 확률 측면으로 생각해야한다. 신뢰도는 일반적으로 A=>B로 표기하며, A가 포함된 거래에 B가 포함되는 비율을 표현한다. 

- 신뢰도도 확률이므로 값의 범위는 [0-1]이다.

Confidence(X=>Y) = P( Y | X ) = Support(X,Y) / P(X)  = Frequency(X,Y) /N / Frequency(X) / N

즉 , Frequency(X,Y) / Frequency(X) 로 나타낼 수 있다.

example) 맥주 와인 아이템 중 특히 맥주 => 와인의 신뢰도를 계산해보자.

일단 맥주를 포함하는 거래를 식별한다. 거래는 3건이며 거래 2, 6, 7번이 해당하며 이 해당 거래 중에 얼마나 와인이 많이 포함 됐는지를 살펴보면 되는데 결과는 모든 거래에 와인이 포함 돼 있다. 따라서  맥주 => 와인 신뢰도는 1이다. 즉 고객이 맥주를 살 때 항상 와인을 함께 샀다는 의미이다.

3. 항상도(Lfit) 와 레버리지(Leverage)

- 두 지표는 동일한 질문의 답을 찾는다. 신뢰도처럼 향상도와 레버리지는 A=>B로 표현한다. 하지만 답을 찾는 질문은 " 하나의 항목 A가 다른 항목 B와 관련된 항목을 결정하는데 사용할 수 있는가 여부이다." 다시말해 어떤 소비자가 A 제품을 구매하는 경우 제품 B를 구매할지 여부를 어느정도 정도의 확신을 갖고 말할 수 있는 가? 이다. 

- A와 B가 독립적이지 않은 것으로 가정되는 표준 사례에서 A와 B의 지지도두 제품의 독립적으로 가정될 때를 비교함으로써 답을 찾을수 있다.

- 항상도는 두 사례의 비율로 계산되기 때문에 가질 수 있는 값의 범위는 [0, Infinity]이다. 만일 향상도의 값이 1이면 두제품은 서로 독립적이라는 의미이다. 그래서 제품 A의 구매가 제품 B의 구매에 미치는 영향은 없다라는것이다.

Lfit(X=>Y) = Support(X,Y) / (Support(X) * Support(Y)) = P(X,Y) / (P(X) * P(Y))

-레버리지는 두 케이스 간의 차이를 계산하기 때문에 값의 범위는 [-1, 1]이다. 레버리지가 0이면 향상도가 1일때 상황이다.

Leverage(X=>Y) = Support(X,Y) - (Support(X) * Support(Y)) = P(X,Y) - (P(X) * P(Y))

>> 위 지표값은 아이템간의 고나계 강도나 방향을 측정한다.

만일 향상도 값이 0, 1 이라면 두 아이템간의 관계는 부정적인 방향을 강하다고 할수 있다. 한 아이템을 구매하면 나머지는 잘 구매하지 않는다는 의미이다. 양과 음의 관계는 독립성과는 분리된다. 그래서 향상도가 1경우 레버리지가 0인 경우로 부터 멀어질수록 연관성이 강해진다.

 

4. 확신

- 다른 지표에 비해 덜 직관적이다. 확신은 X와 Y가 부정확한 예측 빈도와 무관한 경우, Y의 발생과 무고나하게 X가 발행하는 예상 빈도의 비율이다. 

- 값의 범위는 [0, Inf] 이다

Conviction(X=>Y) = ( 1 - Support(Y)) / (1 - Confidence(X=>Y)) 이다.

example) 반대 관계인 와인 =>맥주를 생각해보자.  Support(Y) 이번 경우라면  Support(맥주)는 3/10 이고 확신 X=>Y는 신뢰도 와인 => 맥주는 3/4dlek. 따라서 확신 :  와인 => 맥주는 [] 이다. 만일 와인과 맥주가 독립적이라면 와인 => 맥주는 2.8배가 더 부적확 할것이라고 할수있다. 하지만 이전에 업급하길 와인과 맥주 사이의 연관성은 성립한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ Recent posts