Was wird zusammen gekauft?
Die Warenkorbanalyse sucht in Kassenzetteln nach Artikeln, die oft zusammen im Einkaufswagen liegen. Ein Markt nutzt das, um Regale zu ordnen und Angebote zu planen.
Ein Kassenzettel mit Brot, Butter und Milch ist ein Warenkorb. Aus tausenden solcher Zettel lässt sich ein Muster lesen, ohne dass jemand es vorher vermutet hat.
Am Ende dieser Lektion
Notiz
Ich kann Artikel finden, die in Warenkörben häufig zusammen vorkommen.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Warenkorb | alle Artikel eines einzigen Einkaufs | |
| Itemset | eine Menge von Artikeln, die zusammen vorkommen | Brot und Butter |
| Support | der Anteil der Warenkörbe, die ein Itemset enthalten | |
| Mindest-Support | die Grenze, ab der ein Itemset als häufig gilt | |
| Data Mining | das Suchen nach Mustern in großen Datenmengen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Der Support zählt Warenkörbe, nicht Artikel
Ein Itemset ist eine Menge von Artikeln, etwa Brot und Butter. Der Support eines Itemsets ist der Anteil der Warenkörbe, in denen alle diese Artikel liegen.
Von vier Körben enthalten zwei Brot und Milch. Der Support von Brot und Milch ist also 2 von 4, das sind 0,5 oder 50 Prozent.
Beispiel: Support in vier Warenkörben
| Warenkorb | Inhalt | Enthält Brot und Milch? |
|---|---|---|
| 1 | Brot, Butter | Nein |
| 2 | Brot, Milch | Ja |
| 3 | Brot, Butter, Milch | Ja |
| 4 | Milch | Nein |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Zählen Sie die Körbe mit beiden Artikeln
Der folgende Befehl zählt dieselben vier Körbe im Lab. Er läuft im Container mit Python und gibt eine einzige Zahl aus: die Anzahl der Körbe mit Brot und Milch, hier 2.
Körbe mit Brot und Milch zählen
docker exec jupyter python3 -c "print(sum(1 for k in [['Brot','Butter'],['Brot','Milch'],['Brot','Butter','Milch'],['Milch']] if 'Brot' in k and 'Milch' in k))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein Warenkorb liefert jedes Paar seiner Artikel
Um häufige Paare zu finden, bildet man aus jedem Warenkorb alle Paare seiner Artikel und zählt sie. Ein Korb mit drei Artikeln liefert drei Paare, einer mit vier Artikeln sechs.
Jedes Paar wird einmal pro Korb gezählt. Die Reihenfolge im Korb spielt keine Rolle: Brot mit Milch ist dasselbe Paar wie Milch mit Brot.
Paare in vier Körben zählen
# Vier Kassenzettel. Jede Liste ist ein Warenkorb.
koerbe = [["Brot", "Butter"], ["Brot", "Milch"], ["Brot", "Butter", "Milch"], ["Milch"]]
zaehlung = {}
for korb in koerbe:
for i in range(len(korb)):
for j in range(i + 1, len(korb)):
paar = korb[i] + "+" + korb[j]
if paar in zaehlung:
zaehlung[paar] = zaehlung[paar] + 1
else:
zaehlung[paar] = 1
print(zaehlung)
# Ändern Sie den dritten Warenkorb in ["Brot", "Butter", "Milch", "Eier"].
# Wie viele verschiedene Paare gibt es dann?
Ein häufiger Fehler
Warnung
Viele zählen, wie oft ein Artikel verkauft wurde, statt in wie vielen Körben er liegt. Der Support zählt Körbe. Zwei Packungen Milch in einem Korb erhöhen ihn nur um 1, denn die Frage lautet: Kam der Artikel in diesem Einkauf vor, ja oder nein?
Ein Mindest-Support schneidet die Liste ab
In echten Daten gibt es Millionen von Paaren, und die meisten kommen nur einmal vor. Man legt deshalb einen Mindest-Support fest und behält nur Paare darüber.
Dahinter steht eine einfache Regel: Ein Paar kann nur häufig sein, wenn jeder seiner Artikel schon einzeln häufig ist. Seltene Artikel darf man sofort ausschließen.