Ereignisse für Empfehlungen auswerten

Zusammenfassung: Die Funktion „EventMiner“ in Lucidworks Fusion kann zur Auswertung von Ereignisprotokollen verwendet werden, um Empfehlungen zu erstellen. Wir beschreiben,…

Zusammenfassung: Die FunktionEventMiner“ in Lucidworks Fusion kann zur Auswertung von Ereignisprotokollen verwendet werden, um Empfehlungen zu erstellen. Wir beschreiben, wie das System die Graphnavigation nutzt, um vielfältige und hochwertige Empfehlungen zu generieren.

Benutzer-Ereignisse

Die Protokolldateien, die die meisten Webdienste erzeugen, sind eine reichhaltige Datenquelle, um etwas über das Benutzerverhalten zu erfahren und das Systemverhalten auf dieser Grundlage zu ändern. So protokollieren beispielsweise die meisten Suchmaschinen automatisch Details zu Benutzeranfragen und den daraus resultierenden angeklickten Dokumenten (URLs).

Wir können einen Datensatz (Benutzer, Abfrage, Klick, Zeit) definieren, der ein eindeutiges„Ereignis“ aufzeichnet, das zu einem bestimmten Zeitpunkt im System aufgetreten ist. Andere Beispiele für Ereignisdaten sind E-Commerce-Transaktionen (z.B. „In den Warenkorb“, „Kauf“), Anrufdatensätze, finanzielle Transaktionen usw.

Durch die Analyse einer großen Menge dieser Ereignisse können wir implizite Strukturen in den Daten „aufdecken“ (z.B. Beziehungen zwischen Nutzern, Suchanfragen und Dokumenten) und diese Informationen nutzen, um Empfehlungen auszusprechen, die Qualität der Suchergebnisse zu verbessern und Analysen für Geschäftsinhaber durchzuführen.

In diesem Artikel beschreiben wir die Schritte, die wir unternehmen, um diese Funktionalität zu unterstützen.

1. Ereignisse in Sitzungen gruppieren

Ereignisprotokolle können als eine Form von„Zeitseriendaten“ betrachtet werden, bei denen die protokollierten Ereignisse in zeitlicher Reihenfolge vorliegen. Wir können uns dann die Beobachtung zunutze machen, dass Ereignisse, die zeitlich nah beieinander liegen, enger miteinander verbunden sind als Ereignisse, die weiter auseinander liegen. Zu diesem Zweck müssen wir die Ereignisdaten in Sitzungen gruppieren.

Eine Sitzung ist ein Zeitfenster für alle Ereignisse, die von einer bestimmten Quelle erzeugt werden (wie eine eindeutige Benutzer-ID). Wenn zwei oder mehr Suchanfragen (z.B. „Klimawandel“ und „Anstieg des Meeresspiegels“) häufig gemeinsam in einer Suchanfrage vorkommen, können wir davon ausgehen, dass diese beiden Suchanfragen miteinander verbunden sind. Das Gleiche gilt für Dokumente, die häufig gemeinsam angeklickt werden.

Eine Operationzur „Sitzungsrekonstruktion“ identifiziert die Sitzungen der Benutzer, indem sie rohe Ereignisprotokolle verarbeitet und sie auf der Grundlage der Benutzer-IDs gruppiert, wobei die Zeitintervalle zwischen den einzelnen Ereignissen verwendet werden. Wenn zwei Ereignisse, die von demselben Benutzer ausgelöst wurden, zeitlich zu weit auseinander liegen, werden sie als von zwei verschiedenen Sitzungen stammend behandelt.

Damit dies möglich ist, benötigen wir eine Art eindeutige ID in den rohen Ereignisdaten, anhand derer wir erkennen können, dass zwei oder mehr Ereignisse miteinander verbunden sind, weil sie innerhalb eines bestimmten Zeitraums von demselben Benutzer ausgelöst wurden. Aus Sicht des Datenschutzes brauchen wir jedoch keine ID, die eine reale Person mit all ihren persönlichen Informationen identifiziert. Alles, was wir brauchen, ist eine (undurchsichtige) eindeutige ID, mit der wir einen „Akteur“ im System verfolgen können.

