고객·제품 세분화 구축

Python으로 배우는 마케팅용 Machine Learning

Karolis Urbonas

Head of Analytics & Science, Amazon

K-means 세분화 단계

K-means로 세분화 (k개 클러스터):

from sklearn.cluster import KMeans

kmeans=KMeans(n_clusters=k)
kmeans.fit(wholesale_scaled_df)
wholesale_kmeans4 = wholesale.assign(segment = kmeans.labels_)
Python으로 배우는 마케팅용 Machine Learning

NMF 세분화 단계

NMF로 세분화 (k개 클러스터):

from sklearn.decomposition import NMF
nmf = NMF(k)
nmf.fit(wholesale)
components = pd.DataFrame(nmf.components_, columns=wholesale.columns)

세그먼트 할당 추출:

segment_weights = pd.DataFrame(nmf.transform(wholesale, columns=components.index)
segment_weights.index = wholesale.index
wholesale_nmf = wholesale.assign(segment = segment_weights.idxmax(axis=1))
Python으로 배우는 마케팅용 Machine Learning

세그먼트 수 초기화 방법

  • K-means와 NMF 모두 클러스터 수(k) 설정이 필요
  • k를 정하는 두 가지 방법: 1) 수학적, 2) 테스트 앤 런
  • 대략적 추정을 위해 수학적 엘보 기준을 살펴봄
Python으로 배우는 마케팅용 Machine Learning

엘보 기준 방법

  • 여러 k 값을 순회
  • 동일 데이터로 각 k에 대해 클러스터링 실행
  • 각 경우 제곱오차합(SSE) 계산
  • SSEk를 그려 "엘보" 지점 식별 — 오류 감소의 체감 구간
Python으로 배우는 마케팅용 Machine Learning

제곱오차합 계산 및 결과 시각화

sse = {}
for k in range(1, 11):
    kmeans=KMeans(n_clusters=k, random_state=333)
    kmeans.fit(wholesale_scaled_df)
    sse[k] = kmeans.inertia_
plt.title('Elbow criterion method chart')
sns.pointplot(x=list(sse.keys()), y=list(sse.values()))
plt.show()
Python으로 배우는 마케팅용 Machine Learning

최적 세그먼트 수 식별

엘보 기준 방법

Python으로 배우는 마케팅용 Machine Learning

테스트 앤 런 방식

  • 먼저 수학적으로 최적 세그먼트 수 계산
  • 최적 k 주변의 여러 값으로 세분화 구축
  • 결과를 검토해 비즈니스 관련성이 높은 것을 선택 (세그먼트에 이름을 붙일 수 있나요? 모호/중복되나요?)
Python으로 배우는 마케팅용 Machine Learning

고객 세그먼트를 만들어 봅시다!

Python으로 배우는 마케팅용 Machine Learning

Preparing Video For Download...