Wie funktionieren eigentlich Buch- und Filmempfehlungen, die zum Beispiel Amazon seinen Kunden ausspielt?

Diese Empfehlungen werden von Algorithmen erzeugt, den sog. Recommendation Engines, oder auf Deutsch Empfehlungsdiensten.

Im heutigen Beitrag werde ich eine Übersicht über Empfehlungsdienste / Recommendation Engines je nach Use Case vorstellen.

Empfehlungsdienste / Recommendation Engines – Definition

Bei Emfpehlungsdiensten handelt es sich generell um Softwaresysteme, die den Kunden Produkteempfehlungen auf der Basis von Kundenverhalten oder bestimmten Produkteigenschaften aussprechen.

Wir alle erleben alle einige dieser Recommendation Engines in der Praxis. So empfiehlt mir Facebook neue Freunde basierend auf solchen Empfehlungsdiensten. Auch AirBnB nutzt Recommendation Engines, um die User auf neue Urlaubsangebote aufmerksam zu machen. Zalando stellt den Kunden eine Auswahl an Kleidern vor und so weiter.

Auf den ersten Blick schauen diese Algorithmen gleich aus: es werden diverse Produkte ausgespielt. Trotzdem ist das Thema um die Emfehlungsdienste sehr komplex, da diese auf vielen praktischen und mathematischen Überlegungen fußen.

Vom Prinzip unterscheiden wir drei grundlegende Formen von Empfehlungsdiensten, die je nach Use Case zur Anwendung kommen:

1. Knowledge Based Recommendations / Wissensbasiertes Filtern

2. Collaborative Filtering Based Recommendations / Kollaboratives Filtern

3. Content Based Recommendations / Inhaltbasiertes Filtern

Als eine gtrundlegende Basis für ein Recommendation System würde eine Rangliste dienen, die Produkte anhand von einfachen Metriken vorschlägt.

Zum Beispiel würde uns Amazon das am häufigsten gekaufte Buch empfehlen. Dies wäre der sogenannte Rank Based Algorithmus: einfach in der Umsetzung, jedoch nicht sehr zielgenau. In der Praxis würde ein reiner Rank Based Algorithmus jedem Nutzer vermutlich Harry Potter Romane empfehlen, ohne Rücksicht auf individuelle Präferenzen. Ein suboptimales Ergebnis. Aus diesem Grund gibt es fortgeschrittene Methoden der Auswahl, die allerdings häufig den Rank Based Algorithmus zur Grundlage haben.

1. Knowlegde Based Recommendation / Wissenbasiertes Filtern

Das Knwoledge Based Recommendation System basiert grundsätzlich auf dem Rank Based Filter. Es sortiert die Daten allerdings weiter nach verschiedenen zusätzlichen Kriterien. Zum Beispiel kann der Kunde Bücher nach Kategorien filtern.

Es könnte sein, dass die Userin nur Interesse an Sachbücher im Bereich Machine Learning hat. Dann hätte sie die Möglichkeit das Angebot nach diesen Kriterien zu filtern, so dass Kinderromane im Angebot nicht mehr vorkommen.

Der Wissenbasierte Emfehlungsdienst sortiert also die Produkte nach den populärsten Produkten, aber zusätzlich gibt er den Usern, die Möglichkeit die Angebote nach bestimmten Kriterien zu filtern.

Anwendungsbereiche für diesen Dienst sind häufig Dienstleistungsbereiche, wo generell wenig Produkte angeboten werden wie zum Beispiel viele Luxusgüter, Autos oder Immobilien.

Weitere Infos zu diesem System gibt es auch bei Wikipedia.

2. Collaborative Filtering Based Recommendation / Kollaboratives Filtern

Die Algorithmen in diesem Bereich sind um einiges anspruchsvoller. Sie basieren auf der Interaktion zwischen dem User und dem Produkt. Es werden Bewertungen genutzt, die User einem Produkt vergeben, um  anderen Usern Empfehlungen zu machen. Die Methode berücksichtigt zum einen, dass sich die User in ihren Präferenzen ähneln können. Zum anderen aber, dass die User Produkte mögen, die einander ähnlich sind:

collaborative filtering models which are based on assumption that people like things similar to other things they like, and things that are liked by other people with similar taste.“*

*Prince Grover: Various Implementations of Collaborative Filtering

Es gibt zwei Möglichkeiten der Implementierung solcher Empfehlungssysteme: model based collaborative filtering und neighbourhood based collaborative filtering.

I. Model Based Collaborative Filtering

Dieser Algorithmus nutzt Machine Learning um Empfehlungen zu machen. Vom Prinzip versucht er die potenziellen Produktbewertungen der Nutzer vorherzusagen.

