|
@@ -338,8 +338,11 @@ public class RankStrategy4RegionMergeModelV564 extends RankStrategy4RegionMergeM
|
|
|
double fmRovWeight = mergeWeight.getOrDefault("fmRovWeight", 1.331);
|
|
|
double fmRovSquareWeight = mergeWeight.getOrDefault("fmRovSquareWeight", -6.4597);
|
|
|
double fmRovCubeWeight = mergeWeight.getOrDefault("fmRovCubeWeight", 14.393);
|
|
|
+ double xgbNorScaleType = mergeWeight.getOrDefault("xgbNorScaleType", 0.0);
|
|
|
double xgbNorBias = mergeWeight.getOrDefault("xgbNorBias", -1.6945);
|
|
|
double xgbNorWeight = mergeWeight.getOrDefault("xgbNorWeight", 1.8968);
|
|
|
+ double xgbNorPowerWeight = mergeWeight.getOrDefault("xgbNorPowerWeight", 1.2216);
|
|
|
+ double xgbNorPowerExp = mergeWeight.getOrDefault("xgbNorPowerExp", 1.3217);
|
|
|
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 排序公式特征
|
|
@@ -355,7 +358,7 @@ public class RankStrategy4RegionMergeModelV564 extends RankStrategy4RegionMergeM
|
|
|
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 newNorXGBScore = norCalibration(xgbNorScaleType, xgbNorBias, xgbNorWeight, xgbNorPowerWeight, xgbNorPowerExp, norXGBScore);
|
|
|
double vor = Double.parseDouble(vid2MapFeature.getOrDefault(item.getVideoId() + "", new HashMap<>()).getOrDefault("vor", "0"));
|
|
|
item.getScoresMap().put("vor", vor);
|
|
|
score = newFmRov * (0.1 + newNorXGBScore) * (0.1 + vor);
|
|
@@ -507,11 +510,23 @@ public class RankStrategy4RegionMergeModelV564 extends RankStrategy4RegionMergeM
|
|
|
return newScore;
|
|
|
}
|
|
|
|
|
|
- private double norCalibration(double bias, double weight, double score) {
|
|
|
+ private double norCalibration(double scaleType, double polyBias, double polyWeight, double powerWeight, double powerExp, double score) {
|
|
|
+ if (scaleType < 1) {
|
|
|
+ return norPolyCalibration(polyBias, polyWeight, score);
|
|
|
+ } else {
|
|
|
+ return norPowerCalibration(powerWeight, powerExp, score);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private double norPolyCalibration(double bias, double weight, double score) {
|
|
|
double newScore = bias + weight * score;
|
|
|
if (newScore < 1E-8) {
|
|
|
newScore = 0;
|
|
|
}
|
|
|
return newScore;
|
|
|
}
|
|
|
+
|
|
|
+ private double norPowerCalibration(double weight, double exp, double score) {
|
|
|
+ return weight * Math.pow(score, exp);
|
|
|
+ }
|
|
|
}
|