2. Generierung einer Co-Occurrence Matrix aus den Sitzungsdaten

Wir sind an Entitäten interessiert, die häufig gemeinsam auftreten, da wir dann auf eine Art gegenseitige Abhängigkeit zwischen diesen Entitäten schließen können.

Ein Klick-Ereignis kann z.B. mit einem click(user, query, document) Tupel beschrieben werden, und wir assoziieren jede dieser Entitäten miteinander und mit anderen ähnlichen Ereignissen innerhalb einer Sitzung. Ein wichtiger Punkt dabei ist, dass wir die Co-Occurrence-Beziehungen nicht nur zwischen denselben Feldtypen generieren, z.B. (Abfrage, Abfrage)-Paare, sondern auch „feldübergreifende“ Beziehungen, z.B. (Abfrage, Dokument), (Dokument, Benutzer)-Paare usw.

Auf diese Weise erhalten wir eine N x N-Koinzidenzmatrix, wobei N = alle eindeutigen Instanzen der Feldtypen, für die wir Koinzidenzbeziehungen berechnen möchten.

Abbildung 1 unten zeigt eine Koinzidenzmatrix, die kodiert, wie oft verschiedene Zeichen im Roman „Les Miserables“ gemeinsam auftreten.

Jede farbige Zelle steht für zwei Zeichen, die im selben Kapitel vorkommen; dunklere Zellen zeigen Zeichen an, die häufiger vorkommen. Die diagonale Linie, die von oben links nach unten rechts verläuft, zeigt, dass jede Figur mit sich selbst zusammen auftritt. Sie können auch sehen, dass die Figur „Valjean“, der Protagonist des Romans, mit fast jeder anderen Figur des Buches zusammen auftritt.

Les-Miserables-Ko-Ereignis

Abbildung 1.„Les Miserables“ Co-occurrence Matrix von Mike Bostock.

In Fusion generieren wir eine ähnliche Art von Matrix, bei der jedes der Elemente einer der bei der Konfiguration des Systems angegebenen Typen ist. Der Wert in jeder Zelle ist dann die Häufigkeit des gemeinsamen Auftretens für zwei beliebige Elemente, z.B. ein (Abfrage, Dokument) Paar, ein (Abfrage, Abfrage) Paar, ein (Benutzer, Abfrage) Paar usw.

Wenn z.B. die Abfrage „Les Mis“ und ein Klick auf die Webseite des Musicals zusammen in derselben Benutzersitzung auftauchen, werden sie als gemeinsam aufgetreten behandelt. Die Häufigkeit des gemeinsamen Auftretens ist dann die Anzahl der Vorkommnisse in den verarbeiteten Ereignisprotokollen.

3. Erzeugen eines Graphen aus der Matrix

Die Koinzidenzmatrix aus dem vorherigen Schritt kann auch als „Adjazenzmatrix“ behandelt werden, die kodiert, ob zwei Knoten in einem Graphen „benachbart“ sind, d.h. eine Verbindung haben oder „koinzident“ sind. Diese Matrix kann dann verwendet werden, um einen Graphen zu erstellen, wie in Abbildung 2 dargestellt:

Adjacency-Matrix-Graph

Abbildung 2. Erzeugen eines Graphen aus einer Matrix.

Hier sind die Werte in der Matrix die Häufigkeit des gemeinsamen Auftretens dieser beiden Knoten. Wir sehen, dass diese Werte in der Graphendarstellung als „Gewichte“ an der Kante (Verbindung) zwischen den Knoten gespeichert werden, z.B. die Knoten V2 und V3 sind 5 Mal gemeinsam aufgetreten.

Wir kodieren die Graphenstruktur in einer Sammlung in Solr mit einem einfachen JSON-Datensatz für jeden Knoten. Jeder Datensatz enthält Felder, in denen die IDs anderer Knoten aufgelistet sind, die auf diesen Datensatz verweisen oder auf die dieser Knoten „hinaus“ zeigt.

