|
@@ -10,7 +10,6 @@ import com.tzld.piaoquan.recommend.server.gen.recommend.LRSamples;
|
|
|
import com.tzld.piaoquan.recommend.server.gen.recommend.BaseFeature;
|
|
|
|
|
|
|
|
|
-
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
|
|
@@ -23,19 +22,23 @@ public class VlogAdCtrLRFeatureExtractor extends LRBytesFeatureExtractorBase {
|
|
|
// TODO
|
|
|
// 补充待抽取的context feature
|
|
|
public void getContextFeatures(AdRequestContextBytesFeature requestContextBytes) {
|
|
|
- makeFea(VlogAdFeatureGroup.MACHINEINFO_BRAND, requestContextBytes.getMachineinfo_brand());
|
|
|
- makeFea(VlogAdFeatureGroup.MACHINEINFO_MODEL, requestContextBytes.getMachineinfo_model());
|
|
|
- makeFea(VlogAdFeatureGroup.MACHINEINFO_SDKVERSION, requestContextBytes.getMachineinfo_sdkversion());
|
|
|
- makeFea(VlogAdFeatureGroup.MACHINEINFO_WECHATVERSION, requestContextBytes.getMachineinfo_brand());
|
|
|
|
|
|
makeFea(VlogAdFeatureGroup.DAY, requestContextBytes.getWeek());
|
|
|
makeFea(VlogAdFeatureGroup.WEEK, requestContextBytes.getWeek());
|
|
|
makeFea(VlogAdFeatureGroup.HOUR, requestContextBytes.getHour());
|
|
|
-
|
|
|
+ makeFea(VlogAdFeatureGroup.REGION, requestContextBytes.getRegion());
|
|
|
+ makeFea(VlogAdFeatureGroup.CITY, requestContextBytes.getCity());
|
|
|
}
|
|
|
|
|
|
//TODO
|
|
|
public void getUserFeatures(UserAdBytesFeature userAdBytesFeature) {
|
|
|
+ // user group
|
|
|
+ makeFea(VlogAdFeatureGroup.MACHINEINFO_BRAND, userAdBytesFeature.getMachineinfo_brand());
|
|
|
+ makeFea(VlogAdFeatureGroup.MACHINEINFO_PLATFORM, userAdBytesFeature.getMachineinfo_platform());
|
|
|
+ makeFea(VlogAdFeatureGroup.MACHINEINFO_MODEL, userAdBytesFeature.getMachineinfo_model());
|
|
|
+ makeFea(VlogAdFeatureGroup.MACHINEINFO_SYSTEM, userAdBytesFeature.getMachineinfo_system());
|
|
|
+ makeFea(VlogAdFeatureGroup.MACHINEINFO_SDKVERSION, userAdBytesFeature.getMachineinfo_system());
|
|
|
+
|
|
|
|
|
|
// 1day features
|
|
|
makeFea(VlogAdFeatureGroup.USER_1DAY_EXP, userAdBytesFeature.getDay1_cnt_features().get("view"));
|
|
@@ -72,8 +75,6 @@ public class VlogAdCtrLRFeatureExtractor extends LRBytesFeatureExtractorBase {
|
|
|
makeFea(VlogAdFeatureGroup.CAMPAIGIN, item.getCampaignId());
|
|
|
makeFea(VlogAdFeatureGroup.ADVERID, item.getAdvertiserId());
|
|
|
|
|
|
-
|
|
|
-
|
|
|
// 1day features
|
|
|
makeFea(VlogAdFeatureGroup.ITEM_1DAY_EXP, item.getDay1_cnt_features().get("view"));
|
|
|
makeFea(VlogAdFeatureGroup.ITEM_1DAY_CLICK, item.getDay1_cnt_features().get("click"));
|
|
@@ -100,8 +101,85 @@ public class VlogAdCtrLRFeatureExtractor extends LRBytesFeatureExtractorBase {
|
|
|
makeFea(VlogAdFeatureGroup.ITEM_3MONTH_CTR, item.getMonth3_cnt_features().get("ctr"));
|
|
|
makeFea(VlogAdFeatureGroup.ITEM_3MONTH_CVR, item.getMonth3_cnt_features().get("cvr"));
|
|
|
|
|
|
+
|
|
|
+ // creativeid 维度
|
|
|
+ // 1day features
|
|
|
+ makeFea(VlogAdFeatureGroup.CREATIVE_1DAY_CTR, item.getCreative_day1_cnt_features().get("view"));
|
|
|
+ makeFea(VlogAdFeatureGroup.CREATIVE_1DAY_CLICK, item.getCreative_day1_cnt_features().get("click"));
|
|
|
+ makeFea(VlogAdFeatureGroup.CREATIVE_1DAY_CTR, item.getCreative_day1_cnt_features().get("ctr"));
|
|
|
+ makeFea(VlogAdFeatureGroup.CREATIVE_1DAY_CVR, item.getCreative_day1_cnt_features().get("cvr"));
|
|
|
+
|
|
|
+ // 3day features
|
|
|
+ makeFea(VlogAdFeatureGroup.CREATIVE_3DAY_EXP, item.getCreative_day3_cnt_features().get("view"));
|
|
|
+ makeFea(VlogAdFeatureGroup.CREATIVE_3DAY_CLICK, item.getCreative_day3_cnt_features().get("click"));
|
|
|
+ makeFea(VlogAdFeatureGroup.CREATIVE_3DAY_CTR, item.getCreative_day3_cnt_features().get("ctr"));
|
|
|
+ makeFea(VlogAdFeatureGroup.CREATIVE_3DAY_CVR, item.getCreative_day3_cnt_features().get("cvr"));
|
|
|
+
|
|
|
+ // 7day features
|
|
|
+ makeFea(VlogAdFeatureGroup.CREATIVE_7DAY_EXP, item.getCreative_day7_cnt_features().get("view"));
|
|
|
+ makeFea(VlogAdFeatureGroup.CREATIVE_7DAY_CLICK, item.getCreative_day7_cnt_features().get("click"));
|
|
|
+ makeFea(VlogAdFeatureGroup.CREATIVE_7DAY_CTR, item.getCreative_day7_cnt_features().get("ctr"));
|
|
|
+ makeFea(VlogAdFeatureGroup.CREATIVE_7DAY_CVR, item.getCreative_day7_cnt_features().get("cvr"));
|
|
|
+
|
|
|
+ // 3month features
|
|
|
+ makeFea(VlogAdFeatureGroup.CREATIVE_3MONTH_EXP, item.getCreative_month3_cnt_features().get("view"));
|
|
|
+ makeFea(VlogAdFeatureGroup.CREATIVE_3MONTH_CLICK, item.getCreative_month3_cnt_features().get("click"));
|
|
|
+ makeFea(VlogAdFeatureGroup.CREATIVE_3MONTH_CTR, item.getCreative_month3_cnt_features().get("ctr"));
|
|
|
+ makeFea(VlogAdFeatureGroup.CREATIVE_3MONTH_CVR, item.getCreative_month3_cnt_features().get("cvr"));
|
|
|
+
|
|
|
+
|
|
|
+ // advertiserid 维度
|
|
|
+ // 1day features
|
|
|
+ makeFea(VlogAdFeatureGroup.ADVERID_1DAY_EXP, item.getAdvertiser_day1_cnt_features().get("view"));
|
|
|
+ makeFea(VlogAdFeatureGroup.ADVERID_1DAY_CLICK, item.getAdvertiser_day1_cnt_features().get("click"));
|
|
|
+ makeFea(VlogAdFeatureGroup.ADVERID_1DAY_CTR, item.getAdvertiser_day1_cnt_features().get("ctr"));
|
|
|
+ makeFea(VlogAdFeatureGroup.ADVERID_1DAY_CVR, item.getAdvertiser_day1_cnt_features().get("cvr"));
|
|
|
+
|
|
|
+ // 3day features
|
|
|
+ makeFea(VlogAdFeatureGroup.ADVERID_3DAY_EXP, item.getCreative_day3_cnt_features().get("view"));
|
|
|
+ makeFea(VlogAdFeatureGroup.ADVERID_3DAY_CLICK, item.getCreative_day3_cnt_features().get("click"));
|
|
|
+ makeFea(VlogAdFeatureGroup.ADVERID_3DAY_CTR, item.getCreative_day3_cnt_features().get("ctr"));
|
|
|
+ makeFea(VlogAdFeatureGroup.ADVERID_3DAY_CVR, item.getCreative_day3_cnt_features().get("cvr"));
|
|
|
+
|
|
|
+ // 7day features
|
|
|
+ makeFea(VlogAdFeatureGroup.ADVERID_7DAY_EXP, item.getCreative_day7_cnt_features().get("view"));
|
|
|
+ makeFea(VlogAdFeatureGroup.ADVERID_7DAY_CLICK, item.getCreative_day7_cnt_features().get("click"));
|
|
|
+ makeFea(VlogAdFeatureGroup.ADVERID_7DAY_CTR, item.getCreative_day7_cnt_features().get("ctr"));
|
|
|
+ makeFea(VlogAdFeatureGroup.ADVERID_7DAY_CVR, item.getCreative_day7_cnt_features().get("cvr"));
|
|
|
+
|
|
|
+ // 3month features
|
|
|
+ makeFea(VlogAdFeatureGroup.ADVERID_3MONTH_EXP, item.getCreative_month3_cnt_features().get("view"));
|
|
|
+ makeFea(VlogAdFeatureGroup.ADVERID_3MONTH_CLICK, item.getCreative_month3_cnt_features().get("click"));
|
|
|
+ makeFea(VlogAdFeatureGroup.ADVERID_3MONTH_CTR, item.getCreative_month3_cnt_features().get("ctr"));
|
|
|
+ makeFea(VlogAdFeatureGroup.ADVERID_3MONTH_CVR, item.getCreative_month3_cnt_features().get("cvr"));
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
+ // 增加广告交叉特征
|
|
|
+ public void getCrossFeature(AdItemBytesFeature itemBytesFeature, AdRequestContextBytesFeature requestContextByte, UserAdBytesFeature userAdBytesFeature) {
|
|
|
+ // creative and hour
|
|
|
+ makeFea(VlogAdFeatureGroup.CREATIVE_AND_HOUR, itemBytesFeature.getCreative(), requestContextByte.getHour());
|
|
|
+ makeFea(VlogAdFeatureGroup.ADVERID_AND_HOUR, itemBytesFeature.getAdvertiserId(), requestContextByte.getHour());
|
|
|
+ makeFea(VlogAdFeatureGroup.CREATIVE_AND_REGION, itemBytesFeature.getCreative(), requestContextByte.getRegion());
|
|
|
+ makeFea(VlogAdFeatureGroup.ADVERID_AND_REGION, itemBytesFeature.getAdvertiserId(), requestContextByte.getRegion());
|
|
|
+ makeFea(VlogAdFeatureGroup.CREATIVE_AND_MACHINEINFO_MODEL, itemBytesFeature.getCreative(), userAdBytesFeature.getMachineinfo_model());
|
|
|
+ makeFea(VlogAdFeatureGroup.ADVERID_AND_MACHINEINFO_MODEL, itemBytesFeature.getAdvertiserId(), userAdBytesFeature.getMachineinfo_model());
|
|
|
+ makeFea(VlogAdFeatureGroup.CREATIVE_AND_MACHINEINFO_BRAND, itemBytesFeature.getCreative(), userAdBytesFeature.getMachineinfo_brand());
|
|
|
+ makeFea(VlogAdFeatureGroup.ADVERID_AND_MACHINEINFO_BRAND, itemBytesFeature.getAdvertiserId(), userAdBytesFeature.getMachineinfo_brand());
|
|
|
+
|
|
|
+ makeFea(VlogAdFeatureGroup.CREATIVE_AND_MACHINEINFO_SYSTEM, itemBytesFeature.getCreative(), userAdBytesFeature.getMachineinfo_system());
|
|
|
+ makeFea(VlogAdFeatureGroup.ADVERID_AND_MACHINEINFO_SYSTEM, itemBytesFeature.getAdvertiserId(), userAdBytesFeature.getMachineinfo_system());
|
|
|
+ makeFea(VlogAdFeatureGroup.CREATIVE_AND_USER_3MONTH_CTR, itemBytesFeature.getCreative(), userAdBytesFeature.getMonth3_cnt_features().get("ctr"));
|
|
|
+ makeFea(VlogAdFeatureGroup.ADVERID_AND_USER_3MONTH_CTR, itemBytesFeature.getAdvertiserId(), userAdBytesFeature.getMonth3_cnt_features().get("ctr"));
|
|
|
+
|
|
|
+ makeFea(VlogAdFeatureGroup.USER_3MONTH_CTR_AND_ITEM_7DAY_CTR, userAdBytesFeature.getMonth3_cnt_features().get("ctr"), itemBytesFeature.getCreative_day7_cnt_features().get("ctr"));
|
|
|
+ makeFea(VlogAdFeatureGroup.USER_3MONTH_CTR_AND_ITEM_3DAY_CTR, userAdBytesFeature.getMonth3_cnt_features().get("ctr"), itemBytesFeature.getCreative_day3_cnt_features().get("ctr"));
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
public synchronized LRSamples single(UserAdBytesFeature userAdBytesFeature,
|
|
|
AdItemBytesFeature videoBytesFeature,
|
|
@@ -116,7 +194,7 @@ public class VlogAdCtrLRFeatureExtractor extends LRBytesFeatureExtractorBase {
|
|
|
lr.setGroupNum(groupCount);
|
|
|
List<FeatureGroup> keys = new ArrayList<>(features.keySet());
|
|
|
int count = 0;
|
|
|
- for(FeatureGroup group : keys) {
|
|
|
+ for (FeatureGroup group : keys) {
|
|
|
List<BaseFeature> fea = features.get(group);
|
|
|
GroupedFeature.Builder gf = GroupedFeature.newBuilder();
|
|
|
gf.setGroup(group);
|