Skip to content

for-competition/2019-Tencent-AD-algorithm-contest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 

Repository files navigation

环境配置:python 3.6.6

数据集详情

广告的流量覆盖取决于广告的人群定向(匹配对应特征的用户数量)、广告素材尺寸(匹配的广告位)以及投放时段预算 等设置项

影响广告竞争力的主要有出价、广告质量等因素(如点击率pctr/转化率pcvr等)以及对用户体验的控制策略

基本竞争力可以用千次曝光收益(epcm): ecpm = 1000 * cpc_bid * pctr = 1000 * cpa_bid * pctr * pcvr

其中, cpc, cpa分别代表按点击付费模式按转化付费模式.等式1决定广告能参与竞争的次数以及竞争对象,等式2决定在每次竞 争中的胜出概率.二者最终决定广告每天的曝光量.

当新增一条广告请求时,系统会自动执行召回候选广告和排序筛选两个步骤。召回的条件是判断广告自身的定向设置、时段设置、素材尺 寸是否和当前请求的用户属性、请求时间、广告位规格相匹配。召回之后的候选广告队列会按照一定规则排序。为平衡平台收益和用户体 验,排序使用的是广义的eCPM(千次曝光消耗)指标来排序,其中包括:直接与bid(广告主愿意为每次点击付出的钱)、pctr(广告的 预估点击率)相关的basic_eCPM;以及和用户体验相关的quality_eCPM。所以易知,同一个广告bid越大,total_eCPM越高,排第一的可 能性越高,获得曝光的机会越大。这也是竞价广告机制的特性之一。

因此,当广告的出价、定向、投放时段和素材被设定好之后,它覆盖的人群范围和实际竞争环境、自身竞争能力就能够大致确定,也就基 本决定了广告的日曝光量级。假设我们的广告主投放相对稳定,没有突然出现大广告主出高价竞争,流量也无特别大的波动(比如节假 日、购物节等)。这样我们就可以据此预估广告每日曝光。召回的条件是判断广告自身的定向设置、时段设置、素材尺寸是否和当前请求 的用户属性、请求时间、广告位规格相匹配

totalExposureLog.out

无缺失值数据,每行数据定长

bid * pctr + quality_ecpm = totalEpm. quality_ecpm 可能小于0, 如果totalEpm小于1,重置为1.0

广告请求id 广告位id 广告id的区别?

1. 广告请求 id:唯一标识每次请求(每个请求对应一个用户某一时刻,可能多个广告位)
2. 广告请求时间:该字段为时间戳,即 1970 纪元后经过的浮点秒数
3. 广告位 id:加密后无业务含义,只区分不同广告位,每个广告位只能曝光特定素材尺寸的广告
4. 用户 id(即看广告的人):加密后无业务含义,只区分不同用户,可和后面的用户特征数据中 id 相关联
5. 曝光广告 id:加密后无业务含义,只区分不同广告,可以和广告特征文件中的广告 id 关联
6. 曝光广告素材尺寸:枚举型取值,不同广告位对素材的尺寸要求不同,同一个广告位可能适配多个不同尺寸的素材
7. 曝光广告出价 bid:这里只记录 cpc 出价,非 cpc 广告此处记录折算后的 cpc 价格
8. 曝光广告 pctr:预估的 pctr,和 bid 相乘得到 basic_ecpm
9. 曝光广告 quality_ecpm:将广告质量和用户体验等因素折算成 ecpm 的分数,主要影响因素有 pctr/pcvr/窄定向等
10.曝光广告 totalEcpm:广告排序的分数依据,由 basic_ecpm(点击) 和 quality_ecpm(转化) 相加得到

ad_static_feature.out

该类广告属性一般从广告创建后无法修改.所有 id 类数据均为加密后随机映射.

素材尺寸可能有多个,商品id可能为空(推广目标为落地页)/可能有多个, 广告行业id可能有多个,

1. 广告 id:和曝光日志中的广告 id 相关联
2. 创建时间:广告创建时的时间戳, 可能为0
3. 广告账户 id:广告所在账户的唯一标识,账户结构分为四级:账户——推广计划——广告——素材
4. 商品 id:广告推广目标的唯一标识,若推广目标是落地页,则该字段为空
5. 商品类型:广告推广目标的类型,枚举型
6. 广告行业 id:广告所属的行业类别标识
7. 素材尺寸:不同广告位对素材的尺寸要求不同,同一个广告可能有多个不同尺寸的素材,用逗号分隔

ad_operation.dat

修改的历史记录是否有意义?还是只需要最后的状态? 1. 广告 id(同上) 2. 创建/修改时间: 即广告创建或者修改设置的时间 3. 操作类型:1-修改,2-新建 4. 修改字段:1-广告状态,2-出价,3-人群定向,4-广告时段设置 5. 操作后的字段值: (1) 广告状态取值:1-正常,0-失效 (2) 出价:整数(单位分) (3) 投放时段:字符串.包含7个64位无符号整型数字(逗号分隔),每个整数分别代表周一到周日的投放时段.该整数转为2进 制后从低到高48位bit 代表全天各时段(半小时为一时间窗口)是否投放,1-投放,0-不投. 17179865088= 1111111111111111111111000000000000,代表投放时段为 6:00-17:00 281474976710655=111111111111111111111111111111111111111111111111,代表全天投放. (4) 人群定向:字符串.格式如下: feature_name1:feature_value1,feature_value2|feature_name2:feature_value3,feature_value4|… 此处 feature_name 取值同用户属性文件中的各列属性名,feature_value 取值id同用户属性文件中的定义. 广告通过人群定向的设置来召回对应的用户请求,对应的人群规则:不同feature_name是求交集,同一featurename下不同 的 value 求并集,未定义的feature_name 则表示该维度不限.举例如: age:51,62,73,84|gender:1|area:1,3,5 ; 则表示该广告能被“(年龄id为51或62或73或84)且(性别取值为1)且(地域取值为 1或3或5)”的用户召回(即在这些用户上有曝光机会).

user_data

用户特征字段未知的均使用0表示.每列特征取值都用加密后的id表示,均为随机映射.不同列的id取值区间会重复.

1. 用户 id:此处和上面曝光日志文件中的用户id关联
2. 年龄(Age):每个取值随机映射为[1-N]的唯一id
3. 性别(Gender):男/女
4. 地域(area):每个省/市用唯一id标识,可能多标签,使用逗号分隔不同 id
5. 婚恋状态(Status):单身/已婚等状态,可能去多值,使用逗号分隔
6. 学历(Education):博士/硕士/本科/高中/初中/小学
7. 消费能力(ConsuptionAbility):高/低
8. 设备(device):IOS/Android, 不区分版本号
8. 工作状态(work):在校大学生/商旅人士/政府公职人员/科研教育者/IT 互联网工作者/医护工作者, 可能取多值,逗号分隔
9. 连接类型(ConnectionType):无线/2G/3G/4G
10.行为兴趣(behavior):每个兴趣点一个 id,可多值,逗号分隔

test_sample.dat(测试集数据)

由于要评估出价相关性,故测试数据中一条广告 id 会对应多条不同出价的样本.

1. 样本 id
2. 广告 id
3. 创建时间
4. 素材尺寸
5. 广告行业 id
6. 商品类型
7. 商品 id
8. 广告账户 id
9. 投放时段
10. 人群定向
11. 出价(单位分)

About

For 2019 Tencent AD algorithm contest

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages