|
@@ -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;
|
|
|
}
|
|
|
}
|