Kategorieübergreifendes Upselling im E-Commerce mit Data Mining

Data Mining E-Commerce

Einleitung

Schaut man sich viele Onlineshops an so fällt auf, dass die Produktvorschläge auf der Produktdetailseite (PDS) oder im Warenkorb häufig aus derselben Kategorie (oder im besseren Fall: vom selben Hersteller) gewählt werden, wie das gerade angezeigte Produkt. Aus Kundensicht ist das mindestens fragwürdig: wenn gerade schon eine Winterjacke im Warenkorb liegt, besteht dann wirklich das Interesse, eine weitere Jacke zu kaufen oder sollten nicht eher Produkte anderer Kategorien, in diesem Fall beispielsweise Handschuhe oder Mützen, vorgeschlagen werden?

In einigen Fällen sind die Vorschläge auch schlicht fest hinterlegt und ändern sich damit nur, wenn der Produktverantwortliche diese anpasst. Inwiefern diese Produkte dann relevant sind und ob Änderungen auf Datenbasis eingepflegt werden oder alleine das Bauchgefühl des Produktverantwortlichen entscheidet ist oft zumindest zu hinterfragen.

Zielsetzung

In diesem Beitrag soll - sozusagen als Einstieg in das Thema 'Data Mining und Machine Learning im E-Commerce' - eine einfache Möglichkeit vorgestellt werden, um Produktvorschläge auf Basis bisheriger Bestellungen dynamischer zu gestalten und damit auch das Interesse der Kunden an Produkten anderer Kategorien zu steigern. Letzteres führt im Idealfall natürlich zu mehr Umsatz und weniger Bestellungen mit nur einem Produkt - was natürlich wieder die Datenbasis verbessern kann. Offensichtlich ist dieser Prozess also ein ewiger Zyklus: neue Bestellungen liefern neue Daten und können dazu führen, dass sich die vorgeschlagenen Kategorien verändern oder in ihrem Rang verschieben. Zudem validieren (oder invalidieren) sich die Vorschläge mit der Zeit selbst: sollten beispielweise ursprünglich Produkte einer Kategorie vorgeschlagen worden sein, die allerdings in letzter Zeit nicht mehr häufig mit der Kategorie des momentan angezeigten Produktes gekauft wurden, so sinkt der Rang der vorgeschlagenen Kategorie und sie fällt möglicherweise ganz aus den Vorschlägen heraus.

Ablauf

Um dieses Ziel zu erreichen werden zwei Methoden kombiniert, die streng genommen aufeinander aufbauen: Frequent-Itemset-Mining und Association-Rule-Mining. Auf beide soll in diesem Abschnitt kurz und vereinfacht eingegangen werden.

Ein sehr ähnliches (wenn nicht sogar deckungsgleiches) Verfahren zu Frequent-Itemset-Mining ist Betriebswirtschaftlern unter dem Begriff Warenkorb-Analyse bekannt. Einfach gesagt geht es hier darum, Mengen (Tupel, Tripel, ...) von Produkten (oder Kategorien) zu finden, die häufig zusammen in einer Bestellung vorkommen. Die Wortwahl "häufig" bezieht sich dabei auf die untere Grenze, ab der die gefundenen Mengen noch Teil des Ergebnisses sind. Diese Grenze wird als 'minimum support' (minimale Unterstützung eines potentiellen Ergebnisses im Datensatz) bezeichnet und ist meist im niedrigen einstelligen Prozentbereich angesiedelt: wenn beispielsweise bei 400.000 Bestellungen eine bestimmte Kategorie-Menge noch 1% Unterstützung im Datensatz hat, dann sind das immer noch 4.000 einzelne Bestellungen - was bei der üblichen Diversität der Bestellungen in Onlineshops durchaus verlässliche Aussagen erlaubt. Der Support-Wert einer gefundenen Menge berechnet sich aus ihrer Auftrittshäufigkeit geteilt durch die Kardinalität des Datensatzes (hier: Anzahl aller Bestellungen).

Die folgenden Tabellen illustrieren diesen Prozessschritt: Tabelle 1 enthält vereinfachte Bestellungen, während Tabelle 2 eine (mögliche) Lösungsmenge angibt.

Bestell-ID Produktkategorien 1 {Jacke, Pullover, Mütze, Schuhe} 2 {Jacke, Handschuhe, Mütze, Schuhe} 3 {Jacke, Hose, Mütze, T-Shirt} 4 {Hose} 5 {Jacke, Handschuhe, Mütze, T-Shirt, Schuhe}

[Tabelle 1: Bestellungen]

Produktkategorien Häufigkeit Support {Jacke} 4 0,8 {Mütze} 4 0,8 {Jacke, Mütze} 4 0,8 {Schuhe} 3 0,6 {Jacke, Schuhe} 3 0,6 {Mütze, Schuhe} 3 0,6 {Jacke, Mütze, Schuhe} 3 0,6 {Hose} 2 0,4 ...

[Tabelle 2: häufige Itemsets]

Ziel des Association-Rule-Mining ist es nun, aus den gefundenen häufigen Itemsets sogenannte Assoziationsregeln abzuleiten, die im Wesentlichen eine Aussage der Form "Wenn A eingetreten ist, dann ist der Eintritt von B mit X% sicher" erlauben. Im E-Commerce soll damit also versucht werden, Fragen wie "Wenn der Kunde eine Jacke und Schuhe im Warenkorb hat, wird er dann möglicherweise auch eine Mütze kaufen? Wenn ja, wie hoch ist die Wahrscheinlichkeit dafür?" zu beantworten.

Relevante Metriken für Assoziationsregeln sind die Unterstützung (Support) der Regel im Datensatz sowie die Wahrscheinlichkeit (Confidence) dieser Regel. Üblicherweise werden die Regeln im Format "Kopf => Rumpf [Unterstützung; Wahrscheinlichkeit]" angegeben.

Betrachtet man die obigen Tabellen, so wäre eine beispielhafte Regel "Jacke => Schuhe". Der Support-Wert ist trivialerweise aus der Vereinigungsmenge "{Jacke, Schuhe}" in Tabelle 2 abzulesen und beträgt 0,6. Die Wahrscheinlichkeit berechnet sich aus dem Support der Vereinigungsmenge geteilt durch den Support des Regel-Kopfes. Letzterer beträgt in diesem Beispiel 0,8; daher liegt die Eintrittswahrscheinlichkeit der Regel bei 0,6 / 0,8 = 0,75 - also 75%. Die gesamte Regel lautet also "Jacke => Schuhe [0,6; 0,75]" und kann gelesen werden als "Wenn ein Kunde eine Jacke kauft, dann wird er mit 75%iger Wahrscheinlichkeit auch Schuhe kaufen". Selbstverständlich sind auch längere Regeln möglich, wie beispielsweise "{Jacke, Mütze} => Schuhe" oder "Jacke => {Mütze, Schuhe}" - beide Beispiele würden vom Algorithmus entdeckt werden.

In der Regel liegen die Confidence Werte auf realen (oder realitätsnahen) Datensätzen deutlich unter den oben genannten Werten. Daher sind Regeln mit ca. 40% Wahrscheinlichkeit meist schon als gut einzuordnen, während Regeln unter 10-20% Wahrscheinlichkeit als Rauschen betrachtet werden können. Die genauen Grenzen sind hierbei allerdings auch immer abhängig vom Kunden und dem vorhandenen Datensatz. Dementsprechend sind die genannten Grenzen lediglich Richtwerte und müssen im Produktiveinsatz abgeklärt und sicherlich auch im Laufe der Zeit verfeinert werden.

Beispielhafter Einsatz

Für sich genommen besitzen die gefundenen Regeln bisher reinen Informationsgehalt. Um sie auch zur Anzeige von Produktvorschlägen automatisch nutzen zu können, können sie in einer Datenbank abgelegt werden. Bei jedem Aufruf einer Produktdetailseite werden abhgängig von der Kategorie des angezeigten Produktes und der Produkte, die sich möglicherweise schon im Warenkorb befinden, die Regeln mit der höchsten Wahrscheinlichkeit geladen. Die Auswahl der Produkte innerhalb des Kategorie-Vorschlags kann dann auf Basis unterschiedlicher Kriterien erfolgen. Sinnvoll ist hier sicherlich die Einschränkung auf Produkte, die einem bestimmten Geschlecht zuzuordnen sind. Aber auch weitere Kriterien, beispielsweise der Verkaufsrang innerhalb der Kategorie, die Marge oder Werbeverträge mit bestimmten Herstellern können Einfluss nehmen. Denkbar ist auch, dass ein Ähnlichkeitsmaß zwischen Produkten unterschiedlicher Kategorien definiert wird (zum Beispiel auf Basis der Farbe, des Herstellers, loseren Einordnungen wie "Sportlich", "Business", "Freizeit"). Der Kreativität sind hier kaum Grenzen gesetzt, einige Ideen stellen allerdings besondere Anforderungen an den Datensatz.

Sollten die Produktvorschläge von einem Produktverantwortlichen manuell angelegt werden, so können die durch das Mining gefundenen Informationen dennoch unterstützend genutzt werden, um vor irrelevante Kategorien in den Vorschlägen zumindest zu warnen oder auf interessantere Kategorien hinzuweisen.

Wie die Auswahl der Produkte am Ende abläuft ist also immer abhängig vom Betreiber des Shops, den verkauften Produkten und wie viele zusätzliche Informationen im Produktbestand gepflegt werden.

Ob die Vorschläge dynamisch abgefragt oder weiter manuell gepflegt werden: wie häufig der gesamte Zyklus aus Frequent-Itemset-Mining, Association-Rule-Mining und Aktualisieren der Regeln in der Datenbank abläuft hängt vom Bestellvolumen ab: bei nur wenigen Bestellungen am Tag müssen die Regeln nicht stündlich oder täglich aktualisiert werden. Bei hohem Volumen bietet sich zumindest eine tägliche Aktualisierung an, um Kategorievorschläge schneller validieren beziehungsweise invalidieren zu können.

Einschränkungen

Während das vorgestellte Verfahren grundsätzlich nicht kompliziert ist, hängt die Möglichkeit eines Einsatzes immer von der Datenbasis ab. Liegen kaum Bestellungen mit mehr als einem Produkt oder mehr als einer Kategorie pro Bestellung vor erschwert das den Einsatz erheblich oder macht ihn unmöglich. Denkbar wäre in solchen Fällen, dass alle Bestellungen pro Kunde zusammengefasst werden, was allerdings wieder andere Probleme mit sich bringen kann. Wie einfach und zügig eine Implementierung vonstatten gehen kann ist zudem grundsätzlich abhängig von der Datenbasis: wenn Produkte zu sehr vielen unterschiedlichen Kategorien gehören, keine "Hauptkategorie" oder einen Produkttyp besitzen, dann muss unter Umständen sehr viel Zeit investiert werden, um einen Datensatz so zu verändern, dass sinnvoll mit ihm gearbeitet werden kann.

Für beide Probleme empfiehlt sich eine explorative Datenanalyse um herauszufinden, ob ein Einsatz unter der Berücksichtigung der Anforderungen sinnvoll ist.

Demo Code

Um das Verhalten nachzuvollziehen wurde für diesen Artikel Demo Code erstellt und auf Github veröffentlicht, siehehttps://github.com/mothership-gmbh/x-category-upsale-poc

Fazit

Assoziationsregeln werden üblicherweise auch im stationären Handel (Supermärkte o.ä.) angewandt, um Produktgruppen räumlich näher zueinander zu positionieren, das Einkaufserlebnis des Kunden zu vereinfachen und damit den Umsatz zu steigern. Alle drei genannten Punkte sind gleichermaßen im E-Commerce relevant, werden aber häufig aus Gründen der vermeintlichen Komplexität oder des zu hohen manuellen Aufwands vernachlässigt werden.

Das hier vorgestellte Verfahren eignet sich, um zügig ersten Nutzen aus der eigenen Datenbasis zu ziehen, ohne auf ausgefeiltere (und teurere) Machine oder Deep Learning Lösungen zurückgreifen zu müssen. Eine Erfolgsgarantie gibt es, wie bereits angesprochen, natürlich nicht. Auch wie die Kunden auf dynamischere Vorschläge reagieren kann nur durch Ausprobieren (zum Beispiel mit A-B Tests) herausgefunden werden. Dadurch, dass dieses Verfahren im Vergleich zu anderen Methoden einfacher zu implementieren ist, kann sich eine (zumindest testweise) Implementierung trotzdem lohnen.

Du willst bei uns mitmachen?
Zu den Stellen