浏览代码

add rmsle

jch 4 月之前
父节点
当前提交
5ce29f7afd

+ 11 - 1
recommend-model-produce/src/main/scala/com/tzld/piaoquan/recommend/model/train_recsys_61_xgb_nor_20241209.scala

@@ -123,7 +123,9 @@ object train_recsys_61_xgb_nor_20241209 {
         .setPredictionCol("prediction")
         .setMetricName("rmse")
       val rmse = evaluator.evaluate(predictions.select("label", "prediction"))
-      println("recsys nor:rmse:" + rmse)
+      val rmsle = calRMSLE(predictions.select("label", "prediction").rdd)
+      println("recsys nor: rmse:" + rmse)
+      println("recsys nor: rmsle:" + rmsle)
     }
   }
 
@@ -146,4 +148,12 @@ object train_recsys_61_xgb_nor_20241209 {
     })
   }
 
+  def calRMSLE(evalRdd: RDD[Row]): Double = {
+    val sleRdd = evalRdd.map(raw => {
+      val label = raw.get(0).toString.toDouble
+      val pred = raw.get(1).toString.toDouble
+      math.pow(math.log(pred + 1) - math.log(label + 1), 2)
+    })
+    sleRdd.sum() / sleRdd.count()
+  }
 }