Segmentacja klientów i produktów

Uczenie maszynowe w marketingu w Pythonie

Karolis Urbonas

Head of Analytics & Science, Amazon

Kroki segmentacji z K-means

Segmentacja z K-means (dla k klastrów):

from sklearn.cluster import KMeans

kmeans=KMeans(n_clusters=k)
kmeans.fit(wholesale_scaled_df)
wholesale_kmeans4 = wholesale.assign(segment = kmeans.labels_)
Uczenie maszynowe w marketingu w Pythonie

Kroki segmentacji z NMF

Segmentacja z NMF (k klastrów):

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

Wyodrębnianie przypisania do segmentów:

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))
Uczenie maszynowe w marketingu w Pythonie

Jak określić liczbę segmentów?

  • Zarówno K-means, jak i NMF wymagają podania liczby klastrów (k)
  • Dwa sposoby definiowania k: 1) Matematyczny, 2) Testuj i ucz się
  • Zbadamy matematyczną metodę kryterium łokcia jako punkt wyjścia
Uczenie maszynowe w marketingu w Pythonie

Metoda kryterium łokcia

  • Iterować po kolejnych wartościach k
  • Uruchomić klasteryzację dla każdej wartości na tych samych danych
  • Obliczyć sumę kwadratów błędów (SSE) dla każdej
  • Wykreślić SSE w zależności od k i zidentyfikować „łokieć" – punkt malejących przyrostów redukcji błędu
Uczenie maszynowe w marketingu w Pythonie

Obliczanie sumy kwadratów błędów i wizualizacja wyników

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()
Uczenie maszynowe w marketingu w Pythonie

Wyznaczanie optymalnej liczby segmentów

Metoda kryterium łokcia

Uczenie maszynowe w marketingu w Pythonie

Metoda testuj i ucz się

  • Najpierw matematycznie wyznaczyć optymalną liczbę segmentów
  • Zbudować segmentację dla kilku wartości wokół optymalnego k
  • Przeanalizować wyniki i wybrać najbardziej użyteczny biznesowo (Czy segmenty można nazwać? Czy są niejednoznaczne / nakładające się?)
Uczenie maszynowe w marketingu w Pythonie

Zbudujmy segmenty klientów!

Uczenie maszynowe w marketingu w Pythonie

Preparing Video For Download...