Warenkorbanalyse Teil 3: Clusteranalyse und Kundensegmentierung

Publiziert von

Im ersten Teil dieser 3-teiligen Blogserie wurden anhand eines einfachen Beispiels die analytischen Grundlagen zur Warenkorbanalyse gezeigt und im zweiten Teil der Apriori Algorithmus vorgestellt. Die Clusteranalyse ist eine wichtige Erweiterung zu diesen Assoziationsregeln. Dabei werden nicht mehr die einzelnen Produkte in Beziehung gesetzt, sondern ganze Warenkörbe in möglichst homogene Gruppen – sogenannte Cluster – zusammengefasst. Die Clusteranalyse ermöglicht die Beantwortung folgender Fragestellungen: gibt es „typische“ Warenkörbe? Und welche Kundensegmente kaufen diese Warenkorb-Prototypen?

Im folgenden Beitrag wird das Verfahren der Clusteranalyse (Kapitel 1) und dessen Umsetzung in der Statistiksprache R (Kapitel 2) vorgestellt. Den Abschluß (Kapitel 3) bildet ein praktisches Anwendungsbeispiel zur Kundensegmentierung.

1. Das Verfahren der Clusteranalyse

Die Clusteranalyse hat das Ziel, aus vielen einzelnen Elementen homogene Gruppen (Cluster) abzuleiten. In der Warenkorbanalyse bedeutet das, aus den vielen einzelnen Warenkörben einige wenige, aber möglichst homogene Warenkorbcluster zu bilden. Das sind dann die sogenannten Warenkorb-Prototypen, also typische Verbundkäufe, die von vielen Kunden in ähnlicher Form gekauft werden.

Wie funktioniert nun der Clusteralgorithmus? Zuerst bilden alle Warenkörbe nur eine einzige Gruppe. Diese große Gruppe wird geteilt, und es entstehen daraus zwei Gruppen. Dann wird eine der beiden wieder geteilt, und es entstehen daraus drei Gruppen, dann vier, fünf, usw. Man nennt das auch ein divisives Verfahren: es wird so lange „auseinander-dividiert“, bis es nicht mehr geht.

Dabei wird immer so geteilt, dass die beiden Gruppen danach möglichst ähnlich sind. Dazu ein einfaches Beispiel mit 6 Warenkörben:

Sie sehen, die beiden Cluster beinhalten jeweils 3 recht ähnliche Warenkörbe. Man sagt dazu auch, dass die Cluster in sich homogen sind, aber untereinander heterogen: Produkte innerhalb desselben Clusters werden oft gemeinsam gekauft, aber selten mit denen anderer Cluster (Cluster 1 ist ganz eine anderer „Typ“ Warenkorb als Cluster 2). Die „Ähnlichkeit“ der Produkte ergibt sich ausschließlich aus den Kaufhäufigkeiten. In Cluster 2 könnte ebensogut Zucker mit drin sein, auch wenn Zucker inhalltich besser zu Cluster 1 passen würde. Die Clusteranalyse ist ein exploratives Verfahren, das eben auch neue und unvermutetete Zusammenhänge aufdeckt.

In der realen Welt ist die Situation allerdings nicht immer so einfach wie in obigem Beispiel. Es müssen schließlich tausende Warenkörbe analysisrt und zu sinnvollen Gruppen zusammengefasst werden, die Aufgabenstellung ist also ziemlich komplex. Es gibt zwei grundlegende Fragen dabei:

  1. Wie viele Cluster (Warenkorb-Prototypen) sollen gebildet werden?
  2. Aus welchen Produkten bestehen die einzelnen Warenkorb-Prototypen dann?

Technisch gesehen können die beiden Fragen mit grafischen Darstellungen beantwortet werden. Neben diesen technischen Hilfsmitteln spielen aber auch immer inhaltliche Überlegungen eine große Rolle: machen die gebildetenen Warenkorbcluster auch tatsächlich Sinn? Nun aber der Reihe nach …