Fusion bietet eine Abstraktionsebene, die die Details der Konstruktion von Abfragen an Solr zur Navigation durch den Graphen verbirgt. Da wir die IDs der Datensätze kennen, an denen wir interessiert sind, können wir eine einzige boolesche Abfrage erstellen, bei der die einzelnen IDs, nach denen wir suchen, durch OR-Operatoren getrennt sind, z.B. (id:3677 OR id:9762 OR id:1459). Das bedeutet, dass wir nur eine einzige Anfrage an Solr stellen müssen, um die benötigten Details zu erhalten.

Außerdem bedeutet die Tatsache, dass wir uns nur für den Nachbarschaftsgraphen um einen Startpunkt interessieren, dass das System nicht den gesamten Graphen (der potenziell sehr groß ist) im Speicher speichern muss.

4. Empfehlungen aus der Grafik übernehmen

Bei der Abfrage/Empfehlung können wir den Graphen verwenden, um Vorschläge zu machen, welche anderen Elemente in diesem Graphen am meisten mit dem eingegebenen Element verwandt sind:

  1. Navigieren Sie den Co-Occurrence-Graphen vom Startobjekt aus, um weitere Entitäten (Dokumente, Benutzer, Abfragen) zu sammeln.
  2. Führen Sie die Liste der Entitäten aus verschiedenen Knoten im Graphen zusammen. Je mehr Listen eine Entität enthält, desto mehr Gewicht erhält sie und desto höher steigt sie in der endgültigen Ausgabeliste auf.
  3. Die Gewichtung basiert auf dem reziproken Rang des Gesamtrangs der Entität. Der Gesamtrang ergibt sich aus der Summe des Rangs des Ergebnisses, aus dem die Entität stammt, und des Rangs der Entität innerhalb ihrer eigenen Liste.

 

Das folgende Bild zeigt die Grafik zum Dokument „Midnight Club: Los Angeles“ aus einem Beispieldatensatz:

mitternachts-club-grafik

Abbildung 3. Ein Beispiel für ein Nachbarschaftsdiagramm.

Hier zeigt die relative Größe der Knoten an, wie häufig sie in den rohen Ereignisdaten vorkommen, und die Größe der Pfeile ist ein visueller Indikator für das Gewicht oder die Häufigkeit des gemeinsamen Auftretens zwischen zwei Elementen.

Wir können zum Beispiel sehen, dass die Abfrage „Midnight Club“ (blauer Knoten unten rechts) am häufigsten zu einem Klick auf das Produkt „Midnight Club“ führte: Los Angeles Complete Edition Platinum Hits“ führte (im Gegensatz zu der darüber liegenden Originalversion). Dies ist die Art von Informationen, die für einen Business-Analysten, der versucht, das Nutzerverhalten auf einer Website zu verstehen, nützlich wäre.

Vielfalt in Empfehlungen

Für ein bestimmtes Element haben wir möglicherweise nur eine kleine Anzahl von Elementen, die mit diesem Element übereinstimmen (basierend auf der Koinzidenzmatrix). Indem wir die Daten aus der Navigation durch den Graphen (die aus der Matrix stammen) hinzufügen, erhöhen wir die Vielfalt der Vorschläge. Artikel, die in mehreren Quellenlisten auftauchen, rücken dann nach oben. Wir glauben, dass dies dazu beiträgt, die Qualität der Empfehlungen zu verbessern und Verzerrungen zu verringern.

In Abbildung 4 sehen Sie beispielsweise einige Beispiele für Empfehlungen für die Suchanfrage „Call of Duty“. Die Empfehlungen stammen von einem „popularitätsbasierten“ Empfehlungsprogramm, d.h. es gibt den Artikeln mit den meisten Klicks ein hohes Gewicht. Wir sehen, dass die Vorschläge alle aus der Videospielserie „Call of Duty“ stammen:

Abfrage-Top-Klicks

