Data Engineering an kaia.swiss brand

Arbeitsblatt: Scotland Trading

Whisky-Empfehlungssystem mit One-Hot Encoding & Embeddings

von Claudio Reif

📋

Aufgabenstellung

Scotland Trading verfügt über ein Sortiment von 100 Whiskys. Der Kunde stellt auf dem Web-Shop eine Suchanfrage:

"

Ich möchte einen Whisky mit Zimt und Vanille.

"

Whisky-Daten

🥃

Lagavulin 16

Rauch Torf Meersalz
🥃

Glenfiddich 12

Birne Vanille Eiche
🥃

Balvenie 14

Honig Zimt Vanille
1

One-Hot Encoding

Prinzip:

Jede Kategorie wird durch einen binären Vektor repräsentiert, bei dem genau eine Position den Wert 1 hat, alle anderen den Wert 0.

Aufgabe: Kodiere die Whiskys als One-Hot Vektor

Aromen-Dimensionen:
[0] Rauch [1] Torf [2] Meer [3] Birne [4] Vanille [5] Eiche [6] Honig [7] Zimt
Lagavulin 16: [ 1, 1, 1, 0, 0, 0, 0, 0 ] gegeben
Glenfiddich 12: [ 0, 0, 0, 1, 1, 1, 0, 0 ]
Balvenie 14: [ 0, 0, 0, 0, 1, 0, 1, 1 ]
Kundensuche: [ 0, 0, 0, 0, 1, 0, 0, 1 ]

Aufgabe: Ähnlichkeitsberechnung (Cosine Similarity)

Cosine Similarity = (A · B) / (||A|| × ||B||)

Lagavulin 16 vs. Kundensuche

Kundensuche:
[0, 0, 0, 0, 1, 0, 0, 1]
Lagavulin:
[1, 1, 1, 0, 0, 0, 0, 0]
Multiplikation:
[0, 0, 0, 0, 0, 0, 0, 0] = 0

||Kundensuche|| = √(1² + 1²) = √2 ≈ 1.414

||Lagavulin|| = √(1² + 1² + 1²) = √3 ≈ 1.732

Cosine Similarity = 0 / (1.414 × 1.732) = 0.00

Glenfiddich 12 vs. Kundensuche

Kundensuche:
[0, 0, 0, 0, 1, 0, 0, 1]
Glenfiddich:
[0, 0, 0, 1, 1, 1, 0, 0]
Multiplikation:
[0, 0, 0, 0, 1, 0, 0, 0] = 1

||Glenfiddich|| = √(1² + 1² + 1²) = √3 ≈ 1.732

Cosine Similarity = 1 / (1.414 × 1.732) = 1 / 2.449 ≈ 0.41

Balvenie 14 vs. Kundensuche

Kundensuche:
[0, 0, 0, 0, 1, 0, 0, 1]
Balvenie:
[0, 0, 0, 0, 1, 0, 1, 1]
Multiplikation:
[0, 0, 0, 0, 1, 0, 0, 1] = 2

||Balvenie|| = √(1² + 1² + 1²) = √3 ≈ 1.732

Cosine Similarity = 2 / (1.414 × 1.732) = 2 / 2.449 ≈ 0.82

Lösung One-Hot Encoding

Lagavulin vs. Suche: Übereinstimmungen: 0 Score: 0.00
Glenfiddich vs. Suche: Übereinstimmungen: 1 Score: 0.41
Balvenie vs. Suche: Übereinstimmungen: 2 Score: 0.82
Empfehlung: Balvenie 14
Score (Cosine Similarity): 0.82
2

Embeddings

Prinzip:

Kategorien werden auf numerische Vektoren abgebildet, die semantische Nähe repräsentieren. Dimensionen: [Fruchtig, Würzig, Rauchig]

Gegebene Embedding-Vektoren

Rauch[0.1, 0.2, 0.9]
Torf[0.1, 0.1, 0.8]
Meersalz[0.0, 0.3, 0.7]
Birne[0.9, 0.1, 0.0]
Eiche[0.2, 0.6, 0.3]
Honig[0.7, 0.6, 0.0]
Zimt[0.4, 0.9, 0.1]
Vanille[0.3, 0.8, 0.1]

Aufgabe: Berechne den Mittelwert-Vektor der drei Whiskys

Lagavulin 16 (Rauch, Torf, Meersalz)

Rauch: [0.1, 0.2, 0.9]

