Browse Source

调整ros-添加时间特征&特征平滑&扩大召回&vor值域压缩

jch 2 months ago
parent
commit
f694908482

+ 12 - 4
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV564.java

@@ -353,13 +353,13 @@ public class RankStrategy4RegionMergeModelV564 extends RankStrategy4RegionMergeM
             item.getScoresMap().put("fmRovOrigin", fmRovOrigin);
             double fmRov = restoreScore(fmRovOrigin);
             item.getScoresMap().put("fmRov", fmRov);
-            double newFmRov = log(1.0, 1 + fmRov, fmRovLogBase);
+            double newFmRov = logRov(fmRov, fmRovLogBase);
             double hasReturnRovScore = Double.parseDouble(vid2MapFeature.getOrDefault(item.getVideoId() + "", new HashMap<>()).getOrDefault("rov", "0"));
             item.getScoresMap().put("hasReturnRovScore", hasReturnRovScore);
             double norXGBScore = item.getScoresMap().getOrDefault("NorXGBScore", 0d);
             double newNorXGBScore = norCalibration(xgbNorScaleType, xgbNorBias, xgbNorWeight, xgbNorPowerWeight, xgbNorPowerExp, norXGBScore);
             double vor = Double.parseDouble(vid2MapFeature.getOrDefault(item.getVideoId() + "", new HashMap<>()).getOrDefault("vor", "0"));
-            double newVor = log(vorLogWeight, 1.0 + vor / 10.0, vorLogBase);
+            double newVor = logVor(vorLogWeight, vor, vorLogBase);
             item.getScoresMap().put("vor", vor);
             score = newFmRov * (0.1 + newNorXGBScore) * (0.1 + newVor);
             Video video = item.getVideo();
@@ -522,9 +522,17 @@ public class RankStrategy4RegionMergeModelV564 extends RankStrategy4RegionMergeM
         return newScore;
     }
 
-    private double log(double weight, double x, double base) {
+    private double logRov(double x, double base) {
         if (base > 1) {
-            return weight * Math.log(x) / Math.log(base);
+            return Math.log(1 + x) / Math.log(base);
+        } else {
+            return x;
+        }
+    }
+
+    private double logVor(double weight, double x, double base) {
+        if (base > 1) {
+            return weight * Math.log(1 + x / 10) / Math.log(base);
         } else {
             return x;
         }

+ 12 - 4
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV567.java

@@ -360,13 +360,13 @@ public class RankStrategy4RegionMergeModelV567 extends RankStrategy4RegionMergeM
             item.getScoresMap().put("fmRovOrigin", fmRovOrigin);
             double fmRov = restoreScore(fmRovOrigin);
             item.getScoresMap().put("fmRov", fmRov);
-            double newFmRov = log(1.0, 1 + fmRov, fmRovLogBase);
+            double newFmRov = logRov(fmRov, fmRovLogBase);
             double hasReturnRovScore = Double.parseDouble(vid2MapFeature.getOrDefault(item.getVideoId() + "", new HashMap<>()).getOrDefault("rov", "0"));
             item.getScoresMap().put("hasReturnRovScore", hasReturnRovScore);
             double norXGBScore = item.getScoresMap().getOrDefault("NorXGBScore", 0d);
             double newNorXGBScore = norCalibration(xgbNorScaleType, xgbNorBias, xgbNorWeight, xgbNorPowerWeight, xgbNorPowerExp, norXGBScore);
             double vor = Double.parseDouble(vid2MapFeature.getOrDefault(item.getVideoId() + "", new HashMap<>()).getOrDefault("vor", "0"));
-            double newVor = log(vorLogWeight, 1.0 + vor / 10.0, vorLogBase);
+            double newVor = logVor(vorLogWeight, vor, vorLogBase);
             item.getScoresMap().put("vor", vor);
             score = newFmRov * (0.1 + newNorXGBScore) * (0.1 + newVor);
             Video video = item.getVideo();
@@ -541,9 +541,17 @@ public class RankStrategy4RegionMergeModelV567 extends RankStrategy4RegionMergeM
         return newScore;
     }
 
-    private double log(double weight, double x, double base) {
+    private double logRov(double x, double base) {
         if (base > 1) {
-            return weight * Math.log(x) / Math.log(base);
+            return Math.log(1 + x) / Math.log(base);
+        } else {
+            return x;
+        }
+    }
+
+    private double logVor(double weight, double x, double base) {
+        if (base > 1) {
+            return weight * Math.log(1 + x / 10) / Math.log(base);
         } else {
             return x;
         }