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