Сегментация клиентов и продуктов

Машинное обучение для маркетинга на Python

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

Шаги сегментации с 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

Как задать число сегментов?

  • K-means и NMF требуют задать число кластеров (k)
  • Два способа выбрать k: 1) математически, 2) метод проб
  • Рассмотрим математический метод «локтя» для приблизительной оценки
Машинное обучение для маркетинга на Python

Метод локтя

  • Перебираем набор значений k
  • Запускаем кластеризацию для каждого на одних данных
  • Вычисляем сумму квадратов ошибок (SSE) для каждого
  • Строим график SSE от k и находим «локоть» — точку убывающего прироста снижения ошибки
Машинное обучение для маркетинга на Python

Вычисление суммы квадратов ошибок и построение графика

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

Определение оптимального числа сегментов

Метод локтя

Машинное обучение для маркетинга на Python

Метод проб и ошибок

  • Сначала вычислите математически оптимальное число сегментов
  • Постройте сегментацию для нескольких значений вокруг оптимального k
  • Изучите результаты и выберите наиболее значимый с точки зрения бизнеса (можно ли назвать сегменты? Не пересекаются ли они?)
Машинное обучение для маркетинга на Python

Давайте потренируемся!

Машинное обучение для маркетинга на Python

Preparing Video For Download...