1.1 Wie viele Cluster (Warenkorb-Prototypen) sollen gebildet werden?

Der Clusteralgorithmus teilt die Warenkörbe immer weiter auf, sodass homogene Gruppen entstehen. Je mehr man aufteilt, desto homogener werden die Gruppen: eine große Gruppe ist bunt durchgemischt, viele kleine Gruppen sind dagegen in sich immer ähnlicher, da sie immer weniger Produkte enthalten:

Andererseits will man nicht zu viele Cluster bilden, es sollen nur einige wenige Warenkorb-Prototypen entstehen. Es muss also ein Trade-Off gemacht werden: so wenig Gruppen wie möglich, aber auch so homogen wie möglich. Um diese Aufgabenstellung zu lösen, wird der sogenannte Silhouette Plot herangezogen, um Warenkörbe dem richtigen Cluster zuordnen zu können.

Der Silhouette Plot

Darin sind die Abstände der einzelnen Warenkörbe von ihrem eigenen Cluster (im Verhältnis zum nächstegelegenen Cluster) dargestellt: negative Werte bedeuten, dass der Warenkob näher zu einem anderen Cluster liegt als zur eigenen Gruppe – das ist schlecht. Es gibt allerdings nie die perfekte Lösung, in der alle Warenkörbe eindeutig einem Cluster zugeordnet werden können. Es sollte aber jene Lösung gewählt werden, in der zumindest die meisten Warenkörbe dem richtigen Cluster zugeordnet werden können. Hier ein Beispiel, in dem aus insgesamt 3.000 Warenkörben sechs Cluster gebildet werden. Darin sind für jeden Cluster die Silhoutetten der einzelnen Warenkörbe dargestelt, und daneben ist jeweils die Anzahl an Warenkörben und der Durchschnitt der Silhouetten angegeben:

Die Silhouette ist „gut“, wenn sie viele positive Werte aufweist, also im rechten Bereich bleibt. Hier ist z.B. Cluster 2 eher schlecht, etwa die Hälfte der Silhouette liegt im negativen Bereich, und auch der Durchschnitt der Silhouetten ist negativ (-0.007). Eine weitere Aufteilung in sieben Cluster bringt allerdings nicht immer die gewünschte Lösung: dann ist Cluster 2 zwar „besser“, aber die anderen Cluster dafür „schlechter“.

Um zu bestimmen, wie viele Cluster die beste Gesamt-Sihouette bieten, ist viel Abwägen nötig.  Neben den Silhouetten spielt auch die Anzahl an Warenkörben in den einzelnen Clustern eine Rolle, es sollten ja möglichst viele Warenkörbe in jedem Cluster sein, damit es ein repräsentativer Warenkorb-Prototyp ist.

1.2 Aus welchen Produkten bestehen die einzelnen Cluster?

In jedem Cluster befinden sich hunderte oder tausende Warenkörbe, die auf einige wenige Produkte „reduziert“ werden müssen. Gesucht sind die „typischen“ Produkte für jedes Cluster, also jene Produkte, die überdurchschnittlich häufig in einem spezifischen Cluster gekauft werden. Dazu vergleicht man, wie oft ein Produkt in dem einen Cluster gekauft wurde mit der relativen Häufigkeit, mit der das Produkt insgesamt gekauft wurde. Für jeden Cluster wird also ein eigenes Balkendagramm erstelt, das sogenannte Clusterprofil.

Das Clusterprofil eines Warenkorb-Prototypen

Hier ist als Beispiel das Profil zu Cluster 1 angeführt. Die Höhe der Balken zeigt an, wie oft die Produkte in diesem Warenkorbcluster gekauft wurden. Die Linie hingegen zeigt an, wie oft das Produkt insgesamt (in allen 3.000 Warenkörben) gekauft wurde. Die für den Cluster typischen Produkte sind die, die häufiger im Cluster als insgesamt gekauft werden, also die, in denen die Balken (weit) über der Linie liegen. Daneben gibt es auch Produkte, die unterrepräsentiert sind (Balken unter der Linie) – die kommen in dem Cluster seltener vor (atypisch) als insgesamt, da sie typisch für andere Cluster sind.

