#360 模型&统计ros融合

Merged
jiachanghui merged 1 commits from algorithm/feature/ros_fusion into algorithm/master 1 week ago

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

@@ -45,6 +45,7 @@ public class RankStrategy4RegionMergeModelV568 extends RankStrategy4RegionMergeM
 
         long currentMs = System.currentTimeMillis();
         Set<Long> setVideo = new HashSet<>();
+        setVideo.add(param.getHeadVid());
         List<Video> rovRecallRank = new ArrayList<>();
         // -------------------5路特殊旧召回------------------
         RecallUtils.extractOldSpecialRecall(param, setVideo, rovRecallRank);
@@ -68,8 +69,12 @@ public class RankStrategy4RegionMergeModelV568 extends RankStrategy4RegionMergeM
         RecallUtils.extractRecall(mergeWeight.getOrDefault("headCate2Rov", 5.0).intValue(), param, HeadCate2RovRecallStrategy.PUSH_FROM, setVideo, rovRecallRank);
         //-------------------city rovn------------------
         RecallUtils.extractRecall(mergeWeight.getOrDefault("cityRov", 5.0).intValue(), param, CityRovnRecallStrategy.PUSH_FROM, setVideo, rovRecallRank);
-        // -------------------premium rov------------------
-        RecallUtils.extractRecall(mergeWeight.getOrDefault("preRovN", 10.0).intValue(), param, PremiumROVRecallStrategy.PUSH_FROM, setVideo, rovRecallRank);
+        //-------------------priori province rovn------------------
+        RecallUtils.extractRecall(mergeWeight.getOrDefault("prioriProvinceRov", 3.0).intValue(), param, PrioriProvinceRovnRecallStrategy.PUSH_FROM, setVideo, rovRecallRank);
+        //-------------------priori province str------------------
+        RecallUtils.extractRecall(mergeWeight.getOrDefault("prioriProvinceStr", 1.0).intValue(), param, PrioriProvinceStrRecallStrategy.PUSH_FROM, setVideo, rovRecallRank);
+        //-------------------priori province ros------------------
+        RecallUtils.extractRecall(mergeWeight.getOrDefault("prioriProvinceRos", 1.0).intValue(), param, PrioriProvinceRosRecallStrategy.PUSH_FROM, setVideo, rovRecallRank);
 
         //-------------------排-------------------
         //-------------------序-------------------
@@ -107,6 +112,8 @@ public class RankStrategy4RegionMergeModelV568 extends RankStrategy4RegionMergeM
         double xgbRovNegRate = mergeWeight.getOrDefault("xgbRovNegRate", 0.059);
         double xgbNorPowerWeight = mergeWeight.getOrDefault("xgbNorPowerWeight", 1.22);
         double xgbNorPowerExp = mergeWeight.getOrDefault("xgbNorPowerExp", 1.15);
+        double modelNorWeight = mergeWeight.getOrDefault("modelNorWeight", 0.5);
+        double statNorWeight = mergeWeight.getOrDefault("statNorWeight", 0.5);
         Map<String, Map<String, String>> vid2MapFeature = this.getVideoRedisFeature(vids, "redis:vid_hasreturn_vor:");
 
         // 获取权重
@@ -120,9 +127,7 @@ public class RankStrategy4RegionMergeModelV568 extends RankStrategy4RegionMergeM
             cate2Coefficient.putAll(simCateScore);
         }
         Double cate2CoefficientDenominator = mergeWeight.getOrDefault("cate2CoefficientDenominator", 1d);
-
-        Map<String, Double> preVideosWeightMap = getPremiumVideosWeight();
-        double premiumVideosCoefficient = mergeWeight.getOrDefault("premiumVideosCoefficient", 0.3);
+        Map<String, String> regionMap = getUserRegion(param);
 
         List<Video> result = new ArrayList<>();
         for (RankItem item : items) {
@@ -135,6 +140,7 @@ public class RankStrategy4RegionMergeModelV568 extends RankStrategy4RegionMergeM
             item.getScoresMap().put("hasReturnRovScore", hasReturnRovScore);
             double norXGBScore = item.getScoresMap().getOrDefault("NorXGBScore", 0d);
             double newNorXGBScore = norPowerCalibration(xgbNorPowerWeight, xgbNorPowerExp, norXGBScore);
+            newNorXGBScore = norFusion(modelNorWeight, newNorXGBScore, statNorWeight, hasReturnRovScore);
             double vor = Double.parseDouble(vid2MapFeature.getOrDefault(item.getVideoId() + "", new HashMap<>()).getOrDefault("vor", "0"));
             item.getScoresMap().put("vor", vor);
 
@@ -144,11 +150,6 @@ public class RankStrategy4RegionMergeModelV568 extends RankStrategy4RegionMergeM
             item.getScoresMap().put("cate2CoefficientDenominator", cate2CoefficientDenominator);
 
             score = fmRov * (0.1 + newNorXGBScore) * (0.1 + vor) * (1 + scoreCoefficient / cate2CoefficientDenominator);
-            if (preVideosWeightMap.containsKey(item.getVideoId() + "")) {
-                double preWeight = 1.0 + premiumVideosCoefficient * preVideosWeightMap.get(item.getVideoId() + "");
-                score = score * preWeight;
-                item.getScoresMap().put("preWeight", preWeight);
-            }
 
             Video video = item.getVideo();
             video.setScore(score);
@@ -176,6 +177,12 @@ public class RankStrategy4RegionMergeModelV568 extends RankStrategy4RegionMergeM
             if (null != rtFeatureDumpsMap && !rtFeatureDumpsMap.isEmpty()) {
                 video.getMetaFeatureMap().put("rt", rtFeatureDumpsMap);
             }
+            if (MapUtils.isNotEmpty(param.getCreativeInfoFeature())) {
+                video.getMetaFeatureMap().put("creativeInfo", param.getCreativeInfoFeature());
+            }
+            if (MapUtils.isNotEmpty(regionMap)) {
+                video.getMetaFeatureMap().put("region", regionMap);
+            }
             result.add(video);
         }
         ExtractVideoMergeCate.addOtherParam(result, videoBaseInfoMap);
@@ -410,8 +417,7 @@ public class RankStrategy4RegionMergeModelV568 extends RankStrategy4RegionMergeM
         return videoInfo.get("merge_second_level_cate");
     }
 
-    private Map<String, Double> getPremiumVideosWeight() {
-        String redisValue = redisTemplate.opsForValue().get(PremiumROVRecallStrategy.redisKey);
-        return this.parsePair(redisValue, 100);
+    private double norFusion(double modelWeight, double modelScore, double statWeight, double statScore) {
+        return modelWeight * modelScore + statWeight * statScore;
     }
 }

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/RecallService.java

@@ -122,9 +122,6 @@ public class RecallService implements ApplicationContextAware {
         strategies.add(strategyMap.get(PrioriProvinceStrRecallStrategy.class.getSimpleName()));
         strategies.add(strategyMap.get(PrioriProvinceRosRecallStrategy.class.getSimpleName()));
         Set<String> abExpCodes = param.getAbExpCodes();
-        if (CollectionUtils.isNotEmpty(abExpCodes) && abExpCodes.contains("568")) {
-            strategies.add(strategyMap.get(PremiumROVRecallStrategy.class.getSimpleName()));
-        }
         if (CollectionUtils.isNotEmpty(abExpCodes) && abExpCodes.contains("566")) {
             strategies.add(strategyMap.get(ChannelLayerRovnRecallStrategy.class.getSimpleName()));
             strategies.add(strategyMap.get(ChannelLayerHeadRovnRecallStrategy.class.getSimpleName()));