Torf: [0.1, 0.1, 0.8]

Meersalz: [0.0, 0.3, 0.7]

Fruchtig: (0.1 + 0.1 + 0.0) / 3 = 0.067

Würzig: (0.2 + 0.1 + 0.3) / 3 = 0.200

Rauchig: (0.9 + 0.8 + 0.7) / 3 = 0.800

Mittelwert: [0.067, 0.200, 0.800]

Glenfiddich 12 (Birne, Vanille, Eiche)

Birne: [0.9, 0.1, 0.0]

Vanille: [0.3, 0.8, 0.1]

Eiche: [0.2, 0.6, 0.3]

Fruchtig: (0.9 + 0.3 + 0.2) / 3 = 0.467

Würzig: (0.1 + 0.8 + 0.6) / 3 = 0.500

Rauchig: (0.0 + 0.1 + 0.3) / 3 = 0.133

Mittelwert: [0.467, 0.500, 0.133]

Balvenie 14 (Honig, Zimt, Vanille)

Honig: [0.7, 0.6, 0.0]

Zimt: [0.4, 0.9, 0.1]

Vanille: [0.3, 0.8, 0.1]

Fruchtig: (0.7 + 0.4 + 0.3) / 3 = 0.467

Würzig: (0.6 + 0.9 + 0.8) / 3 = 0.767

Rauchig: (0.0 + 0.1 + 0.1) / 3 = 0.067

Mittelwert: [0.467, 0.767, 0.067]

Aufgabe: Welcher Whisky ist am ähnlichsten zur Suche?

Lagavulin 16

Whisky: [0.067, 0.200, 0.800] | Suche: [0.35, 0.85, 0.10]

A · B = (0.067×0.35) + (0.200×0.85) + (0.800×0.10) = 0.273

||A|| = 0.827 | ||B|| = 0.925

Score = 0.273 / (0.827 × 0.925) = 0.36

Glenfiddich 12

Whisky: [0.467, 0.500, 0.133] | Suche: [0.35, 0.85, 0.10]

A · B = (0.467×0.35) + (0.500×0.85) + (0.133×0.10) = 0.602

||A|| = 0.697 | ||B|| = 0.925

Score = 0.602 / (0.697 × 0.925) = 0.93

Balvenie 14

Whisky: [0.467, 0.767, 0.067] | Suche: [0.35, 0.85, 0.10]

A · B = (0.467×0.35) + (0.767×0.85) + (0.067×0.10) = 0.822

||A|| = 0.900 | ||B|| = 0.925

Score = 0.822 / (0.900 × 0.925) = 0.99

Lösung Embeddings

Lagavulin: Mittelwert: [0.07, 0.20, 0.80] Score: 0.36
Glenfiddich: Mittelwert: [0.47, 0.50, 0.13] Score: 0.93
Balvenie: Mittelwert: [0.47, 0.77, 0.07] Score: 0.99
Empfehlung: Balvenie 14
Score (Cosine Similarity): 0.99
3

Fazit: Vergleich der Methoden

One-Hot Encoding

✓ Vorteile

  • Einfach zu verstehen und zu implementieren
  • Keine ordinale Beziehung
  • Exakte Matches möglich
  • Interpretierbar

✗ Nachteile

  • Hohe Dimensionalität bei vielen Kategorien
  • Keine semantische Information
  • Sparse Vektoren (ineffizient)
  • Fixe Kategorien

Wann einsetzen?

< 100 Kategorien, eindeutig abgegrenzt, Interpretierbarkeit wichtig

Embeddings

✓ Vorteile

  • Kompakt (50-300 Dimensionen)
  • Semantische Information enthalten
  • Transfer Learning möglich
  • Keine verschwendeten Dimensionen

✗ Nachteile

  • Weniger interpretierbar
  • Training erforderlich
  • Rechenaufwändiger
  • Qualität abhängig von Trainingsdaten

Wann einsetzen?

> 100 Kategorien, semantische Beziehungen wichtig, Freitext/NLP

Ergebnis dieses Beispiels

Methode Empfehlung Score
One-Hot Encoding Balvenie 14 0.82
Embeddings Balvenie 14 0.99

Beide Methoden empfehlen Balvenie 14, da dieser Whisky sowohl Zimt als auch Vanille enthält. Der höhere Score bei Embeddings (0.99 vs. 0.82) zeigt, dass diese Methode die semantische Ähnlichkeit (beide Aromen sind "würzig") besser erfasst.