Der italienische Ökonom Vilfredo Pareto stellte fest, dass 80% der Wirkung aus 20% der Ursachen stammen – bekannt als 80/20-Regel oder Pareto-Prinzip. Ähnlich verhält es sich im Business: 80% des Umsatzes kommen oft von 20% der Kundschaft. Unternehmen müssen diese Top-Kundinnen und -Kunden identifizieren und die Beziehung pflegen, um kontinuierliche Einnahmen zu sichern. Um langfristige Kundenbeziehungen aufzubauen, sollten Programme zur Kundenbindung geplant werden, etwa Rabatte, Angebote, Coupons, Bonuspunkte und Geschenke.
Neue Kundschaft zu gewinnen ist teurer, als bestehende zu halten, denn du musst weniger Ressourcen, Zeit und Aufwand investieren. Es gilt vor allem, bestehende Kundinnen und Kunden zufrieden zu stellen. Business-Analysten berechnen die Akquisitionskosten präzise mithilfe des CLTV (Customer Lifetime Value). Der CLTV zeigt den gesamten Umsatz, der während der gesamten Kundenbeziehung erzielt wird. Er hilft Unternehmen, sich auf diejenigen Kundensegmente zu konzentrieren, die künftig den meisten Umsatz bringen können.
Customer Lifetime Value (CLTV)
"Customer Lifetime Value ist ein Geldwert, der den Umsatz oder Gewinn repräsentiert, den eine Kundin oder ein Kunde dem Unternehmen über die gesamte Dauer der Beziehung bringt." CLTV macht den Unterschied zwischen langfristig und kurzfristig gebundenen Kundinnen und Kunden sichtbar. Der Customer Lifetime Value (CLV) hilft dir, die wichtigsten Vertriebsfragen in jedem Unternehmen zu beantworten:
Wie identifiziere ich die profitabelsten Kundinnen und Kunden?
Wie kann ein Unternehmen das beste Angebot machen und den höchsten Ertrag erzielen?
Wie segmentiere ich profitable Kundensegmente?
Wie viel Budget sollte in die Neukundengewinnung fließen?
Customer Lifetime Value berechnen
Es gibt viele Ansätze, um den CLTV zu berechnen. Jede Person hat dazu ihre eigene Sicht. Für die Berechnung benötigen wir historische Kundendaten – für neue Kundinnen und Kunden ist das zunächst nicht möglich. Um dieses Problem zu lösen, entwickeln Business-Analysten Machine-Learning-Modelle, die den CLTV für Neukundschaft vorhersagen. Lass uns ein paar Ansätze anschauen:
1) Du kannst den CLTV berechnen, indem du den Gewinn/Umsatz je Kundin bzw. Kunde über einen definierten Zeitraum aufsummierst. Beispiel: Wenn die Kundin seit 3 Jahren bei dir kauft, summierst du die Gewinne dieser 3 Jahre. Du kannst den Gewinn jährlich, halbjährlich oder monatlich mitteln. Mit diesem Ansatz lässt sich jedoch kein Vorhersagemodell für neue Kundinnen und Kunden bauen.
2) Baue ein Regressionsmodell für bestehende Kundschaft. Nutze die jüngsten sechs Monate als unabhängige Variablen und den Gesamtumsatz über drei Jahre als abhängige Variable und trainiere darauf ein Regressionsmodell.
3) CLTV lässt sich auch über RFM-Werte (Recency, Frequency, Monetary) implementieren. Mehr dazu findest du in meinem Tutorial.
Customer Value = Average Order Value * Purchase Frequency
Bereitgestellt von
Average Order Value (AOV): Der durchschnittliche Bestellwert ist das Verhältnis aus Gesamtumsatz und Gesamtanzahl der Bestellungen. Er zeigt, wie viel Umsatz im Mittel pro Bestellung erzielt wird.
Average Order Value = Total Revenue / Total Number of Orders
Bereitgestellt von
Purchase Frequency (PF): Die Kaufhäufigkeit ist das Verhältnis aus Gesamtanzahl der Bestellungen und Gesamtanzahl der Kundinnen und Kunden. Sie zeigt, wie viele Bestellungen eine Person im Schnitt tätigt.
Purchase Frequency = Total Number of Orders / Total Number of Customers
Bereitgestellt von
Churn-Rate: Der Anteil der Kundinnen und Kunden, die nicht erneut bestellen.
Kundenlebensdauer: Der Zeitraum, in dem eine Kundin oder ein Kunde kontinuierlich bestellt.
Repeat-Rate: Das Verhältnis aus der Anzahl der Kundinnen und Kunden mit mehr als einer Bestellung zur Zahl der einzigartigen Kundinnen und Kunden. Beispiel: Wenn du in einem Monat 10 Kundinnen/Kunden hast und 4 davon zurückkommen, beträgt deine Repeat-Rate 40%.
#import modulesimport pandas as pd # for dataframesimport matplotlib.pyplot as plt # for plotting graphsimport seaborn as sns # for plotting graphsimport datetime as dt
import numpy as np
Bereitgestellt von
Datensatz laden
Lass uns zuerst den benötigten Online-Retail-Datensatz mit der pandas-Funktion read_csv laden. Du kannst die Daten hier herunterladen.
Manchmal sind Datensätze unaufgeräumt. Duplikate können deine Analyse verzerren. In Python bietet pandas die Funktion drop_duplicates(), die doppelte Einträge entfernt.
filtered_data=data[['Country','CustomerID']].drop_duplicates()Bereitgestellt von
Lass uns in die Insights einsteigen
#Top ten country's customer
filtered_data.Country.value_counts()[:10].plot(kind='bar')Bereitgestellt von
<matplotlib.axes._subplots.AxesSubplot at 0x7fe677a887f0>Bereitgestellt von
Im gegebenen Datensatz stammen die meisten Kundinnen und Kunden aus dem „United Kingdom“. Du kannst die Daten also auf diese Gruppe filtern.
uk_data=data[data.Country=='United Kingdom']
uk_data.info()Bereitgestellt von
Die describe()-Funktion in pandas liefert bequeme Übersichtsstatistiken. Sie gibt Anzahl, Mittelwert, Standardabweichung, Minimum, Maximum und Perzentile der Daten zurück.
# Change the name of columns
uk_data_group.columns=['num_days','num_transactions','num_units','spent_money']
uk_data_group.head()Bereitgestellt von
num_days
num_transactions
num_units
spent_money
CustomerID
12346.0
0
1
74215
77183.60
12747.0
366
103
1275
4196.01
12748.0
372
4596
25748
33719.73
12749.0
209
199
1471
4090.88
12820.0
323
59
722
942.34
CLTV mit folgender Formel berechnen:
CLTV=((Average Order Value x Purchase Frequency)/Churn Rate) x Profit margin.
Customer Value = Average Order Value * Purchase Frequency
Bereitgestellt von
1. Durchschnittlichen Bestellwert berechnen
# Average Order Value
uk_data_group['avg_order_value']=uk_data_group['spent_money']/uk_data_group['num_transactions']Bereitgestellt von
(90.37107880642694,0.9818923743942872,0.018107625605712774)Bereitgestellt von
4. Gewinnmarge berechnen
Die Gewinnmarge ist eine gängige Profitabilitätskennzahl. Sie zeigt, wie viel Prozent des Umsatzes als Gewinn verbleiben. Nehmen wir an, unser Geschäft erzielt ca. 5% Marge auf den Gesamtumsatz.
# Profit Margin
uk_data_group['profit_margin']=uk_data_group['spent_money']*0.05Bereitgestellt von
Teile die Spalten in Zielvariable (dependent) und Feature-Variablen (independent). Wähle die letzten 6 Monate als Features.
X=sale[['Dec-2011','Nov-2011','Oct-2011','Sep-2011','Aug-2011','Jul-2011']]
y=sale[['CLV']]Bereitgestellt von
Daten aufteilen
Um die Modellleistung zu beurteilen, ist es sinnvoll, den Datensatz in Trainings- und Testmenge zu teilen.
Wir nutzen train_test_split(). Du übergibst Features, Zielvariable und die Größe des Testsets. Optional sorgt random_state als Seed für Reproduzierbarkeit. Ist random_state None, nutzt der Zufallszahlengenerator np.random – ohne Seed erhältst du bei jedem Split andere Ergebnisse.
#split training set and test setfrom sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y,random_state=0)Bereitgestellt von
Modellentwicklung
Importiere das Modul für lineare Regression und erstelle ein Objekt. Trainiere das Modell mit fit() auf dem Trainingsset und sage mit predict() auf dem Testset voraus.
# import modelfrom sklearn.linear_model import LinearRegression
# instantiate
linreg = LinearRegression()# fit the model to the training data (learn the coefficients)
linreg.fit(X_train, y_train)# make predictions on the testing set
y_pred = linreg.predict(X_test)Bereitgestellt von
# print the intercept and coefficientsprint(linreg.intercept_)print(linreg.coef_)Bereitgestellt von
[208.50969617][[0.998805510.803812541.602268291.674332281.528608132.87959449]]Bereitgestellt von
Wie gut passt das Modell zu den Daten?
Zur Bewertung der Gesamtgüte nutzen wir R-Quadrat. Es beschreibt den durch das Modell erklärten Varianzanteil und liegt zwischen 0 und 1. Je höher, desto besser, da mehr Varianz erklärt wird.
from sklearn import metrics
# compute the R Square for modelprint("R-Square:",metrics.r2_score(y_test, y_pred))Bereitgestellt von
Dieses Modell erreicht ein hohes R-Quadrat (0,96) und passt die Daten sehr gut.
Modellevaluation
Für Regressionsprobleme werden folgende Metriken genutzt (Ritchie Ng):
Mean Absolute Error (MAE) ist der mittlere Betrag der Fehler.
Mean Squared Error (MSE) ist der mittlere quadratische Fehler.
Root Mean Squared Error (RMSE) ist die Quadratwurzel des MSE.
# calculate MAE using scikit-learnprint("MAE:",metrics.mean_absolute_error(y_test,y_pred))#calculate mean squared errorprint("MSE",metrics.mean_squared_error(y_test, y_pred))# compute the RMSE of our predictionsprint("RMSE:",np.sqrt(metrics.mean_squared_error(y_test, y_pred)))Bereitgestellt von
MAE:595.0282284701234MSE2114139.8898678957RMSE:1454.0082151995896Bereitgestellt von
RMSE ist beliebter als MSE und MAE, weil die Einheit der Zielvariable entspricht und dadurch intuitiver interpretierbar ist.
Vorteile und Nachteile von CLTV
CLTV hilft dir, einen wirksamen Geschäftsplan zu entwickeln und bietet Ansatzpunkte zum Skalieren. Zudem ermöglicht CLTV sinnvolle Kundensegmente, mit denen du die Bedürfnisse verschiedener Gruppen erkennst.
Customer Lifetime Value ist ein Werkzeug, keine Strategie. CLTV identifiziert die profitabelsten Kundinnen und Kunden – wie du daraus Profit schlägst, hängt von deiner Strategie ab. Häufig werden CLTV-Modelle missverstanden oder falsch verwendet. Eine zu starke Fixierung auf CLTV kann Scheuklappen erzeugen: Unternehmen fokussieren sich nur auf die vermeintlich besten Gruppen und wiederholen das Geschäft dort. Es ist jedoch ebenso wichtig, auch andere Kundinnen und Kunden im Blick zu behalten.
Fazit
Glückwunsch, du hast das Ende dieses Tutorials erreicht!
In diesem Tutorial hast du den Customer Lifetime Value im Detail kennengelernt: Definition, Ansätze zur Berechnung, eine Umsetzung in Python von Grund auf, ein Vorhersagemodell sowie die Vor- und Nachteile. Außerdem hast du grundlegende pandas-Konzepte wie groupby und Pivot-Tabellen genutzt, um ausgewählte Spalten und Zeilen zusammenzufassen.
Hoffentlich kannst du das CLTV-Konzept jetzt auf deine eigenen Datensätze anwenden. Danke fürs Lesen!
Mach dich mit Python-Datenstrukturen vertraut: Lerne mehr über Datentypen und primitive sowie nicht-primitive Datenstrukturen wie Strings, Listen, Stapel usw.
Der italienische Ökonom Vilfredo Pareto stellte fest, dass 80% der Wirkung aus 20% der Ursachen stammen – bekannt als 80/20-Regel oder Pareto-Prinzip. Ähnlich verhält es sich im Business: 80% des Umsatzes kommen oft von 20% der Kundschaft. Unternehmen müssen diese Top-Kundinnen und -Kunden identifizieren und die Beziehung pflegen, um kontinuierliche Einnahmen zu sichern. Um langfristige Kundenbeziehungen aufzubauen, sollten Programme zur Kundenbindung geplant werden, etwa Rabatte, Angebote, Coupons, Bonuspunkte und Geschenke.
Neue Kundschaft zu gewinnen ist teurer, als bestehende zu halten, denn du musst weniger Ressourcen, Zeit und Aufwand investieren. Es gilt vor allem, bestehende Kundinnen und Kunden zufrieden zu stellen. Business-Analysten berechnen die Akquisitionskosten präzise mithilfe des CLTV (Customer Lifetime Value). Der CLTV zeigt den gesamten Umsatz, der während der gesamten Kundenbeziehung erzielt wird. Er hilft Unternehmen, sich auf diejenigen Kundensegmente zu konzentrieren, die künftig den meisten Umsatz bringen können.
Customer Lifetime Value (CLTV)
"Customer Lifetime Value ist ein Geldwert, der den Umsatz oder Gewinn repräsentiert, den eine Kundin oder ein Kunde dem Unternehmen über die gesamte Dauer der Beziehung bringt." CLTV macht den Unterschied zwischen langfristig und kurzfristig gebundenen Kundinnen und Kunden sichtbar. Der Customer Lifetime Value (CLV) hilft dir, die wichtigsten Vertriebsfragen in jedem Unternehmen zu beantworten:
Customer Lifetime Value berechnen
Es gibt viele Ansätze, um den CLTV zu berechnen. Jede Person hat dazu ihre eigene Sicht. Für die Berechnung benötigen wir historische Kundendaten – für neue Kundinnen und Kunden ist das zunächst nicht möglich. Um dieses Problem zu lösen, entwickeln Business-Analysten Machine-Learning-Modelle, die den CLTV für Neukundschaft vorhersagen. Lass uns ein paar Ansätze anschauen:
1) Du kannst den CLTV berechnen, indem du den Gewinn/Umsatz je Kundin bzw. Kunde über einen definierten Zeitraum aufsummierst. Beispiel: Wenn die Kundin seit 3 Jahren bei dir kauft, summierst du die Gewinne dieser 3 Jahre. Du kannst den Gewinn jährlich, halbjährlich oder monatlich mitteln. Mit diesem Ansatz lässt sich jedoch kein Vorhersagemodell für neue Kundinnen und Kunden bauen.
2) Baue ein Regressionsmodell für bestehende Kundschaft. Nutze die jüngsten sechs Monate als unabhängige Variablen und den Gesamtumsatz über drei Jahre als abhängige Variable und trainiere darauf ein Regressionsmodell.
3) CLTV lässt sich auch über RFM-Werte (Recency, Frequency, Monetary) implementieren. Mehr dazu findest du in meinem Tutorial.
4) Über folgende Gleichung: CLTV = ((Durchschnittlicher Bestellwert × Kaufhäufigkeit)/Churn-Rate) × Gewinnmarge.
Average Order Value (AOV): Der durchschnittliche Bestellwert ist das Verhältnis aus Gesamtumsatz und Gesamtanzahl der Bestellungen. Er zeigt, wie viel Umsatz im Mittel pro Bestellung erzielt wird.
Purchase Frequency (PF): Die Kaufhäufigkeit ist das Verhältnis aus Gesamtanzahl der Bestellungen und Gesamtanzahl der Kundinnen und Kunden. Sie zeigt, wie viele Bestellungen eine Person im Schnitt tätigt.
Churn-Rate: Der Anteil der Kundinnen und Kunden, die nicht erneut bestellen.
Kundenlebensdauer: Der Zeitraum, in dem eine Kundin oder ein Kunde kontinuierlich bestellt.
Repeat-Rate: Das Verhältnis aus der Anzahl der Kundinnen und Kunden mit mehr als einer Bestellung zur Zahl der einzigartigen Kundinnen und Kunden. Beispiel: Wenn du in einem Monat 10 Kundinnen/Kunden hast und 4 davon zurückkommen, beträgt deine Repeat-Rate 40%.
CLTV-Implementierung in Python (mit Formel)
Erforderliche Bibliotheken importieren
Datensatz laden
Lass uns zuerst den benötigten Online-Retail-Datensatz mit der pandas-Funktion read_csv laden. Du kannst die Daten hier herunterladen.
Duplikate entfernen
Manchmal sind Datensätze unaufgeräumt. Duplikate können deine Analyse verzerren. In Python bietet pandas die Funktion drop_duplicates(), die doppelte Einträge entfernt.
Lass uns in die Insights einsteigen
Im gegebenen Datensatz stammen die meisten Kundinnen und Kunden aus dem „United Kingdom“. Du kannst die Daten also auf diese Gruppe filtern.
Die describe()-Funktion in pandas liefert bequeme Übersichtsstatistiken. Sie gibt Anzahl, Mittelwert, Standardabweichung, Minimum, Maximum und Perzentile der Daten zurück.
Hier siehst du, dass manche Bestellmengen negativ sind – das ist nicht plausibel. Also filtern wir Quantity > 0.
Benötigte Spalten filtern
Hier filterst du die relevanten Spalten für die CLTV-Berechnung. Du brauchst fünf Spalten: CustomerID, InvoiceDate, InvoiceNo, Quantity und UnitPrice.
Als Nächstes führst du Folgendes aus:
Spalten umbenennen
CLTV mit folgender Formel berechnen:
1. Durchschnittlichen Bestellwert berechnen
2. Kaufhäufigkeit berechnen
3. Repeat-Rate und Churn-Rate berechnen
4. Gewinnmarge berechnen
Die Gewinnmarge ist eine gängige Profitabilitätskennzahl. Sie zeigt, wie viel Prozent des Umsatzes als Gewinn verbleiben. Nehmen wir an, unser Geschäft erzielt ca. 5% Marge auf den Gesamtumsatz.
5. Customer Lifetime Value berechnen
Vorhersagemodell für CLTV
Lass uns ein CLTV-Vorhersagemodell bauen.
Hier sagst du den CLTV mit einem linearen Regressionsmodell voraus.
Wir nutzen die oben geladenen und gefilterten Daten.
Extrahiere Monat und Jahr aus InvoiceDate.
Die Pivot-Tabelle gruppiert Spalten zu einer zweidimensionalen Ansicht und ermöglicht eine verdichtete, mehrdimensionale Zusammenfassung der Daten.
Jetzt summieren wir die Umsätze über alle Monate.
Features auswählen
Teile die Spalten in Zielvariable (dependent) und Feature-Variablen (independent). Wähle die letzten 6 Monate als Features.
Daten aufteilen
Um die Modellleistung zu beurteilen, ist es sinnvoll, den Datensatz in Trainings- und Testmenge zu teilen.
Wir nutzen train_test_split(). Du übergibst Features, Zielvariable und die Größe des Testsets. Optional sorgt random_state als Seed für Reproduzierbarkeit. Ist random_state None, nutzt der Zufallszahlengenerator np.random – ohne Seed erhältst du bei jedem Split andere Ergebnisse.
Modellentwicklung
Importiere das Modul für lineare Regression und erstelle ein Objekt. Trainiere das Modell mit fit() auf dem Trainingsset und sage mit predict() auf dem Testset voraus.
Wie gut passt das Modell zu den Daten?
Zur Bewertung der Gesamtgüte nutzen wir R-Quadrat. Es beschreibt den durch das Modell erklärten Varianzanteil und liegt zwischen 0 und 1. Je höher, desto besser, da mehr Varianz erklärt wird.
Dieses Modell erreicht ein hohes R-Quadrat (0,96) und passt die Daten sehr gut.
Modellevaluation
Für Regressionsprobleme werden folgende Metriken genutzt (Ritchie Ng):
RMSE ist beliebter als MSE und MAE, weil die Einheit der Zielvariable entspricht und dadurch intuitiver interpretierbar ist.
Vorteile und Nachteile von CLTV
CLTV hilft dir, einen wirksamen Geschäftsplan zu entwickeln und bietet Ansatzpunkte zum Skalieren. Zudem ermöglicht CLTV sinnvolle Kundensegmente, mit denen du die Bedürfnisse verschiedener Gruppen erkennst.
Customer Lifetime Value ist ein Werkzeug, keine Strategie. CLTV identifiziert die profitabelsten Kundinnen und Kunden – wie du daraus Profit schlägst, hängt von deiner Strategie ab. Häufig werden CLTV-Modelle missverstanden oder falsch verwendet. Eine zu starke Fixierung auf CLTV kann Scheuklappen erzeugen: Unternehmen fokussieren sich nur auf die vermeintlich besten Gruppen und wiederholen das Geschäft dort. Es ist jedoch ebenso wichtig, auch andere Kundinnen und Kunden im Blick zu behalten.
Fazit
Glückwunsch, du hast das Ende dieses Tutorials erreicht!
In diesem Tutorial hast du den Customer Lifetime Value im Detail kennengelernt: Definition, Ansätze zur Berechnung, eine Umsetzung in Python von Grund auf, ein Vorhersagemodell sowie die Vor- und Nachteile. Außerdem hast du grundlegende pandas-Konzepte wie groupby und Pivot-Tabellen genutzt, um ausgewählte Spalten und Zeilen zusammenzufassen.
Hoffentlich kannst du das CLTV-Konzept jetzt auf deine eigenen Datensätze anwenden. Danke fürs Lesen!
Wenn du mehr darüber lernen möchtest, Kundendaten in Python zu analysieren, schau dir den DataCamp-Kurs Customer Analytics & A/B Testing in Python an.