Kaufrausch durch Data Science?

Data Science zieht sich durch unseren gesamten Alltag. Kann Data Science auch unser Kaufverhalten beeinflussen?

Warenkorbanalysen versuchen seit längerem ein einmaliges Einkaufserlebnis abgestimmt auf die Kund/inn/en im E-Commerce zu bieten. Dass durch Mathematik und Statistik relevante Informationen für die Händler/innen erschaffen werden können, ist meist aber nur als Privileg für große Portale bekannt. Das übergeordnete Ziel der Warenkorbanalyse ist es, verdeckte Zusammenhänge von historischen Käufen zu finden und damit die Gewinne und Wettbewerbsfähigkeit der Unternehmen zu steigern. Nachfolgend wird mittels der meist sowieso gespeicherten Daten, der Vorgang der Warenkorbanalysen beim on- und offline Handel beschrieben und eine Analyse mit Python erstellt (das Jupyter-Notebook findet ihr unter https://github.com/datanautsat/Blog)

Als Basisdaten für eine Warenkorbanalyse werden die Transaktionsdaten eines Kaufes benötigt. Damit sind also die einzelnen Produkte gemeint, die Unterteilung erfolgt dabei pro Kauf. Damit sollen dann Assoziationen geschaffen werden. Wenn beispielsweise jemand eine Zahnbürste im Warenkorb hat, wird diese Person wahrscheinlich auch Zahnpasta hinzufügen. Dabei liegt der Fokus also auf ergänzende Produkte zum Ausgangsprodukt. Für Data Mining im Bereich der Warenkorbanalyse wird oft auf dem Apriori-Algorithmus zurückgegriffen. Für den Apriori-Algorithmus gibt es drei relevante Kennzahlen: Support, Konfidenz und Lift. Zunächst eine Erklärung dieser drei Werte.
Der Support gibt den prozentuellen Wert an, wie oft ein Produkt auf Basis aller Käufe gekauft wird. Da man in diesem Anwendungsfall aber von zusammenhängenden Käufen ausgeht, möchte man in diesem Fall die Wahrscheinlichkeit, dass Zahnbürste und Zahnpasta zusammen gekauft werden, bestimmen. Je höher dieser Wert ist, desto öfter werden diese Produkte zusammen gekauft.

Die Konfidenz gibt die Kaufwahrscheinlichkeit des zweiten Produktes an, wenn das erste Produkt gegeben ist. In diesem Fall also mit welcher Wahrscheinlichkeit beim Kauf einer Zahnbürste auch eine Zahnpasta gekauft wird. Je höher die Wahrscheinlichkeit ist, desto eher werden die beiden Produkte zusammen erworben.

Der Lift gibt den Auswirkungsgrad des Kaufes vom Folgeprodukt zum Basisprodukt an. Ein Wert, der größer als 1 (> 100%) ist, gibt an, dass ein positiver Zusammenhang besteht. Erhält man einen Lift von 1,5, bedeutet das, dass der Kauf vom Basisprodukt die Wahrscheinlichkeit des Kaufes des Folgeproduktes um 50% erhöht. Bei Werten unter 1 (< 100%) besagt dies z.B. bei 0,5, dass der Kauf des Folgeproduktes um 50% weniger wahrscheinlich ist.

Praktisches Beispiel

Als Basis werden die Daten einer Bäckerei herangezogen. Diese sind unter https://www.kaggle.com/sulmansarwar/transactions-from-a-bakery aufrufbar. Das Datenset besteht aus vier Spalten. Diese sind das Datum, die Uhrzeit der Transaktion, die Transaktion (ID) und das Produkt. Mittels dieses Datensatzes werden nun in Python Abhängigkeiten der Produkte ermittelt.

Folgende Bibliotheken sind dafür zu importieren.

  • import pandas as pd

  • import seaborn as sns

  • import matplotlib.pyplot as plt

  • from mlxtend.preprocessing import TransactionEncoder

  • from mlxtend.frequentpatterns import associationrules, apriori

Zuerst muss dafür das Datenset importiert werden. Dafür wird die Python-Bibliothek Pandas verwendet. Außerdem werden leere Produkte verworfen, damit wird die Datenqualität gesteigert.

df = pd.readcsv('./BreadBasketDMS.csv')

df.drop(df[df['Item']=='NONE'].index, inplace=True)

Nun folgt eine Schleife, welche alle Produkte einer Transaktion zusammenfügt. Pro Transaktion kennt man anschließend also alle gekauften Waren.

transaction_list = []

for i in df['Transaction'].unique():

    tlist = list(set(df[df['Transaction']==i]['Item']))

    if len(tlist)>0:

        transaction_list.append(tlist)

Anschließend folgt noch eine Transformation der Daten, sodass alle Produkte encodiert sind und damit mit true und false betitelt werden können, da die darauffolgende apriori-Funktion nur mit true/false bzw. 0/1 arbeiten kann.

te = TransactionEncoder()

teary = te.fit(transactionlist).transform(transaction_list)

dfary = pd.DataFrame(teary, columns=te.columns_)

Danach kann dieser DataFrame bereits an die apriori-Funktion übergeben werden. Der minimale Supportwert wird auf 0,01 festgelegt.

frequentitemsets = apriori(dfary, minsupport=0.01, usecolnames=True)

Die Elemente werden nochmals gefiltert, um nur Elemente mit einem Lift-Wert von über 1 im DataFrame zu haben.

rules = associationrules(frequentitemsets, metric='lift', min_threshold=1.0)

Zuletzt werden noch die benötigten Spalten gefiltert, um anschließend die Assoziationen nach dem Lift-Wert absteigend zu sortieren und auszugeben. „Antecedents“ sind als Basisprodukte zu betrachten und die “Consequents” als Folgeprodukte.

result = rules[['antecedents', 'consequents', 'support', 'confidence', 'lift']]

result.sort_values('lift', ascending=False)

Die vier größten Zusammenhänge sind nachfolgend aufgelistet:

Danach kann man die Assoziationen auch gut mit einer Heat-Map darstellen.

rules['antecedents_'] = rules['antecedents'].apply(lambda a: ','.join(list(a)))

rules['consequents_'] = rules['consequents'].apply(lambda a: ','.join(list(a)))

# Transform the DataFrame of rules into a matrix using the lift metric

pivot = rules.pivot(index = 'antecedents_',

                    columns = 'consequents_', values= 'lift')

# Generate a heatmap with annotations on and the colorbar off

sns.heatmap(pivot, annot = True)

plt.yticks(rotation=0)

plt.xticks(rotation=90)

plt.show()

Je heller auf dieser Heat-Map ein Feld ist, desto stärker ist die Assoziation.

So kurz kann eine Warenkorbanalyse sein. Die Anwendung davon kann nochmals in einer Dash-Applikation dargestellt werden. Auf die Erstellung wird in diesem Blog-Post aber nicht näher eingegangen.
In dieser Webanwendung sind anhand der Selektion eines Produktes zusammenhängende Produkte in einem Säulendiagramm erkennbar. Unterhalb erhält man nochmals einen Überblick über die gesamten ermittelten Zusammenhänge, die auch in der Heat-Map dargestellt sind.

Damit ist das Ergebnis interaktiv nochmals analysierbar. Rückschlüsse können davon seitens der Bäckerei gezogen, wodurch sich mögliche Chancen ergeben. Weiters gibt es die Möglichkeit, diese Assoziationen in E-Commerce Plattformen zu nutzen.

Welche Chancen ergeben sich durch Warenkorbanalysen?

Es steht außer Frage, dass die Händler/innen auf lange Sicht mit Warenkorbanalysen eine Umsatzsteigerung erzielen möchte. Es gibt konkrete Aspekte, die mit Warenkorbanalysen erreicht werden können, um gezielt und kund/inn/enorientiert Waren anzubieten.

  • Up-Selling: Anstatt des von den Kund/inn/en gewünschten Produktes wird ein teureres/hochwertigeres Produkt angeboten.

  • Cross-Selling: Zusatzprodukte werden zum Ausgangsprodukt angeboten, die ebenfalls für die Kund/inn/en relevant sein können, damit sollen mehr Produkte verkauft werden.

  • After-Selling: Erst nach dem Kauf werden relevante Folgeprodukte vorgeschlagen.

  • Bestseller: Häufig verkaufte Produkte können identifiziert werden und damit kann auch dieser Aspekt in die Planung beim Einkauf oder der Bestellung einfließen.

  • Ladenhüter vermeiden: Die Erkennung von wenig verkauften Produkten wird durch die Warenkorbanalyse ermöglicht und es können spezielle Maßnahmen gesetzt werden.

  • Preis: Besteht eine Verbindung beim Kauf von zwei Produkten, reicht oftmals ein Rabatt auf ein Produkt aus, um so mehr Verkäufe von beiden Produkten zu erzielen.

  • Produktplatzierung: Durch die Warenkorbanalysen können im E-Commerce - aber auch im realen Handel - bessere Produktplatzierungen von zusammenhängenden Produkten gemacht werden.

  • Steigerung von Kund/inn/enbindung und -zufriedenheit: Die Kund/inn/en fühlen sich durch Warenkorbanalysen verstanden. Dadurch wird eine Steigerung der Kund/inn/enzufriedenheit erreicht, die wiederum einen Wiedereinkauf wahrscheinlicher macht.

Fazit

Durch Warenkorbanalysen kann auf lange Sicht die Wirtschaftlichkeit des Unternehmens verbessert werden. Mit geschicktem Einsatze von Data Mining Methoden können die Kund/inn/enwünsche besser verstanden und verwendet werden, um die Zufriedenheit langfristig zu stärken.

Beatrice Steiner ist Studentin im Bachelor-Studiengang Data Science and Business Analytics an der FH St. Pölten.