II. Neighborhood Based Collaborative Filtering

Neighbourhood based collaborative filtering bassiert auf Korrelationen zwischen den Produkten und Usern, auf deren Basis dann Empfehlungen ausgesprochen werden.

Ein Beispiel: Peter und Paula interessieren sich für ähnliche Bücher zum Thema Machine Learning. Dabei hat Paula noch ein zusätzliches Buch zum Thema Deep Learning mi PyTorch gekauft. Auf dieser Basis geht der Algorithmus davon aus, dass Peter dieses Buch auch gefallen würde und schlägt folglich Peter das Buch vor.

Neighbourhood Based Collaborative Filtering können mit Hilfe zwei verschiedenen Algorithmen implementiert werden werden:

Similarity Based Methods

Die Similarity Based Methods haben als Grundlage Koeffizienten, die Ähnlichkeiten berechnen:

  • Pearson’s correlation coefficient
  • Spearman’s correlation coefficient
  • Kendall’s Tau

Ich werde hier nicht auf die mathematischen Grundlagen eingehen. Vom Prinzip geht es um die Ähnlichkeiten/Korrelationenberechnungen zwischen den einzelnen Usern.

Distance Based Methods

Hier wird die Ähnlichkeit anhand der mathematischen Distanz zwischen den Usern berechnet. Als Messeinheiten dienen hierzu:

  • Euclidean Distance
  • Manhattan Distance

Es geht vom Prinzip darum die kleinste Distanz zwischen den Usern zu finden. Wenn die Werte sich Null nähern, heißt es, dass die User einander ähnlich sind.

Welche Messzahlen benutzt werden sollten, hängt vom jeweiligen Fall ab. Auf diese Problematik gehe ich hier nicht ein.

Die Neighbourhood Based Collaborative Filtering kann auch unterteilt werden in:

  1. User-based collaborative filtering: dieser Typ basiert auf der Bewertung der User nach Ähnlichkeit;
  2. Item-based collaborative filtering:  dieser Typ bewertet die Produkte nach ihrer Ähnlichkeit zueinander (z.B. auf der Basis der Ratings der User für diese Produkte).

Konkretes Beispiel

Paula hat im Onlineshop 10 Bücher aus dem Bereich Machine Learning mit Python gekauft. Peter hat 3 gleiche Bücher wie Paula gekauft. Das Empfehlungssystem könnte jetzt Peter die 7 weiteren Bücher empfehlen, die Paula gekauft hat.

Allerdings könnte es sein, dass Peter diese Bücher bereits gelesen hat. Hier könnten aus diesem Grund weitere Filter eingebaut werden, wie zum Beispiel:

Ein Filter, der Peter erlaubt Bücher wegzusortieren, die ergelesen hat .

Ein Filter, der Bücher zusätzlich nach Ratings sortiert. Bücher, die Paula sehr gut bewertet hat, würden bei den Empfehlungen für Peter weiter oben stehen.

Content Based Recommendation / Inhaltsbasierte Emfpehlungen

Mit der Anwendung von Collaborative Filtering bleiben trotzdem einige Kunden ohne Empfehlungen übrig. Meistens sind es User, die zum Beispiel das erste Mal eine Dienstleistung nutzen und bei denen noch keine Daten bezüglich der Interaktion zur Verfügung stehen. Im Content Based Recommendation System werden nicht die User-User Interaktionen genutzt, sondern nur Ähnlichkeiten zwischen den Produkten.

Dieser Empfehlungsdienst ist auch Shops zu empfehlen, die (noch) nicht soviele Kunden haben.

Zusammenfassung

Die Welt der Empfehlungsdienste ist sehr komplex. Es gibt weitere hybride Methoden, die ich hier nicht weiter beschrieben habe.

Wichtig ist zu erkennen, welche Methoden für die eigenen Kunden am besten funktionieren. Habe ich wenige Produkte, die relativ teuer sind? Dann wäre vermutlich das Knowledge Based Recommendation System optimal.

Habe ich nur wenig Kunden? Dann könnte zusätzlich eventuell Inhaltbasiertes Empfehlungsystem gut funktionieren.

Wichtig ist, dass mein Shop relevante Produkte empfiehlt, die auch neuwertig sind, und das Interesse der Kunden steigern. Deswegen ist es wichtig vielfältige Produkte zu empfehlen.

Der Erfolg des angewandten Recommendation Systems kann mit zusätzlichen A/B Tests überprüft werden.

Mein heutiger Beitrag basiert auf dem Wissen, welches ich mir im Rahmen des Data Science Nanodegree* von Udacity angeeignet habe.

 

 

*Affiliate Link