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.
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?
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
@ alex9311 in der Tat, die Benutzer bewerteten Elemente auf einer Skala von 1 bis 10. Ich habe ein paar Millionen Bewertungen. – stholzm