Преглед изворни кода

基线str+和旧label ros-值域校准

jch пре 3 месеци
родитељ
комит
6c375df129

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

@@ -334,6 +334,12 @@ public class RankStrategy4RegionMergeModelV564 extends RankStrategy4RegionMergeM
             item.norFeatureMap = FeatureBucketUtils.bucketFeature("20241209_nor_bucket.txt", featureMapDouble);
         }
         // 4 排序模型计算
+        double fmRovBias = mergeWeight.getOrDefault("fmRovBias", -0.0017);
+        double fmRovWeight = mergeWeight.getOrDefault("fmRovWeight", 1.331);
+        double fmRovSquareWeight = mergeWeight.getOrDefault("fmRovSquareWeight", -6.4597);
+        double fmRovCubeWeight = mergeWeight.getOrDefault("fmRovCubeWeight", 14.393);
+        double xgbNorBias = mergeWeight.getOrDefault("xgbNorBias", -1.6945);
+        double xgbNorWeight = mergeWeight.getOrDefault("xgbNorWeight", 1.8968);
         Map<String, String> sceneFeatureMap = new HashMap<>(0);
         List<RankItem> items = ScorerUtils.getScorerPipeline("feeds_score_config_fm_xgb_20241209.conf").scoring(sceneFeatureMap, userFeatureMap, norUserFeatureMap, rankItems);
         // 5 排序公式特征
@@ -345,12 +351,14 @@ public class RankStrategy4RegionMergeModelV564 extends RankStrategy4RegionMergeM
             item.getScoresMap().put("fmRovOrigin", fmRovOrigin);
             double fmRov = restoreScore(fmRovOrigin);
             item.getScoresMap().put("fmRov", fmRov);
+            double newFmRov = rovCalibration(fmRovBias, fmRovWeight, fmRovSquareWeight, fmRovCubeWeight, fmRov);
             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(xgbNorBias, xgbNorWeight, norXGBScore);
             double vor = Double.parseDouble(vid2MapFeature.getOrDefault(item.getVideoId() + "", new HashMap<>()).getOrDefault("vor", "0"));
             item.getScoresMap().put("vor", vor);
-            score = fmRov * (0.1 + Math.pow(norXGBScore, 1.1)) * (0.1 + vor);
+            score = newFmRov * (0.1 + newNorXGBScore) * (0.1 + vor);
             Video video = item.getVideo();
             video.setScore(score);
             video.setSortScore(score);
@@ -484,4 +492,26 @@ public class RankStrategy4RegionMergeModelV564 extends RankStrategy4RegionMergeM
             }
         }
     }
+
+    private double rovCalibration(double bias, double weight, double squareWeight, double cubeWeight, double score) {
+        double newScore = bias + weight * score;
+        if (Math.abs(squareWeight) > 1E-8) {
+            newScore += squareWeight * Math.pow(score, 2);
+        }
+        if (Math.abs(cubeWeight) > 1E-8) {
+            newScore += cubeWeight * Math.pow(score, 3);
+        }
+        if (newScore < 1E-8) {
+            newScore = score;
+        }
+        return newScore;
+    }
+
+    private double norCalibration(double bias, double weight, double score) {
+        double newScore = bias + weight * score;
+        if (newScore < 1E-8) {
+            newScore = 0;
+        }
+        return newScore;
+    }
 }