0

Edit: Ich habe versucht, eine eigenständige Spark-Anwendung (anstelle von PredictionIO) und meine Beobachtungen sind die gleichen. Das ist also kein PredictionIO-Problem, aber immer noch verwirrend.Warum gibt ALS.trainImplicit bessere Vorhersagen für explizite Bewertungen?


Ich bin mit PredictionIO 0.9.6 und die Recommendation Vorlage für Collaborative Filtering. Die Bewertungen in meinem Datensatz sind Zahlen zwischen 1 und 10. Als ich zuerst ein Modell mit Standardwerten aus der Vorlage trainierte (unter Verwendung von ALS.train), waren die Vorhersagen zumindest subjektiv schrecklich. Die Punktzahlen reichten bis zu 60,0 oder so, aber die Empfehlungen schienen völlig zufällig.

Jemand schlug vor, dass ALS.trainImplicit eine bessere Arbeit geleistet hat, so änderte ich src/main/scala/ALSAlgorithm.scala entsprechend:

val m = ALS.trainImplicit( // instead of ALS.train 
    ratings = mllibRatings, 
    rank = ap.rank, 
    iterations = ap.numIterations, 
    lambda = ap.lambda, 
    blocks = -1, 
    alpha = 1.0, // also added this line 
    seed = seed) 

Scores sind nun deutlich niedriger (unter 1,0), aber die Empfehlungen stehen im Einklang mit den persönlichen Bewertungen. Viel besser, aber auch verwirrend. PredictionIO definiert den Unterschied zwischen expliziten und impliziten auf diese Weise:

explizite Bevorzugung (auch als „explizites Feedback“ bezeichnet), wie „Bewertung“ gegeben Punkt von anderen Nutzern. implizite Präferenz (auch als "implizite Rückmeldung" genannt), wie etwa "View" und "Buy" History.

und:

standardmäßig die Empfehlung Vorlage verwendet ALS.train() die explizite Bewertung Werte erwartet, die der Benutzer das Element bewertet wurde.

source

Ist die Dokumentation falsch? Ich denke immer noch, dass explizite Rückmeldung passt meinen Anwendungsfall. Vielleicht muss ich die Vorlage mit ALS.train anpassen, um nützliche Empfehlungen zu erhalten? Oder habe ich einfach etwas falsch verstanden?

+0

Woher kommen Ihre Bewertungen? Sind sie berechnet oder bitten Sie Nutzer explizit, Artikel zwischen 1 und 10 zu bewerten? Wenn ja, dann verwenden Sie tatsächlich explizites Feedback – alex9311

+0

@ alex9311 in der Tat, die Benutzer bewerteten Elemente auf einer Skala von 1 bis 10. Ich habe ein paar Millionen Bewertungen. – stholzm

Antwort

0

Eine Menge davon hängt davon ab, wie Sie die Daten gesammelt haben. Oft scheinen Ratings, die explizit erscheinen, implizit zu sein. Angenommen, Sie geben Benutzern die Möglichkeit, Artikel zu bewerten, die sie zuvor gekauft oder verwendet haben. Dies bedeutet, dass die Tatsache, dass sie ihre Zeit damit verbracht haben, diesen bestimmten Gegenstand zu bewerten, bedeutet, dass der Gegenstand von hoher Qualität ist. Daher werden Artikel mit schlechter Qualität überhaupt nicht bewertet, weil die Nutzer sich nicht einmal darum bemühen, sie zu verwenden. Auch wenn das Dataset explizit sein soll, können Sie bessere Ergebnisse erzielen, wenn Sie die Ergebnisse als implizit betrachten. Auch dies variiert erheblich, je nachdem wie die Daten erhalten werden.

Verwandte Themen