Erstellen einer Empfehlungs-Engine mithilfe von Graph Machine Learning (GML)
„Empfehlungssysteme sind das ultimative personalisierte Marketing, eine Möglichkeit, Menschen mit den Produkten zu verbinden, die sie am wahrscheinlichsten wollen, und das besser als alle anderen.“
— John Riedl, Professor für Informatik an der University of Minnesota und bekannt als „Vater der Empfehlungssysteme“ .
Empfehlungsmaschinen sind ein wesentlicher Bestandteil moderner Online-Plattformen. Sie helfen Benutzern dabei, Inhalte und Produkte zu finden, die für ihre Interessen relevant sind, und sie können Unternehmen auch dabei helfen, ihren Umsatz und ihr Engagement zu steigern. Eine Möglichkeit, eine Empfehlungs-Engine aufzubauen, ist die Verwendung von graphbasiertem maschinellem Lernen (ML).
In diesem Blogbeitrag diskutieren wir, wie man mit Graph ML eine Empfehlungs-Engine erstellt, einschließlich einer detaillierten Beschreibung des Prozesses und richtig formatierter Codebeispiele.
Graphbasiertes maschinelles Lernen (ML) ist ein leistungsstarker Ansatz zum Aufbau von Empfehlungsmaschinen, da es die umfassende Modellierung der Beziehungen zwischen verschiedenen Elementen und Benutzern ermöglicht. In Graph ML werden Elemente und Benutzer als Knoten dargestellt und die Beziehungen zwischen ihnen werden als Kanten dargestellt. Durch die Analyse der Muster in diesen Beziehungen können wir Empfehlungen für Elemente abgeben, die für einen bestimmten Benutzer wahrscheinlich von Interesse sind.
✨✨Um mehr über Graph ML, seine Algorithmen und wie es besser als der klassische Ansatz des maschinellen Lernens ist, zu erfahren, lesen Sie meinen vorherigen Blog. Klicken Sie hier
Der erste Schritt beim Aufbau einer Empfehlungsmaschine mithilfe von Graph ML ist die Erstellung eines Datendiagramms. Dies kann mithilfe einer Diagrammdatenbank wie Neo4j oder JanusGraph oder durch die speicherinterne Erstellung des Diagramms mithilfe einer Diagrammbibliothek wie NetworkX oder igraph erfolgen. Das Diagramm sollte Knoten für Benutzer und Elemente sowie Kanten enthalten, die die Beziehungen zwischen ihnen darstellen.
Wenn wir beispielsweise eine Empfehlungsmaschine für eine Film-Streaming-Plattform erstellen, würde das Diagramm Knoten für Benutzer, Filme und Schauspieler enthalten, wobei Kanten die Beziehungen zwischen ihnen darstellen (z. B. ein Benutzer hat einen Film gesehen, ein Filmstar usw.). bestimmter Schauspieler).
Sobald das Diagramm erstellt ist, können wir Diagrammalgorithmen verwenden, um die Beziehungen zwischen Elementen und Benutzern zu analysieren. Ein beliebter Algorithmus zur Abgabe von Empfehlungen ist der von Google entwickelte PageRank-Algorithmus. Der PageRank-Algorithmus berechnet die Wichtigkeit jedes Knotens im Diagramm, indem er die Anzahl und Wichtigkeit der mit ihm verbundenen Knoten berücksichtigt. Im Kontext einer Empfehlungsmaschine kann der PageRank-Algorithmus verwendet werden, um Filme oder andere Elemente basierend auf ihrer Beliebtheit oder Relevanz für einen bestimmten Benutzer zu bewerten.
Hier ist ein Beispiel für die Verwendung des PageRank-Algorithmus in Python, um mithilfe von NetworkX Filmempfehlungen für einen bestimmten Benutzer zu geben :
import networkx as nx
# Create a new graph
G = nx.Graph()
# Add nodes for the movies
G.add_nodes_from(["Movie 1", "Movie 2", "Movie 3", "Movie 4"])
# Add edges representing relationships between movies (e.g., similar genres)
G.add_edge("Movie 1", "Movie 2")
G.add_edge("Movie 2", "Movie 3")
G.add_edge("Movie 3", "Movie 4")
# Run the PageRank algorithm
pr = nx.pagerank(G)
# Sort the movies by their PageRank scores
sorted_movies = sorted(pr.items(), key=lambda x: x[1], reverse=True)
# Print the top movie recommendations for the user
for movie, score in sorted_movies[:3]:
print(movie)
Ein weiterer wichtiger Aspekt beim Aufbau einer Empfehlungsmaschine mithilfe von Graph ML ist die Möglichkeit, zusätzliche Funktionen wie Benutzerpräferenzen, Bewertungen und demografische Informationen zu integrieren. Dies kann erreicht werden, indem dem Diagramm zusätzliche Knoten und Kanten hinzugefügt werden und anschließend Diagrammalgorithmen verwendet werden, um die Beziehungen zwischen diesen Features und den empfohlenen Elementen zu analysieren.
Wenn wir beispielsweise Benutzerpräferenzen in unsere Filmempfehlungs-Engine integrieren möchten, können wir für jeden Benutzer einen Knoten hinzufügen und zwischen Benutzern und Filmen Grenzen setzen, die die Filme darstellen, die sie gesehen oder ihnen gefallen haben. Mithilfe von Diagrammalgorithmen können wir diese Beziehungen dann analysieren und Empfehlungen basierend auf den Präferenzen ähnlicher Benutzer abgeben.
Hier ist ein Beispiel dafür, wie Sie mithilfe von NetworkX Benutzereinstellungen in unsere Filmempfehlungs-Engine integrieren:
# Add nodes for the users
G.add_nodes_from(["User 1", "User 2", "User 3"])
# Add edges representing relationships between users and movies (e.g., watched or liked)
G.add_edge("User 1", "Movie 1")
G.add_edge("User 1", "Movie 2")
G.add_edge("User 2", "Movie 2")
G.add_edge("User 2", "Movie 3")
G.add_edge("User 3", "Movie 3")
G.add_edge("User 3", "Movie 4")
# Use a graph algorithm to analyze the relationships between users and movies
# and make recommendations based on the preferences of similar users
similar_users = nx.common_neighbors(G, "User 1", "User 2")
# Print the recommended movies for the user
for movie in similar_users:
print(movie)
Zusätzlich zu den oben genannten Beispielen gibt es verschiedene andere graphbasierte Algorithmen, mit denen Empfehlungen abgegeben werden können. Beispielsweise können die Community-Erkennungsalgorithmen wie Louvain oder Label Propagation verwendet werden, um Communities ähnlicher Artikel oder Benutzer zu erkennen und dann Empfehlungen basierend auf den Artikeln zu geben, die in diesen Communities beliebt sind.
Grundsätzlich gilt: Je mehr Daten Sie haben, desto besser ist die Leistung Ihrer Empfehlungsmaschine. Denn je mehr Daten Sie haben, desto genauer ist Ihr Diagramm und desto effektiver ist Ihr diagrammbasierter Algorithmus.
Bonus
Zusätzlich zum PageRank-Algorithmus und dem Common Neighbors-Algorithmus bietet NetworkX eine Vielzahl weiterer graphbasierter Algorithmen, die zur Abgabe von Empfehlungen verwendet werden können. Einige davon umfassen:
- Kürzester Pfad: Der Kürzeste-Pfad-Algorithmus kann verwendet werden, um den kürzesten Pfad zwischen zwei Knoten in einem Diagramm zu finden. Dies kann nützlich sein, um Empfehlungen basierend auf der Ähnlichkeit von Artikeln oder Benutzern abzugeben. Wenn beispielsweise zwischen zwei Elementen in der Grafik ein kurzer Weg besteht, sind sie wahrscheinlich ähnlich und könnten Benutzern empfohlen werden, die mit einem der Elemente interagiert haben.
- Zwischenzentralität: Der Zwischenzentralitätsalgorithmus misst die Anzahl der kürzesten Pfade, die durch einen bestimmten Knoten verlaufen. Dies kann verwendet werden, um Elemente oder Benutzer zu identifizieren, die für das Diagramm von zentraler Bedeutung sind und das Potenzial haben, gute Empfehlungen abzugeben.
- Closeness Centrality: Der Closeness Centrality-Algorithmus misst den durchschnittlichen Abstand von einem bestimmten Knoten zu allen anderen Knoten im Diagramm. Ähnlich wie die Betweenness-Zentralität kann sie verwendet werden, um Elemente oder Benutzer zu identifizieren, die im Mittelpunkt des Diagramms stehen und das Potenzial haben, gute Empfehlungen abzugeben.
- Eigenvektorzentralität: Der Eigenvektorzentralitätsalgorithmus misst die Wichtigkeit eines Knotens basierend auf der Wichtigkeit der Knoten, mit denen er verbunden ist. Es kann verwendet werden, um Elemente oder Benutzer zu identifizieren, die gut vernetzt sind und das Potenzial haben, gute Empfehlungen abzugeben.
- Community-Erkennung: Community-Erkennungsalgorithmen wie der Louvain- oder Label Propagation-Algorithmus können verwendet werden, um Communities ähnlicher Artikel oder Benutzer zu erkennen und dann Empfehlungen basierend auf den Artikeln zu geben, die in diesen Communities beliebt sind.
- Triadischer Abschluss: Der triadische Abschlussalgorithmus findet die gemeinsamen Nachbarn zwischen zwei Knoten im Diagramm. Der triadische Abschlussalgorithmus kann verwendet werden, um die Ähnlichkeit zwischen Elementen im Diagramm zu identifizieren und Empfehlungen basierend auf Elementen mit gemeinsamen Nachbarn abzugeben.
Zusammenfassend lässt sich sagen, dass graphbasiertes ML ein leistungsstarker Ansatz zum Aufbau von Empfehlungsmaschinen ist. Indem wir die Beziehungen zwischen verschiedenen Elementen und Benutzern in einem Diagramm modellieren, können wir Diagrammalgorithmen verwenden, um die Muster in diesen Beziehungen zu analysieren und Empfehlungen für Elemente abzugeben, die für einen bestimmten Benutzer wahrscheinlich von Interesse sind. Die in diesem Blogbeitrag bereitgestellten Codebeispiele veranschaulichen die Verwendung des PageRank-Algorithmus und die Integration von Benutzereinstellungen in eine Empfehlungs-Engine mithilfe der Python-Bibliothek NetworkX.
Viel Spaß beim Lernen !
Wenn Ihnen der Inhalt gefällt, freuen wir uns über ein Klatschen und folgen Sie mir ✅ für weitere informative Inhalte .

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































