@Override public double evaluate( JavaSparkContext sparkContext, PMML model, Path modelParentPath, JavaRDD<String> testData) { log.info("Evaluating model"); JavaRDD<Rating> testRatingData = parsedToRatingRDD(toParsedRDD(testData)); testRatingData = aggregateScores(testRatingData); MatrixFactorizationModel mfModel = pmmlToMFModel(sparkContext, model, modelParentPath); double eval; if (implicit) { double auc = AUC.areaUnderCurve(sparkContext, mfModel, testRatingData); log.info("AUC: {}", auc); eval = auc; } else { double rmse = RMSE.rmse(mfModel, testRatingData); log.info("RMSE: {}", rmse); eval = 1.0 / rmse; } return eval; }