AI-United » Allgemein » Clustering-Algorithmen zur Kundensegmentierung

Clustering-Algorithmen zur Kundensegmentierung

Clustering-Algorithmen zur Kundensegmentierung

In der heutigen Wettbewerbswelt ist es wichtig, das Kundenverhalten zu verstehen und die Kunden anhand ihrer Demografie und ihres Kaufverhaltens zu kategorisieren. Dies ist ein kritischer Aspekt der Kundensegmentierung, der es Marketingfachleuten ermöglicht, ihre Marketingbemühungen in Bezug auf Werbe-, Marketing- und Produktentwicklungsstrategien besser auf verschiedene Zielgruppen festzulegen.

Zielsetzung

In diesem Artikel wird das Konzept der Segmentierung eines Kundendatensatzes von einer E-Commerce-Site mithilfe von K-Means-Clustering in Python betrachtet. Der Datensatz enthält das Jahreseinkommen von 300 Kunden und ihre jährlichen Ausgaben für eine E-Commerce-Seite. Wir verwenden den K-Means-Clustering-Algorithmus, um die optimale Anzahl von Clustern abzuleiten.

Über den Datensatz

Der Datensatz besteht aus einem Jahreseinkommen (in Tsd. USD) von 303 Kunden und deren Gesamtausgaben (in Tsd. USD) für eine E-Commerce-Seite für einen Zeitraum von einem Jahr. Lassen Sie uns die Daten mithilfe von Numpy– und Pandabibliotheken in Python untersuchen.

#Load the required packages
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

#Plot styling
import seaborn as sns; sns.set()  # for plot styling
%matplotlib inline

plt.rcParams['figure.figsize'] = (16, 9)
plt.style.use('ggplot')

#Read the csv file
dataset=pd.read_csv('CLV.csv')

#Explore the dataset
dataset.head()#top 5 columns
len(dataset) # of rows

#descriptive statistics of the dataset
dataset.describe().transpose()
dataset.head( )
dataset.describe( ).transpose( )

Der Datensatz besteht aus 303 Zeilen. Das durchschnittliche Jahreseinkommen liegt bei 245.000 und die durchschnittlichen Jahresausgaben bei 149.000. Die Verteilung des Jahreseinkommens und der jährlichen Ausgaben wurde mit einem Distplot und einem Violinplot dargestellt.

Daten visualisieren

Das Displot und das Violinplot geben einen Hinweis auf die Datenverteilung von Einkommen und Ausgaben.

#Visualizing the data - displot
plot_income = sns.distplot(dataset["INCOME"])
plot_spend = sns.distplot(dataset["SPEND"])
plt.xlabel('Income / spend')
#Violin plot of Income and Spend
f, axes = plt.subplots(1,2, figsize=(12,6), sharex=True, sharey=True)
v1 = sns.violinplot(data=dataset, x='INCOME', color="skyblue",ax=axes[0])
v2 = sns.violinplot(data=dataset, x='SPEND',color="lightgreen", ax=axes[1])
v1.set(xlim=(0,420))
Grundlagen von Clustering

Clustering ist eine nicht überwachte maschinelle Lernmethode, bei der keine abhängigen und unabhängigen Variablen definiert sind. Die Muster in den Daten werden verwendet, um ähnliche Beobachtungen zu identifizieren.

Ursprünglicher Datensatz
Nach dem Clustering

Das Ziel eines Clustering-Algorithmus besteht darin, sicherzustellen, dass der Abstand zwischen Datenpunkten in einem Cluster im Vergleich zum Abstand zwischen zwei Clustern sehr gering ist. Mit anderen Worten, Mitglieder einer Gruppe sind sich sehr ähnlich und Mitglieder verschiedener Gruppen sind sehr verschieden.

Wir verwenden K-Means-Clustering, um Kundensegmente auf Basis ihrer Einkommens- und Ausgabedaten zu erstellen.

K-Means-Clustering

K-Means-Clustering ist ein iterativer Clustering-Algorithmus, bei dem die Anzahl der Cluster K vorbestimmt ist und der Algorithmus jeden Datenpunkt basierend auf der Merkmalsähnlichkeit iterativ einem der K-Cluster zuordnet.

Die Mathematik der Clusterbildung

Die Mathematik der Clustering beinhaltet einfach ausgedrückt das Minimieren der Summe der Entfernungsquadrate zwischen dem Clusterschwerpunkt und den zugehörigen Datenpunkten:

  • K = Anzahl der Cluster;
  • N = Anzahl der Datenpunkte;
  • C = Schwerpunkt des Clusters j;
  • (xij – cj) – Abstand zwischen Datenpunkt und Schwerpunkt, dem er zugewiesen ist.
Entscheidung über die optimale Anzahl von Clustern ‚K‘

Die Haupteingabe für das K-Means-Clustering ist die Anzahl der Cluster. Das wird unter Verwendung des Konzepts der Minimierung abgeleitet. Es wird ein Scree-Diagramm erstellt, das die Anzahl der Cluster in der X-Achse und des WCSS für jede Clusternummer in der Y-Achse darstellt.

Scree-Diagramm

Die Anzahl der Cluster an der Ellbogenformation gibt normalerweise einen Hinweis auf die optimale Anzahl der Cluster. In Kombination mit spezifischen Kenntnissen der Geschäftsanforderungen sollte die optimale Anzahl von Clustern festgelegt werden.

#Using the elbow method to find the optimum number of clusters
from sklearn.cluster import KMeans
wcss = []
for i in range(1,11):
    km=KMeans(n_clusters=i,init='k-means++', max_iter=300, n_init=10, random_state=0)
    km.fit(X)
    wcss.append(km.inertia_)
