|
@@ -29,7 +29,7 @@ import java.util.concurrent.Future;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
-import static com.tzld.piaoquan.ad.engine.commons.math.Const.WILSON_ZSCORE;
|
|
|
+import static com.tzld.piaoquan.ad.engine.commons.math.Const.*;
|
|
|
|
|
|
@Slf4j
|
|
|
@Component
|
|
@@ -215,6 +215,7 @@ public class RankStrategyBy683 extends RankStrategyBasic {
|
|
|
long time5 = System.currentTimeMillis();
|
|
|
|
|
|
// calibrate score for negative sampling
|
|
|
+ /* 02-11 update: 因模型换回基线无采样模型,取消校准
|
|
|
for (AdRankItem item : result) {
|
|
|
double originalScore = item.getLrScore();
|
|
|
double calibratedScore = originalScore / (originalScore + (1 - originalScore) / negSampleRate);
|
|
@@ -222,6 +223,7 @@ public class RankStrategyBy683 extends RankStrategyBasic {
|
|
|
item.getScoreMap().put("originCtcvrScore", originalScore);
|
|
|
item.getScoreMap().put("ctcvrScore", calibratedScore);
|
|
|
}
|
|
|
+ */
|
|
|
|
|
|
// loop
|
|
|
double cpmCoefficient = weightParam.getOrDefault("cpmCoefficient", 0.9);
|
|
@@ -330,12 +332,12 @@ public class RankStrategyBy683 extends RankStrategyBasic {
|
|
|
double conver = Double.parseDouble(feature.getOrDefault("ad_conversion_" + time, "0"));
|
|
|
double income = Double.parseDouble(feature.getOrDefault("ad_income_" + time, "0"));
|
|
|
double cpc = NumUtil.div(income, click);
|
|
|
- double ctr = NumUtil.divSmoothV1(click, view, WILSON_ZSCORE);
|
|
|
- double ctcvr = NumUtil.divSmoothV1(conver, view, WILSON_ZSCORE);
|
|
|
+ double ctr = NumUtil.divSmoothV2(click, view, CTR_SMOOTH_BETA_FACTOR);
|
|
|
+ double ctcvr = NumUtil.divSmoothV2(conver, view, CTCVR_SMOOTH_BETA_FACTOR);
|
|
|
double ecpm = ctr * cpc * 1000;
|
|
|
cidFeatureMap.put(prefix + "_" + time + "_ctr", String.valueOf(ctr));
|
|
|
cidFeatureMap.put(prefix + "_" + time + "_ctcvr", String.valueOf(ctcvr));
|
|
|
- cidFeatureMap.put(prefix + "_" + time + "_cvr", String.valueOf(NumUtil.divSmoothV1(conver, click, WILSON_ZSCORE)));
|
|
|
+ cidFeatureMap.put(prefix + "_" + time + "_cvr", String.valueOf(NumUtil.divSmoothV2(conver, click, CVR_SMOOTH_BETA_FACTOR)));
|
|
|
cidFeatureMap.put(prefix + "_" + time + "_conver", String.valueOf(conver));
|
|
|
cidFeatureMap.put(prefix + "_" + time + "_ecpm", String.valueOf(ecpm));
|
|
|
|
|
@@ -365,12 +367,12 @@ public class RankStrategyBy683 extends RankStrategyBasic {
|
|
|
double conver = Double.parseDouble(feature.getOrDefault("ad_conversion_" + time, "0"));
|
|
|
double income = Double.parseDouble(feature.getOrDefault("ad_income_" + time, "0"));
|
|
|
double cpc = NumUtil.div(income, click);
|
|
|
- double ctr = NumUtil.divSmoothV1(click, view, WILSON_ZSCORE);
|
|
|
- double ctcvr = NumUtil.divSmoothV1(conver, view, WILSON_ZSCORE);
|
|
|
+ double ctr = NumUtil.divSmoothV2(click, view, CTR_SMOOTH_BETA_FACTOR);
|
|
|
+ double ctcvr = NumUtil.divSmoothV2(conver, view, CTCVR_SMOOTH_BETA_FACTOR);
|
|
|
double ecpm = ctr * cpc * 1000;
|
|
|
cidFeatureMap.put(prefix + "_" + time + "_ctr", String.valueOf(ctr));
|
|
|
cidFeatureMap.put(prefix + "_" + time + "_ctcvr", String.valueOf(ctcvr));
|
|
|
- cidFeatureMap.put(prefix + "_" + time + "_cvr", String.valueOf(NumUtil.divSmoothV1(conver, click, WILSON_ZSCORE)));
|
|
|
+ cidFeatureMap.put(prefix + "_" + time + "_cvr", String.valueOf(NumUtil.divSmoothV2(conver, click, CVR_SMOOTH_BETA_FACTOR)));
|
|
|
cidFeatureMap.put(prefix + "_" + time + "_conver", String.valueOf(conver));
|
|
|
cidFeatureMap.put(prefix + "_" + time + "_ecpm", String.valueOf(ecpm));
|
|
|
|
|
@@ -461,10 +463,10 @@ public class RankStrategyBy683 extends RankStrategyBasic {
|
|
|
double conver = Double.parseDouble(d1Feature.getOrDefault("ad_conversion_" + prefix, "0"));
|
|
|
double income = Double.parseDouble(d1Feature.getOrDefault("ad_income_" + prefix, "0"));
|
|
|
double cpc = NumUtil.div(income, click);
|
|
|
- double ctr = NumUtil.divSmoothV1(click, view, WILSON_ZSCORE);
|
|
|
+ double ctr = NumUtil.divSmoothV2(click, view, CTR_SMOOTH_BETA_FACTOR);
|
|
|
featureMap.put("d1_feature_" + prefix + "_ctr", String.valueOf(ctr));
|
|
|
- featureMap.put("d1_feature_" + prefix + "_ctcvr", String.valueOf(NumUtil.divSmoothV1(conver, view, WILSON_ZSCORE)));
|
|
|
- featureMap.put("d1_feature_" + prefix + "_cvr", String.valueOf(NumUtil.divSmoothV1(conver, click, WILSON_ZSCORE)));
|
|
|
+ featureMap.put("d1_feature_" + prefix + "_ctcvr", String.valueOf(NumUtil.divSmoothV2(conver, view, CTCVR_SMOOTH_BETA_FACTOR)));
|
|
|
+ featureMap.put("d1_feature_" + prefix + "_cvr", String.valueOf(NumUtil.divSmoothV2(conver, click, CVR_SMOOTH_BETA_FACTOR)));
|
|
|
featureMap.put("d1_feature_" + prefix + "_conver", String.valueOf(conver));
|
|
|
featureMap.put("d1_feature_" + prefix + "_ecpm", String.valueOf(ctr * cpc * 1000));
|
|
|
}
|
|
@@ -609,7 +611,7 @@ public class RankStrategyBy683 extends RankStrategyBasic {
|
|
|
return;
|
|
|
}
|
|
|
synchronized (this) {
|
|
|
- String bucketFile = "20250113_ad_bucket_688.txt";
|
|
|
+ String bucketFile = "20240718_ad_bucket_688.txt";
|
|
|
InputStream resourceStream = RankStrategyBy683.class.getClassLoader().getResourceAsStream(bucketFile);
|
|
|
if (resourceStream != null) {
|
|
|
try (BufferedReader reader = new BufferedReader(new InputStreamReader(resourceStream))) {
|