Abbildung 4. Empfehlungen von einem „popularitätsbasierten“ Empfehlungssystem.

Im Gegensatz dazu zeigen wir in Abbildung 5 die Empfehlungen von EventMiner für dieselbe Anfrage:

Abfrageverwandte DocIds

Abbildung 5. Empfehlungen aus der Navigation in der Grafik.

Hier sehen wir, dass die Vorschläge jetzt vielfältiger sind. Die ersten beiden sind Spiele aus dem gleichen Genre („Ego-Shooter“-Spiele) wie die ursprüngliche Abfrage.

Im Falle einer E-Commerce-Website kann die Vielfalt der Empfehlungen ein wichtiger Faktor sein, um einem Nutzer Artikel vorzuschlagen, die mit seiner ursprünglichen Anfrage in Zusammenhang stehen, die er aber möglicherweise nicht kennt. Dies wiederum kann dazu beitragen, die CTR (Click-Through-Rate) und die Konversionsrate auf der Website insgesamt zu erhöhen, was sich direkt positiv auf den Umsatz und die Kundenbindung auswirkt.

Bewertung der Qualität von Empfehlungen

Um die Qualität der von diesem Ansatz erzeugten Empfehlungen zu bewerten, haben wir CrowdFlower verwendet, um Nutzerurteile über die Relevanz der von EventMiner erzeugten Vorschläge einzuholen. Abbildung 6 zeigt ein Beispiel dafür, wie eine Beispiel-Empfehlung einem menschlichen Richter präsentiert wurde:

EventMiner-CrowdFlower-Survey-Resident-Evil

Abbildung 6. Beispiel für einen Bildschirm zur Beurteilung der Relevanz (CrowdFlower).

Hier sehen Sie die ursprüngliche Benutzeranfrage („Resident Evil“) zusammen mit einer Beispielempfehlung (ein anderes Videospiel namens „Dead Island“). Wir sehen, dass der Richter aufgefordert wird, eine von vier Optionen auszuwählen, die dazu verwendet wird, dem Artikel eine numerische Relevanzbewertung zu geben:

  1. Off-Topic
  2. Annehmbar
  3. Gut
  4. Ausgezeichnet

 

In diesem Beispiel könnte der Benutzer die Relevanz dieses Vorschlags als „gut“ bewerten, da das empfohlene Spiel dem gleichen Genre („Survival Horror“) angehört wie die ursprüngliche Anfrage.

Beachten Sie, dass der Produkttitel keine Begriffe enthält, die mit der Suchanfrage übereinstimmen, d.h. die Empfehlungen beruhen ausschließlich auf der Graphnavigation und nicht auf einer Überschneidung zwischen der Suchanfrage und dem vorgeschlagenen Dokument.

In Tabelle 1 fassen wir die Ergebnisse dieser Bewertung zusammen:

Artikel Urteile Benutzer Avg. Relevanz (1 – 4)
1000 2319 30 3.27

 

Hier sehen wir, dass die durchschnittliche Relevanzbewertung über alle Beurteilungen hinweg bei 3,27 liegt, d.h. „gut“ bis „ausgezeichnet“.

Fazit

Wenn Sie ein sofort einsatzbereites Empfehlungssystem wünschen, das hochwertige Empfehlungen aus Ihren Daten generiert, sollten Sie Lucidworks Fusion herunterladen und ausprobieren.

You Might Also Like

B2B-KI-Benchmarkstudie 2025: Was wir in den Schützengräben sehen

Laden Sie die B2B-KI-Benchmark-Highlights 2025 von Lucidworks herunter. Sehen Sie sich die...

Read More

Vom Suchunternehmen zum praktischen KI-Pionier: Unsere Vision für 2025 und darüber hinaus

CEO Mike Sinoway gibt Einblicke in die Zukunft der KI und stellt...

Read More

Wenn KI schief geht: Fehlschläge in der realen Welt und wie man sie vermeidet

Lassen Sie nicht zu, dass Ihr KI-Chatbot einen 50.000 Dollar teuren Tahoe...

Read More

Quick Links