Ich verwende das ALS-Modell von spark.ml
, um ein Empfehlungssystem mit impliziten Feedback für eine bestimmte Sammlung von Elementen zu erstellen. Ich habe bemerkt , dass die Ausgabe Vorhersagen des Modells viel niedriger als 1 sind und sie in der Regel im Intervall von [0,0,1] liegen. Daher macht die Verwendung von MAE oder MSE in diesem Fall keinen Sinn.Spark: Messung der Leistung von ALS
Daher verwende ich die AreaUnderROC (AUC), um die Leistung zu messen. Ich mache das, indem ich die BinaryClassificationEvaluator
des Funkens benutze, und ich bekomme etwas nahe zu 0.8. Aber ich kann nicht klar verstehen, wie das möglich ist, da die meisten Werte in [0,0,1] liegen.
Zu meinem Verständnis wird der Evaluator nach einem bestimmten Punkt alle Vorhersagen berücksichtigen, die zur Klasse 0 gehören. Was würde im Wesentlichen bedeuten, dass AUC gleich dem Prozentsatz negativer Proben wäre?
Wie würden Sie im Allgemeinen solche niedrigen Werte behandeln, wenn Sie die Leistung Ihres Modells im Vergleich zur logistischen Regression testen müssen?
Ich trainiere das Modell wie folgt:
rank = 25
alpha = 1.0
numIterations = 10
als = ALS(rank=rank, maxIter=numIterations, alpha=alpha, userCol="id", itemCol="itemid", ratingCol="response", implicitPrefs=True, nonnegative=True)
als.setRegParam(0.01)
model = als.fit(train)
In diesem Fall bedeutet es im Wesentlichen, dass ALS keine Muster in den Daten erfassen konnte. Ich würde erwarten, Ergebnisse im Bereich von [0, 1] zu bekommen, allerdings bekomme ich nur sehr niedrige Werte <0.1. Daher wird der Fehler für positive Proben sehr hoch sein. –
Es ist das trainierte Modell, das keinen Sinn macht, nicht die Metriken :) – ShuaiYuan
Ja, Sie haben Recht. Ich möchte keine falschen Interpretationen verursachen. Ich habe mich aufgrund der Ergebnisse des Modells für eine andere Metrik entschieden, die offensichtlich nicht sehr sinnvoll ist. –