2016-10-19 9 views
0

ich das documentation example nach einem Empfehlungssystem , Konstruktor Im Erstellen von ALS alle feinenEmpfehlung System mit Funken ml

val als = new ALS() 
    .setMaxIter(maxIterations) 
    .setRegParam(regressionParam) 
    .setUserCol("user_id") 
    .setItemCol("item_id") 
    .setRatingCol("rating") 

val model = als.fit(trainData) 
val predictions = model.transform(testData) 
println("predictions"+predictions.show(80)) 

val evaluator = new RegressionEvaluator() 
    .setMetricName("rmse") 
    .setLabelCol("rating") 
    .setPredictionCol("prediction") 
val rmse = evaluator.evaluate(predictions) 
println(s"Root-mean-square error = $rmse") 
predictions 

ich das Modell trainieren zu bauen, alles eingerichtet, aber hier mein Hauptproblem ist, dass ich kann mit Testdaten voraussagen, die den Prädiktionsfaktor für jede Item-ID zurückliefern, aber ich brauche tatsächlich, dass das Modell mir Items von einer user_id vorschlagen kann, die nicht vorhersagen, wie passend eine Item-ID sein kann, indem man eine Vorhersagespalte hinzufügt. kann org.apache.spark.ml.recommendation.ALS dies tun?

Antwort

2

Derzeit sind 10 Top-Produkte für Benutzer mit User_id empfehlen = 1, müssen Sie etwas tun, wie:

val predictionsForUser1 = predictions 
    .where(col("user_id") === 1) 
    .orderBy(col("predictions").desc) 
    .limit(10) 

In der nächsten Spark-Versionen wird es in benutzerfreundlicher Weise

+0

ok gut umgesetzt werden wissen! Eine andere Sache, die ich ML neuartig bin, warum ist es schlecht, mit den gleichen Daten zu trainieren und zu testen? –

+0

Das Modell kann die Testdaten überarbeiten, was bedeutet, dass es die Werte im Test-Dataset perfekt vorhersagt, aber wenn Sie das Dataset ändern, werden die Vorhersagen sehr schlecht sein. Durch die Verwendung von zwei separaten Datensätzen können wir eine Überanpassung vermeiden –

+0

ok danke! Letzte Sache, wenn ich es wie im Beispiel mache, habe ich Trainingstestdaten wie diese user_id | item_id | Ich bewerte das Problem damit, dass das Modell basierend auf item_ids voraussagt, so dass es mir keine anderen item_ids empfiehlt. Es sagt mir nur, wie passend (Bestellung durch Vorhersage und begrenzende Ergebnisse) die gleichen item_ids sind, die mit Trainingsdaten verbunden sind. Ich brauche das Modell zu empfehlen Ich verschiedene Dinge sollte ich eine Art von unterscheiden, so dass ich verschiedene item_ids oder theres anders testen kann? –