Die Medoide eines Warenkorb-Prototypen

Die Warenkorb-Prototypen werden also durch die Produkte charakterisiert, die typisch für den jeweiligen Cluster sind. Technisch gesprochen sind das die sogenannten „Medoide“ der Clusteranalyse: jene Produkte, die das „Zentrum“ der Warenkörbe bilden. Analog zu den Balkendiagrammen mit dem Clusterprofil ergibt das eine einfache Liste der typischen Produkte für jedem Warenkorb:

  • Warenkorb-Prototyp 1: whole milk, frozen vegetables, rolls/buns, pastry, newspapers
  • Warenkorb-Prototyp 2: root vegetables, other vegetables, …

2. Umsetzung der Clusteranalyse in R

In R gibt es das package cluster, mit der alle möglichen Varianten einer Clusteranalyse durchgeführt werden können. Zuerst muss die sogenannte Unähnlichkeitsmatrix (diss) erstellt werden. Damit wird berechnet, wie „unähnlich“ die einzelnen Warenkörbe sind. Das ist die Basis für den Clusteralgorithmus, da die Zuteilung in Gruppen nach dem Prinzip „ähnliche Warenkörbe in dieselbe Gruppe“ erfolgt. Hier der R-Code angewendet auf den Beispieldatensatz Groceries (aus dem package arules): dissimiliarity erstellt die Unähnlichkeitsmatrix, die Jaccard-Methode wird angegeben, da es sich um dichotome Basisdaten handelt (die Werte 1 / 0 in den Rohdaten stehen für „gekauft“ / „nicht gekauft“).

diss <- dissimilarity(Groceries, method = „Jaccard“)

Jetzt kann damit der eigentliche Clusterlgorithmus ausgeführt werden. Dazu wird mit der Funktion lapply für 1-10 Gruppen eine Liste an Clusterlösungen gespeichert (1 Cluster, 2 Cluster, 3 Cluster, …). Die Gruppierung erfolgt auf Basis der vorab berechneten Unähnlichkeiten (diss) mit  der Funktion pam (partitioning around medoids). Die Warenkörbe werden derart in homogene Gruppen eingeteilt, dass sie möglichst nahe am jeweiligen Medoid sind:

clusteranalyse <- lapply(1:10, function(x) pam(diss, k = x))

Nun kann für jede Clusterlösung der Silhouette Plot erstellt werden. Aufgrund der Silhouette Plots wird die Entscheidung gefällt, wie viele Gruppen gebildet werden sollen:

  • plot(clusteranalyse[[1]])     # 1 Cluster –> schlechte Silhouette
  • plot(clusteranalyse[[2]])    # 2 Cluster –> schlechte Silhouette
  • plot(clusteranalyse[[6]])    # 6 Cluster –> beste Silhouette

Sobald die Clusterlösung mit 6 Gruppen festgelegt ist kann das Clusterprofil für jeden der 6 Cluster dargestellt werden. Die Funktion itemFrequencyPlot beinhaltet dabei die Groceries-Items aus dem jeweiligen Cluster (clustering == 1, 2, …). Die durchgehende Linie im Balkendiagramm wird auf Basis des gesamten Datensatz eingezeichnet (population = Groceries). Außerdem wird noch aus Darstellungsgründen auf jene items eingeschränkt, die mindesten 5% Support aufweisen (support = 0.05):

  1. itemFrequencyPlot(Groceries[clusteranalyse[[6]]$clustering == 1], population = Groceries, support = 0.05)
  2. itemFrequencyPlot(Groceries[clusteranalyse[[6]]$clustering == 2], population = Groceries, support = 0.05)

Zusätzlich zu den Balkendiagrammen mit den Clusterprofilen können auch die  Medoide ausgegeben werden, also die typischen Produkte der einzelnen Cluster:

  1. inspect(Groceries[clusteranalyse[[6]]$medoids[1]])
  2. inspect(Groceries[clusteranalyse[[6]]$medoids[2]])

