So teilen Sie Zug / Test in Empfehlungssystemen

8

Ich arbeite mit dem MovieLens10M-Datensatz und sage Benutzerbewertungen voraus. Wie sollte ich meine Trainings- und Testdaten aufteilen, wenn ich meinen Algorithmus fair bewerten möchte?

Ich glaube, dass die Daten standardmäßig in Zug-Test-Sets aufgeteilt sind, in denen 'Test' Filme enthält, die zuvor im Trainingssatz nicht gesehen wurden. Wie muss ich meine Daten aufteilen, wenn mein Modell erfordert, dass jeder Film mindestens einmal im Trainingssatz gesehen wurde? Sollte ich alle Bewertungen bis auf N aller Benutzer für alle Daten verwenden und meine Leistung anhand der gehaltenen NxUser_num-Bewertungen bewerten?

jamesmf
quelle

Antworten:

2

Leave-one-outKreuzvalidierung ist wahrscheinlich der einfachste Weg, dies zu beheben. Wenn Sie zufällig ein Modell verwenden, dessen Training viel Zeit erfordert, ist es möglicherweise besser, n% wegzulassen.

Die Methode beinhaltet das Eliminieren einer bekannten Bewertung und den Versuch, diese vorherzusagen. Wenn Sie n Prozent der Bewertungen entfernen möchten, wählen Sie sie einfach zufällig aus, anstatt eine bestimmte Anzahl der Bewertungen jedes Benutzers auszuwählen. Und halte n ziemlich klein - in der Größenordnung von 10% oder weniger.

Hier finden Sie eine gute Beschreibung der Kreuzvalidierungsmethoden für Empfehlungssysteme . Allgemein:

Holdout ist eine Methode, die einen Datensatz in zwei Teile aufteilt: einen Trainingssatz und einen Testsatz. Diese Sets können unterschiedliche Proportionen haben. Bei der Einstellung von Empfehlungssystemen erfolgt die Partitionierung durch zufällige Auswahl einiger Bewertungen von allen (oder einigen) Benutzern. Die ausgewählten Bewertungen bilden den Testsatz, während die übrigen der Trainingssatz sind. Diese Methode wird auch als Auslassen bezeichnet. In [17] haben Sarwar et al. Teilen Sie den Datensatz in 80% Trainings- und 20% Testdaten auf. In [18] werden mehrere Verhältnisse zwischen Training und Test (von 0,2 bis 0,95 mit einem Inkrement von 0,05) gewählt, und für jedes wird das Experiment zehnmal mit verschiedenen Trainings- und Testsätzen wiederholt, und schließlich werden die Ergebnisse gemittelt. In [13] wird der Testsatz von 10% der Benutzer erstellt: 5 Bewertungen für jeden Benutzer im Testsatz werden zurückgehalten.

Auslassen ist eine Methode, die durch Setzen von k = 1 in der Auslassen-Methode erhalten wird. Bei einem aktiven Benutzer halten wir wiederum einen bewerteten Artikel zurück. Der Lernalgorithmus wird auf die verbleibenden Daten trainiert. Das zurückgehaltene Element wird verwendet, um die Richtigkeit der Vorhersage zu bewerten, und die Ergebnisse aller Bewertungen werden gemittelt, um die endgültige Qualitätsschätzung zu berechnen. Dieses Verfahren hat einige Nachteile, wie die Überanpassung und die hohe Rechenkomplexität. Diese Technik eignet sich zur Bewertung der empfohlenen Qualität des Modells für Benutzer, die bereits als Mitglieder des Systems registriert sind. Karypis et al. [10] nahmen eine triviale Version des Auslassens an, um den Testsatz zu erstellen, indem zufällig einer der Einträge ungleich Null für jeden Benutzer und die verbleibenden Einträge für das Training ausgewählt wurden. In [7] haben Breese et al.

Eine einfache Variante der Holdout-Methode ist die m-fache Kreuzvalidierung. Es besteht darin, den Datensatz in m unabhängige Falten zu unterteilen (damit sich die Falten nicht überlappen). Jede Falte wird wiederum genau einmal als Testsatz verwendet, und die verbleibenden Falten werden zum Trainieren des Modells verwendet. Gemäß [20] und [11] beträgt die vorgeschlagene Anzahl von Falten 10. Diese Technik eignet sich zur Bewertung der Empfehlungsfähigkeit des Modells, wenn neue Benutzer (dh Benutzer, die noch nicht zum Modell gehören) dem System beitreten. Durch Auswahl einer angemessenen Anzahl von Falten können wir Mittelwert, Varianz und Konfidenzintervall berechnen.

Hoffe das hilft!

AN6U5
quelle