Jelajahi Sumber

Merge branch 'f-recall-score-rov-adjust' of algorithm/recommend-server into master

zhangpanpan 3 hari lalu
induk
melakukan
7981ad0673

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

@@ -215,6 +215,11 @@ public class RankStrategy4RegionMergeModelV568 extends RankStrategy4RegionMergeM
         double dnRovn1hW = mergeWeight.getOrDefault("dn_rovn_1h_w", 0d);
         double dnRovn24hW = mergeWeight.getOrDefault("dn_rovn_24h_w", 0d);
 
+        // V568 rov 融合:newNorDNNScore(预测 ROV) 与 coarseRankScore(统计 ROV) 加权和
+        // 默认 predRovW=1.0 / statRovW=0.0 → 退化为原公式,保底不掉指标
+        double predRovW = mergeWeight.getOrDefault("predRovW", 1.0d);
+        double statRovW = mergeWeight.getOrDefault("statRovW", 0.0d);
+
         Map<String, Map<String, String>> vid2MapFeature = this.getVideoRedisFeature(vids, "redis:vid_hasreturn_vor:");
 
 
@@ -237,6 +242,15 @@ public class RankStrategy4RegionMergeModelV568 extends RankStrategy4RegionMergeM
             item.getScoresMap().put("rosAdd", rosAdd);
             item.getScoresMap().put("rosW", rosW);
 
+            // 统计 ROV:coarseRankScore = plusSmooth(return_n_uv, exp, 30, 1), 1h+24h 加权
+            // 数据源同 fetchCoarseRankScores 计算, 缺失 vid 兜底 0 (退回纯预测)
+            double statRov = coarseRankMap.getOrDefault(item.getVideoId(), 0d);
+            double fusedRov = predRovW * newNorDNNScore + statRovW * statRov;
+            item.getScoresMap().put("statRov", statRov);
+            item.getScoresMap().put("predRovW", predRovW);
+            item.getScoresMap().put("statRovW", statRovW);
+            item.getScoresMap().put("fusedRov", fusedRov);
+
             double vor = Double.parseDouble(vid2MapFeature.getOrDefault(item.getVideoId() + "", new HashMap<>()).getOrDefault("vor", "0"));
             item.getScoresMap().put("vor", vor);
             item.getScoresMap().put("vorAdd", vorAdd);
@@ -291,7 +305,7 @@ public class RankStrategy4RegionMergeModelV568 extends RankStrategy4RegionMergeM
             item.getScoresMap().put("dnRovn24hW", dnRovn24hW);
             item.getScoresMap().put("dnRovn24h", dnRovn24h);
 
-            score = fmRov * (rosAdd + rosW * newNorDNNScore) * (vorAdd + vorW * vor) + c1RovnScore + b0StrScore + b0RorScore + cnRovnScore + dnRovnScore;
+            score = fmRov * (rosAdd + rosW * fusedRov) * (vorAdd + vorW * vor) + c1RovnScore + b0StrScore + b0RorScore + cnRovnScore + dnRovnScore;
 
             Video video = item.getVideo();
             video.setScore(score);