|
|
@@ -104,10 +104,10 @@ public class PredictStrategyByFissionRateCopy extends BasicPredict {
|
|
|
Map<String, Object> rtnMap = new HashMap<>();
|
|
|
|
|
|
// 用户行为特征变量(来自离线特征表 alg_mid_history_behavior_1month)
|
|
|
- String launchs = null; // 启动次数分桶(如 "0-5", "5-10" 等)
|
|
|
- String ror = null; // 留存率分桶
|
|
|
- String adLevel = null; // 广告等级(用户对广告的敏感度分层)
|
|
|
- String return30day = null; // 用户回流率分桶
|
|
|
+ String launchs = "-999"; // 启动次数分桶(如 "0-5", "5-10" 等)
|
|
|
+ String ror = "-999"; // 留存率分桶
|
|
|
+ String adLevel = "无转化"; // 广告等级(用户对广告的敏感度分层)
|
|
|
+ String return30day = "r_0_8"; // 用户回流率分桶
|
|
|
|
|
|
// 根据 mid 获取用户近一个月的历史行为特征
|
|
|
Feature feature = featureService.getMidBehaviorFeature(TABLE_NAME, ctx.getMid());
|
|
|
@@ -117,10 +117,10 @@ public class PredictStrategyByFissionRateCopy extends BasicPredict {
|
|
|
// 安全地提取特征值(多层 null 检查)
|
|
|
if (feature != null && feature.getUserFeature() != null && feature.getUserFeature().get(TABLE_NAME) != null) {
|
|
|
Map<String, String> algMidHistoryBehavior1month = feature.getUserFeature().get(TABLE_NAME);
|
|
|
- launchs = algMidHistoryBehavior1month.get("launchs");
|
|
|
- ror = algMidHistoryBehavior1month.get("ror");
|
|
|
- adLevel = algMidHistoryBehavior1month.get("ad_level");
|
|
|
- return30day = algMidHistoryBehavior1month.get("return_30day");
|
|
|
+ launchs = StringUtils.isBlank(algMidHistoryBehavior1month.get("launchs")) ? launchs : algMidHistoryBehavior1month.get("launchs");
|
|
|
+ ror = StringUtils.isBlank(algMidHistoryBehavior1month.get("ror")) ? ror : algMidHistoryBehavior1month.get("ror");
|
|
|
+ adLevel = StringUtils.isBlank(algMidHistoryBehavior1month.get("ad_level")) ? adLevel : algMidHistoryBehavior1month.get("ad_level");
|
|
|
+ return30day = StringUtils.isBlank(algMidHistoryBehavior1month.get("return_30day")) ? return30day : algMidHistoryBehavior1month.get("return_30day");
|
|
|
}
|
|
|
|
|
|
// 计算最终的广告展示概率阈值
|