Empfehlungssystem

EDIT: Der Artikel, der in diesem Eintrag genannt wird, ist nicht mehr veröffentlicht.

Ich habe kürzlich einen Bericht über TFIDF veröffentlicht. Weil er technisch ist, wollte ich ihn erklären.

Training-Test-Mischung

Motivation

Jeden Tag kommen viele Fachartikeln ins Internet. Als ich als Wissenschaftler gearbeitet habe, musste ich jeden Tag herausfinden, welcher Artikel wichtig für mich ist. Das ist nicht so einfach, weil ich vor allem dienstags die Zusammenfassungen von vielen Artikeln lesen musste. Deshalb habe ich eine einfache Anwendung geschrieben. Sie sammelt neue Zusammenfassungen der neuen Fachartikel und zeigt mir, welche Zusammenfassung ein bestimmtes Wort enthält. Das ist relativ nützlich. Deshalb wollte ich eine bessere Anwendung schreiben. Die ist nämlich ein Empfehlungssystem.

Man kann verschiedene Methode für ein Empfehlungssystem verwenden. Aber es kommt auf die Methode an, ob das System effektiv ist. Ich habe schon eins geschrieben und ich wollte es verbessern. Dafür muss ich genau untersuchen.

Natürlich habe ich die Untersuchung gemacht ohne die im Internet zu veröffentlichen. Aber ich habe gedacht, dass es eine gute Idee, einen detaillierten Bericht im Internet zu öffentlichen, um meine Deutschkenntnisse zu verbessern.

Was ist TFIDF?

Das TFIDF zeigt, wie wichtig ein Wort eines Textes in einer Menge von Texten ist. Stellen Sie eine Suchmaschine vor: Es gibt viele (gemeldete) Webseite und man sucht eine mit einem bestimmten Wort heraus. Es ist einfach, eine Liste der Webseiten mit dem Wort zu machen, aber welche Website ist wichtig bzw. relevant? Man kann TFIDF für eine Bewertung einer Webseite verwenden.

Eine wichtige Eigenschaft von TFIDF ist: Das ist klein für ein Wort, das oft benutzt wird. Zum Beispiel ist das TFIDF von „and“ für jeden Text oft (nicht immer) 0. Die Eigenschaft ist sehr nützlich, um die Wirkung von oft benutzten Wörtern zu verkleinern.

Ich benutze TFIDF, um die Eigenschaft einer Webseite mit Zahlen darzustellen.

Bemerkung. Natürlich ist es auch eine gute Idee, eine Liste von den oft benutzen Wörtern zu benutzen. Ein solches Wort nennt man ein Stoppwort. Dieser Eintrag erklärt, wie man eine Stoppwörtliste für Englisch mit R benutzt.

Die Training-Daten und die Test-Daten

Wir haben zwei verschiedene Mengen von Daten. Die eine ist die „Training-Daten“ und die andere ist „Test-Daten“.

  • Die Training-Daten erhalten die Webseiten mit meinen Bewertungen. Eine Bewertung ist +1 (interessant) oder -1 (nicht interessant).
  • Die Test-Daten erhalten Webseiten ohne Bewertung.

Die Aufgabe von einem Empfehlungssystem ist die Bewertung von den Webseiten in den Test-Daten, mit die Training-Daten zu benutzen.

Klassifikation

Diese Aufgabe ist typisch in maschinellem Lernen, deshalb gibt es viele Methode, die man verwenden kann. Ich habe diesmal penalised logistic regression (PLR), random forest (RF) und support vector machine (SVM) (with Radial Basis Function Kernel) versucht. (PLR nennt man auch regularlised logistic regression.)

RF und SVM sind sehr bekannt für die gute Genauigkeit. PRL ist eine bessere Variante von der logistischen Regression (LR). LR ist einfach, aber man kann diesmal sie nicht verwenden, weil die Training-Daten zu klein sind.

Ich war überrascht, als ich das Ergebnis (der Reduzierung von Dimension) gesehen habe, weil SVM schlechter als PLR ist. Während PLR einfach und schnell, ist das Ergebnis oft schlechter im Gegensatz zu SVM oder RF. (Natürlich kommt es auf die Daten an, ob das Ergebnis der Methode gut ist.) Darüber hinaus verhalten PLR und RF so ähnlich, dass die Kurve von RF wegen der Kurve von PLR nicht gesehen wird.

Clusteranalyse

Die Clusteranalyse ist nicht für ein Empfehlungssystem, aber ich habe gedacht, dass es interessant ist, wenn man Clusteranalyse dafür verwenden kann. Die Idee ist einfach. Die Clusteranalyse teilt eine Menge in mehrere Gruppen ein, sodass eine Gruppe ähnliche Dinge erhält.

Man kann folgendermaßen Clusteranalyse für ein Empfehlungssystem verwenden: Erstens mischt man die Training-Daten und die Test-Daten. Zweitens teilt man die gemischten Daten in mehrere Gruppen ein. (Clusteranalyse) Dritten bewertet man eine Gruppe durch die bewerteten Daten in der Gruppe.

Die Idee habe ich schon für mein Empfehlungssystem benutzt. („nKM“ und „rKM“ sind sie.) Als ich die Clusteranalyse (K-means) implementiert habe, konnte ich die Daten gut einteilen. Aber die diesmalige Untersuchung zeigt, dass das nicht ganz genau ist. (Meine Implementierung ist aber richtig. Den Grund erläutere ich irgendwann.) Also ich muss auf die Clusteranalyse verzichten.

Ohne maschinelles Lernen

Ein Empfehlungssystem ist kein Teil von maschinellem Lernen: Man kann ohne es ein Empfehlungssystem machen.

Wie ich am Anfang des Textes gesagt habe, stelle ich einen Text mit Zahlen dar. Deshalb verwende ich cosine similarity. („TI“ und „lTI“ in meinem Empfehlungssystem.) Erstens erstelle ich einen "preference vector". Er stellt meine Vorliebe dar. Zweitens rechne ich damit, wie ähnlich ein Text wie der "preference verctor" ist.

Ich habe noch eine andere Idee versucht. Dafür benutze ich die Abstände zwischen den Texten. Aber die zwei Ideen haben diesmal keinen großen Unterschied gemacht.

Plan

  1. Darauf verzichten, die Clusteranalyse für mein Empfehlungssystem zu verwenden.
  2. Zwei Arten von Bewertungen durch PLR implementieren. Der eine ist ohne Reduzierung von Dimension und der andere ist mit.
  3. Die Stopportliste (und Snowball) versuchen.
  4. Eine neue Version des Berichtes auf Englisch und Python schreiben.
Share this page on        
Categories: #data-mining