gufengshou1 1 год назад
Родитель
Сommit
24fdd76b5d

+ 2 - 2
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/predict/model/threshold/ScoreV2ThresholdPredictModel.java

@@ -101,8 +101,8 @@ public class ScoreV2ThresholdPredictModel extends ThresholdPredictModel {
         }
         if(maxItem != null){
             ThresholdModelContainer.mergingDigestAddScore(maxItem.getScore());
-            log.info("svc=ScoreV2ThresholdPredictModel_predict modelName=ScoreV2ThresholdPredictModel maxItem={} extraParam={}",
-                    JSONObject.toJSONString(maxItem), JSONObject.toJSONString(scoreParam.getExtraParam()));
+            log.info("svc=ScoreV2ThresholdPredictModel_predict modelName=ScoreV2ThresholdPredictModel maxItem={} extraParam={} app_type={} realThreshold={}",
+                    JSONObject.toJSONString(maxItem), JSONObject.toJSONString(scoreParam.getExtraParam()),modelParam.getAppType(),realThreshold);
         }
 
         Map<String, Object> result = new HashMap<>();

+ 6 - 3
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/VlogMergeBreakScorer.java

@@ -30,9 +30,11 @@ public class VlogMergeBreakScorer extends BaseLRModelScorer {
     public List<AdRankItem> scoring(final ScoreParam param,
                                     final UserAdFeature userFeature,
                                     final List<AdRankItem> rankItems) {
-        double a,b,c;
+        double a,b,c,strW,rosW;
         a=Double.parseDouble(param.getExtraParam().getOrDefault("mergeBreakCtrCvrW",0.2).toString());
         b=Double.parseDouble(param.getExtraParam().getOrDefault("mergeBreakStrRosW",1d).toString());
+        strW=Double.parseDouble(param.getExtraParam().getOrDefault("mergeBreakStrW",b).toString());
+        rosW=Double.parseDouble(param.getExtraParam().getOrDefault("mergeBreakRosW",b).toString());
         c=Double.parseDouble(param.getExtraParam().getOrDefault("mergeBreakW",1d).toString());
 
         for (AdRankItem item : rankItems) {
@@ -42,9 +44,10 @@ public class VlogMergeBreakScorer extends BaseLRModelScorer {
             double ros = item.getRos();
 
             BigDecimal ctrCvr = new BigDecimal(Math.pow(70 * ctr * cvr, a));
-            BigDecimal strRos = new BigDecimal(Math.pow(str * ros, b));
+            BigDecimal strBG = new BigDecimal(Math.pow(str, strW));
+            BigDecimal rosBG = new BigDecimal(Math.pow(ros, rosW));
             BigDecimal breakRate = new BigDecimal(Math.pow(item.getBreakRate(), c));
-            BigDecimal score = ctrCvr.divide(strRos.multiply(breakRate), 5, BigDecimal.ROUND_HALF_UP);
+            BigDecimal score = ctrCvr.divide(strBG.multiply(rosBG).multiply(breakRate), 5, BigDecimal.ROUND_HALF_UP);
 
             item.setScore(score.doubleValue());
         }