3. Anwendungsbeispiel zur Kundensegmentierung

Das Clusterverfahren kann als Kundensegmentierung auf Basis der Warenkörbe gedeutet werden. Wir haben in Kapitel 1 und 2 die Warenkorb-Prototypen gebildet, nun steht die Frage im Raum: gibt es entsprechende Kunden-Typen dazu?

Die Datengrundlage dafür bilden die Transaktionen (also die Warenkörbe), die jetzt mit Kundendaten angereichert werden. Kundendaten sind nicht nur im Großhandel und bei Dienstleistern für jede Transaktion verfügbar (aus logistischen und Rechnungslegungsgründen), sondern im gesamten Online-Handel und im klassischen Filial-Einzelhandel in Zusammenhang mit den weit verbreiteten Loyalitätsprogrammen (Bonus-Card o.ä.).

Hier soll eine einfache Analyse in Excel dazu durchgeführt werden. Die Basis dafür bilden die Warenkorb-Prototypen aus Kapitel 1, nehmen wir etwa den Medoid (also das „Zentrum“) zu Prototyp 1:

  • Prototyp 1: whole milk, frozen vegetables, rolls/buns, pastry, newspapers

Nun zu den Kundendaten, als einfaches Beispiel dafür können Alter und Geschlecht dienen. Die Transaktionsdaten (vertikale Form der Warenkörbe, also TransNr & Produkte) müssen zuerst mit den Kundendaten (KundenNr, Alter, Geschlecht) verbunden werden, z.B. über einen SVERWEIS (TransNr, KundenNr). Wir haben dann zu jeder Transaktion das Alter und das Geschlecht des jeweiligen Kunden:

Nun kann einfach ausgewertet werden, welches Geschlechts- und Altersprofil der Warenkorb-Prototyp hat, also welches Kundenprofil hinter dem Cluster steht. Dazu wird eine Liste aller Produkte im Prototyp erstellt (whole milk, frozen vegetables, rolls/buns, pastry, newspapers). Nun wird für jedes dieser Produkt gezählt, wie oft es gekauft wurde, hier die Formeln dazu:

  • Anzahl Frauen, Anzahl Männer, Anzahl gesamt: ZÄHLENWENNS
  • Mittelwert Alter: MITTELWERTWENNS

Daraus ergibt sich nicht nur das Alters- und Geschlechtsprofil für jedes einzelne Produkt im Prototyp 1 sondern auch für den gesamten Warenkorb-Prototyp:

Die letzte Zeile fasst den Warenkorb-Prototyp 1 als gesamtes zusammen: insgesamt haben 1.601 Frauen und 1.406 Männer Produkte darin gekauft (53% Frauen und 47% Männer) und diese Kunden sind im Schnitt 31,0 Jahre alt. Vollzieht man diese Berechnungen zu jedem der sechs Prototypen ergibt sich daraus das Kundenprofil der Warenkorb-Cluster:

Wünschenswert sind möglichst „scharfe“ Profile, wie etwa das zu Prototyp 3 (eindeutig häufiger von Frauen gekauft). Erst dann lässt sich eine klar abgegrenzte Zielgruppe daraus ableiten: dieser Warenkorb beinhaltet Produkte, die in dem typischen Verbund eben typischerweise von Frauen gekauft werden.

Alexander Rabanser

Alexander Rabanser ist Data Scientist bei JAF International Services. Seit seinem Statistikstudium an der Universität Wien hat er viel Erfahrung als Software Entwickler und quantitativer Assetmanager in der Finanzbranche gesammelt und ist Trainer für Statistik und Advanced Analytics. Er ist Co-Autor mehrerer wissenschaftlicher Publikationen und Autor des Linearis Blogs.

Weitere Beiträge

Kategorien: Analyse, Excel als BI Frontend, Power BI im Team nutzen