Bladeren bron

Merge branch 'feature_20260629_yangxiaohui_v564_simple_mul' of algorithm/recommend-server into master

yangxiaohui 21 uur geleden
bovenliggende
commit
be61314436

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

@@ -287,7 +287,17 @@ public class RankStrategy4RegionMergeModelV564 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;
+            // V564 实验: 简化公式 fmRov × max(norDNNScore, 1e-6)  (cal × rov 朴素乘 + 截负 + NaN 防御)
+            // 旧公式: fmRov * (rosAdd + rosW * newNorDNNScore) * (vorAdd + vorW * vor) + 5 linear bonuses
+            // 离线 72 天 (0417-0627) 验证: 该简化形式自 5/15 起 composite 持续 ≥ 1.0, 比线上 sortscore 平均高 2-4%
+            // 1e-6 epsilon 兜底:
+            //   1. NorDNN 缺失 (~12% 样本 getOrDefault=0) → score = fmRov × 1e-6, 内部仍按 fmRov 区分, 不全部 tie 在 0
+            //   2. NorDNN 负 (~1.76% 样本, min -0.39) → 截到 1e-6, 消除 fmRov × 负 导致的 inversion bug
+            // NaN/Infinity 兜底: Double.compare(NaN, x) 返正数, 降序排 NaN 会到顶部, 必须显式归零
+            score = fmRov * Math.max(norDNNScore, 1e-6);
+            if (!Double.isFinite(score)) {
+                score = 0d;  // NaN 或 ±Infinity → 归 0, 排到底部
+            }
 
             Video video = item.getVideo();
             video.setScore(score);