plt.plot(range(1,11),wcss)
plt.title('Elbow Method')
plt.xlabel('Number of clusters')
plt.ylabel('wcss')
plt.show()
Ellbogenformation

Die Grafik zeigt die Verteilung von 4 Clustern. Wir könnten sie als die Kundensegmente interpretieren:

##Fitting kmeans to the dataset with k=4
km4=KMeans(n_clusters=4,init='k-means++', max_iter=300, n_init=10, random_state=0)
y_means = km4.fit_predict(X)

#Visualizing the clusters for k=4
plt.scatter(X[y_means==0,0],X[y_means==0,1],s=50, c='purple',label='Cluster1')
plt.scatter(X[y_means==1,0],X[y_means==1,1],s=50, c='blue',label='Cluster2')
plt.scatter(X[y_means==2,0],X[y_means==2,1],s=50, c='green',label='Cluster3')
plt.scatter(X[y_means==3,0],X[y_means==3,1],s=50, c='cyan',label='Cluster4')

plt.scatter(km4.cluster_centers_[:,0], km4.cluster_centers_[:,1],s=200,marker='s', c='red', alpha=0.7, label='Centroids')
plt.title('Customer segments')
plt.xlabel('Annual income of customer')
plt.ylabel('Annual spend from customer on site')
plt.legend()
plt.show()
k = 4
  • Cluster 1: Kunden mit mittlerem Jahreseinkommen und niedrigen Jahresausgaben
  • Cluster 2: Kunden mit hohem Jahreseinkommen und mittleren Jahresausgaben
  • Cluster 3: Kunden mit niedrigem Jahreseinkommen
  • Cluster 4: Kunden mit mittlerem Jahreseinkommen, aber hohen jährlichen Ausgaben

Cluster 4 ist sofort ein potentielles Kundensegment. Cluster 2 und 3 können jedoch weiter segmentiert werden, um eine spezifische Zielkundengruppe zu erreichen. Betrachten wir nun, wie die Cluster erstellt werden, wenn k = 6:

##Fitting kmeans to the dataset - k=6
km4=KMeans(n_clusters=6,init='k-means++', max_iter=300, n_init=10, random_state=0)
y_means = km4.fit_predict(X)

#Visualizing the clusters
plt.scatter(X[y_means==0,0],X[y_means==0,1],s=50, c='purple',label='Cluster1')
plt.scatter(X[y_means==1,0],X[y_means==1,1],s=50, c='blue',label='Cluster2')
plt.scatter(X[y_means==2,0],X[y_means==2,1],s=50, c='green',label='Cluster3')
plt.scatter(X[y_means==3,0],X[y_means==3,1],s=50, c='cyan',label='Cluster4')
plt.scatter(X[y_means==4,0],X[y_means==4,1],s=50, c='magenta',label='Cluster5')
plt.scatter(X[y_means==5,0],X[y_means==5,1],s=50, c='orange',label='Cluster6')

plt.scatter(km.cluster_centers_[:,0], km.cluster_centers_[:,1],s=200,marker='s', c='red', alpha=0.7, label='Centroids')
plt.title('Customer segments')
plt.xlabel('Annual income of customer')
plt.ylabel('Annual spend from customer on site')
plt.legend()
plt.show()
k = 6

Die Anzahl von Cluster 6 zu setzen, scheint eine sinnvollere Kundensegmentierung zu bieten.

  • Cluster 1: Mittleres Einkommen, niedrige jährliche Ausgaben
  • Cluster 2: Geringes Einkommen, niedrige jährliche Ausgaben
  • Cluster 3: Hohe Einnahmen, hohe jährliche Ausgaben
  • Cluster 4: Geringes Einkommen, hohe jährliche Ausgaben
  • Cluster 5: Mittleres Einkommen, niedrige jährliche Ausgaben
  • Cluster 6: Sehr hohes Einkommen, hohe jährliche Ausgaben

Es ist offensichtlich, dass 6 Cluster eine sinnvollere Segmentierung der Kunden ermöglichen.

Marketingstrategien für die Kundensegmente
  1. Eine typische Strategie würde bestimmte Werbemaßnahmen für die hochwertigen Kunden von Cluster 6 und Cluster 3 ausrichten.
  2. Cluster 4 ist ein einzigartiges Kundensegment, in dem diese Kunden trotz ihres niedrigen Jahreseinkommens mehr ausgeben. Für diese Gruppe könnte es einige Rabattkampagnen geben, um sie zu behalten.
  3. Für Cluster 2, in dem sowohl die Einnahmen als auch die jährlichen Ausgaben niedrig sind, könnte eine weitere Analyse erforderlich sein, um die Gründe für die niedrigeren Ausgaben zu ermitteln, und es könnten preissensitive Strategien eingeführt werden, um die Ausgaben in diesem Segment zu erhöhen.
  4. Kunden in den Clustern 1 und 5 geben trotz eines guten Jahreseinkommens wenig aus. Eine weitere Analyse dieser Segmente könnte zu Einsichten über die Zufriedenheit / Unzufriedenheit dieser Kunden oder eine geringere Sichtbarkeit des E-Commerce für diese Kunden führen. Strategien könnten entsprechend weiterentwickelt werden.

Welche Clusteranalysen kommen noch in Frage für eCommerce?

Welche Marketingstrategien für die Kundensegmente gibt es in Ihrem Umfeld?

Diese und weitere Fragen beantwortet gerne das AI United Team per Email oder in dem Q&A Bereich.

Quellen: https://towardsdatascience.com/clustering-algorithms-for-customer-segmentation-af637c6830ac

AI-United-Redaktion

Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.