Bladeren bron

Merge branch 'ad-abtest-update-2022122215'

liqian 2 jaren geleden
bovenliggende
commit
fbae3bb684
2 gewijzigde bestanden met toevoegingen van 31 en 5 verwijderingen
  1. 21 5
      ad_user_video_predict.py
  2. 10 0
      config.py

+ 21 - 5
ad_user_video_predict.py

@@ -106,6 +106,21 @@ def predict_ad_group_video(dt, config_key, config_param):
         for key, val in threshold_data.items():
             key_name = f"{config_.KEY_NAME_PREFIX_AD_THRESHOLD}{abtest_id}:{abtest_config_tag}:{abtest_group}:{key}"
             redis_helper.set_data_to_redis(key_name=key_name, value=val, expire_time=2 * 24 * 3600)
+
+        # 计算关怀模式实验阈值 并 写入Redis
+        care_model = config_param.get('care_model', None)
+        threshold_rate = config_param.get('threshold_rate', None)
+        if care_model is True:
+            care_model_threshold_data = {}
+            for key, val in threshold_data.items():
+                up_val = val * threshold_rate
+                care_model_threshold_data[key] = up_val
+                up_key_name = \
+                    f"{config_.KEY_NAME_PREFIX_AD_THRESHOLD_CARE_MODEL}{abtest_id}:{abtest_config_tag}:{abtest_group}:{key}"
+                redis_helper.set_data_to_redis(key_name=up_key_name, value=up_val, expire_time=2 * 24 * 3600)
+            log_.info(f"config_key = {config_key}, abtest_group = {abtest_group}, "
+                      f"care_model_threshold_data = {care_model_threshold_data}")
+
     # predict_df.to_csv(f'./data/ad_user_video_predict_{config_key}.csv')
     log_.info(f"config_key = {config_key} update end!")
 
@@ -119,11 +134,12 @@ def predict():
     for config_key, config_param in params.items():
         predict_ad_group_video(dt=dt, config_key=config_key, config_param=config_param)
         # 阈值参数记录
-    #     for abtest_group, ad_threshold_mapping in config_param['threshold'].items():
-    #         threshold_record[f"{config_key}-{abtest_group}"] = ad_threshold_mapping['group']
-    # redis_helper.set_data_to_redis(key_name=config_.KEY_NAME_PREFIX_AD_THRESHOLD_RECORD,
-    #                                value=str(threshold_record),
-    #                                expire_time=24*3600)
+        ad_threshold_mappings = config_.AD_ABTEST_THRESHOLD_CONFIG.get(config_key.split('-')[0])
+        for abtest_group, ad_threshold_mapping in ad_threshold_mappings.items():
+            threshold_record[f"{config_key}-{abtest_group}"] = ad_threshold_mapping['group']
+    redis_helper.set_data_to_redis(key_name=config_.KEY_NAME_PREFIX_AD_THRESHOLD_RECORD,
+                                   value=str(threshold_record),
+                                   expire_time=24*3600)
 
 
 if __name__ == '__main__':

+ 10 - 0
config.py

@@ -787,6 +787,14 @@ class BaseConfig(object):
                   'user': {'data': 'data1', 'rule': 'rule3'}},
         '173-d': {'video': {'data': 'data1:7days'},
                   'user': {'data': 'data1', 'rule': 'rule1'}},
+        '173-e': {'video': {'data': 'data1'},
+                  'user': {'data': 'data1', 'rule': 'rule2'},
+                  'care_model': True, 'threshold_rate': 0.9,  # 关怀模式实验阈值
+                  },
+        '173-f': {'video': {'data': 'data1'},
+                  'user': {'data': 'data1', 'rule': 'rule2'},
+                  'care_model': True, 'threshold_rate': 0.9,
+                  },
         # 票圈视频+
         '190-a': {'video': {'data': 'data1'},
                   'user': {'data': 'data1', 'rule': 'rule1'}},
@@ -991,6 +999,8 @@ class BaseConfig(object):
     KEY_NAME_PREFIX_MID_GROUP = 'mid:group:'
     # 广告推荐阈值结果存放 redis key 前缀,完整格式:ad:threshold:{abtestId}:{abtestConfigTag}:{abtestGroup}:{group}
     KEY_NAME_PREFIX_AD_THRESHOLD = 'ad:threshold:'
+    # 广告推荐关怀模式实验阈值结果存放 redis key 前缀,完整格式:ad:threshold:care:{abtestId}:{abtestConfigTag}:{abtestGroup}:{group}
+    KEY_NAME_PREFIX_AD_THRESHOLD_CARE_MODEL = 'ad:threshold:care:'
     # 广告推荐阈值计算记录存放 redis key,完整格式:ad:threshold:record
     KEY_NAME_PREFIX_AD_THRESHOLD_RECORD = 'ad:threshold:record'