在给大家分享知识的过程中,发现很多同学在学习竞赛都存在较多的问题:
而上述问题都是一个合格算法工程师必备的,本月我们将组织一次推荐系统竞赛训练营活动,希望能够帮助大家入门数据竞赛。在活动中我们将布置具体竞赛任务,然后参与的同学们不断闯关完成,尽可能的帮助大家入门。
8月份的竞赛活动将以华为全球AI算法赛,广告-信息流跨域CTR预估赛题展开。
为了激励各位同学完成的学习任务,将学习任务根据难度进行划分,并根据是否完成进行评分难度高中低的任务分别分数为3、2和1。在完成学习后(本次活动,截止8月31),将按照积分顺序进行评选 Top3 的学习者。
打卡链接:https://shimo.im/forms/iF1DJpH6GJAL8QGe/fill
打卡可以写在一个地址,每次有新完成的可以重复提交打卡!
Top1的学习者将获得以下奖励:
Top2-3的学习者将获得以下奖励:
历史活动打卡链接,可以参考如下格式:
昵称 | 得分 |
---|---|
liuxinhe894449 | 3 |
zuozuo | 3 |
Bisk | 3 |
Nothing | 3 |
Eureka | 1 |
AlexNet | 1 |
Jming ZHU | 1 |
KING小保 | 1 |
当且仅当 | 1 |
nyfzpf | |
Lynn | |
Joyce | |
liuxinhe894449 |
广告推荐主要基于用户对广告的历史曝光、点击等行为进行建模,如果只是使用广告域数据,用户行为数据稀疏,行为类型相对单一。而引入同一媒体的跨域数据,可以获得同一广告用户在其他域的行为数据,深度挖掘用户兴趣,丰富用户行为特征。引入其他媒体的广告用户行为数据,也能丰富用户和广告特征。
本赛题希望选手基于广告日志数据,用户基本信息和跨域数据优化广告ctr预估准确率。目标域为广告域,源域为信息流推荐域,通过获取用户在信息流域中曝光、点击信息流等行为数据,进行用户兴趣建模,帮助广告域CTR的精准预估。
比赛报名方法:https://shimo.im/docs/G9fZLTn1lbccQhkQ/read
提供的数据包括目标域用户行为数据,源域用户行为数据, 以下按照这2个维度分别 说明。
序号 | 字段名称 | 字段含义 | 是 否 可 为空 | 字段类 型 | 取值样例 |
---|---|---|---|---|---|
1 | label | 是否点击, 0:否, 1:是 | 否 | int | 0,1 |
2 | user_id | 用户 id | 否 | String | 1,2… |
3 | age | 年龄 | 是 | String | 1,2,3… |
4 | gender | 性别 | 是 | String | 1,2… |
5 | residence | 常住地-省份 | 是 | String | 1,2… |
6 | city | 常住地-市-编号 | 是 | String | 1,2… |
7 | city_rank | 常住地-市-等级 | 是 | String | 1,2… |
8 | series_dev | 设备系列 | 是 | String | 1,2… |
9 | series_group | 设备系列分组 | 是 | String | 1,2… |
10 | emui_dev | emui 版本号 | 是 | String | 1,2… |
11 | device_name | 用户使用的手机机型 | 是 | String | 1,2… |
12 | device_size | 用户使用手机的尺寸 | 是 | String | 1,2… |
13 | net_type | 行为发生的网络状态 | 是 | String | 1,2… |
14 | task_id | 广告任务唯一标识 | 是 | String | 1,2… |
15 | adv_id | 广告任务对应的素材 id | 是 | String | 1,2… |
16 | creat_type_cd | 素材的创意类型 id | 是 | String | 1,2… |
17 | adv_prim_id | 广告任务对应的广告主 id | 是 | String | 1,2… |
18 | inter_type_cd | 广告任务对应的素材的交 互类型 | 是 | String | 1,2… |
19 | slot_id | 广告位 id | 是 | String | 1,2… |
20 | site_id | 媒体 id | 是 | String | 1,2… |
21 | spread_app_id | 投放广告任务对应的应用 id | 是 | String | 1,2… |
22 | Tags | 广告任务对应的应用的标 签 | 是 | String | 1,2… |
23 | app_second_class | 广告任务对应的应用的二 级分类 | 是 | String | 1,2… |
24 | app_score | app 得分 | 是 | Int | 4 |
25 | ad_click_list_00 1 | 用户点击广告任务 id 列表 | 是 | [string,] | [1^2…] |
26 | ad_click_list_00 2 | 用户点击广告对应广告主 id 列表 | 是 | [string,] | [1^2…] |
27 | ad_click_list_00 3 | 用户点击广告推荐应用列 表 | 是 | [string,] | [1^2…] |
28 | ad_close_list_00 1 | 用户关闭广告任务列表 | 是 | [string,] | [1^2…] |
29 | ad_close_list_00 2 | 用户关闭广告对应广告主 列表 | 是 | [string,] | [1^2…] |
30 | ad_close_list_00 3 | 用户关闭广告推荐应用列 表 | 是 | [string,] | [1^2…] |
31 | pt_d | 时间戳 | 否 | String | 202205221430 |
32 | log_id | 样本 id | 否 | Int | 12345678 |
序号 | 字段名称 | 字段含义 | 是 否 可 为空 | 字段类 型 | 取值样例 |
---|---|---|---|---|---|
1 | u_userId | 用户标识 | 否 | String | 0001 |
2 | u_phonePrice | 用户手机价格 | 是 | String | 13 |
3 | u_browserLifeCycle | 浏览器用户活跃度 | 是 | String | 10 |
4 | u_browserMode | 浏览器业务类型 | 是 | String | 11 |
5 | u_feedLifeCycle | 信息流用户活跃度 | 是 | String | 12 |
6 | u_refreshTimes | 信息流日均有效刷新次数 | 是 | String | 16 |
7 | u_newsCatInterests | 信息流图文 点击 分类偏 好 | 是 | [string,] | [1^2…] |
8 | u_newsCatDislike | 信息流图文 负反馈 分类 偏好 | 是 | [string,] | [1^2…] |
9 | u_newsCatInteres tsST | 用户短时 兴趣 分类偏好 | 是 | [string,] | [1^2…] |
10 | u_click_ca2_news | 用户图文 类别 点击序列 | 是 | [string,] | [1^2…] |
11 | i_docId | 文章 docid | 是 | String | 0001 |
12 | i_s_sourceId | 文章来源的 sourceid | 是 | String | 0001 |
13 | i_regionEntity | 文章地域词 id | 是 | String | 0001 |
14 | i_cat | 文章类别 id | 是 | String | 0001 |
15 | i_entities | 文章实体词 id | 是 | [string,] | [1^2…] |
16 | i_dislikeTimes | 文章负反馈量 | 是 | String | 60 |
17 | i_upTimes | 文章点赞量 | 是 | String | 22 |
18 | I_dtype | 文章展现形式 | 是 | String | 20 |
19 | e_ch | 频道 | 是 | String | 1,2… |
20 | e_m | 事件来源设备机型 | 是 | String | 1,2… |
21 | e_po | 第几位 | 是 | String | 9 |
22 | e_pl | 拜访地 | 是 | String | 1,2… |
23 | e_rn | 第几刷 | 是 | String | 1 |
24 | e_section | 信息流场景类型 | 是 | String | 13 |
25 | e_et | 时间戳 | 否 | String | 202205221430 |
26 | label | 是否点击, -1:否, 1:是 | 否 | String | 1 |
27 | cilLabel | 是否点赞,-1:否, 1:是 | 否 | String | 1 |
28 | pro | 文章浏览进度 | 否 | String | 1,2… |
评估方式: 统计广告域的样本 CTR 预估值, 计算 GAUC 和 AUC
评测指标: 本次比赛使用 GAUC 和 AUC 的加权求和作为评估指标, 具体公式如下:$xAUC = \alpha * GAUC + \beta * AUC$
xAUC 越高,代表结果越优,排名越靠前。其中,AUC为全体样本的 AUC 统计, GAUC 为分组 AUC 的加权求和, 以用户为维度分组,分 组权值为分组内曝光量/总曝光)
$$ \mathrm{GAUC}= \frac{\sum_{k=i}^n AUC_{i} * Impression_{i} } {\sum_{k=i}^{n} \text { Impression }_{i}} $$
初赛:α 为 0.7,𝛽为 0.3
选手提交结果为一个 submission.csv 文件, 编码采用无 BOM 的 UTF-8 ,格式如下:
log_id,pctr
其中 log_id 为对应测试样本中的 log_id,pctr 对应测试样本经由模型计算出的预 估 ctr 值, pctr 保留 6 位小数。提交文件参考如下示例:
log_id,pctr
1, 0.002345
2, 0.010456
任务名称 | 难度 |
---|---|
任务1:比赛报名与尝试 | 低、1 |
任务2:比赛数据分析 | 中、2 |
任务3:验证集划分与树模型 | 中、2 |
任务4:特征工程入门 | 中、2 |
任务5:特征工程进阶 | 中、2 |
任务6:深度推荐模型 | 中、2 |
任务7:深度序列模型 | 中、2 |
任务8:多折训练与集成 | 高、3 |
任务1:报名比赛
步骤2:下载比赛数据(点击比赛页面的赛题数据)
步骤3:解压比赛数据,并使用pandas进行读取;
步骤4:使用逻辑回归模型完成建模并提交;
import pandas as pd
# 目标域用户行为数据
train_ads = pd.read_csv('./train/train_data_ads.csv',
usecols=['log_id', 'label', 'user_id', 'age', 'gender', 'residence', 'device_name',
'device_size', 'net_type', 'task_id', 'adv_id', 'creat_type_cd'])
test_ads = pd.read_csv('./test/test_data_ads.csv',
usecols=['log_id', 'user_id', 'age', 'gender', 'residence', 'device_name',
'device_size', 'net_type', 'task_id', 'adv_id', 'creat_type_cd'])
# 数据采样
train_ads = pd.concat([
train_ads[train_ads['label'] == 0].sample(70000),
train_ads[train_ads['label'] == 1].sample(10000),
])
# 加载逻辑回归模型,训练
from sklearn.linear_model import LogisticRegression
clf = LogisticRegression()
clf.fit(
train_ads.drop(['log_id', 'label', 'user_id'], axis=1),
train_ads['label']
)
# 模型预测
test_ads['pctr'] = clf.predict_proba(
test_ads.drop(['log_id', 'user_id'], axis=1),
)[:, 1]
# 写入文件
test_ads[['log_id', 'pctr']].to_csv('submission.csv',index=None)
任务2:比赛数据分析
目标域用户行为
进行分析源域用户行为
进行分析源域用户行为
与 目标域用户行为
训练集和测试集用户重合的比例分别是多少?任务3:验证集划分与树模型
训练集
和验证集
用户不重合的情况验证集
用户时间戳 晚于 训练集
用户时间戳目标域用户行为
和 源域用户行为
,并使用时间戳和用户划分验证集任务4:特征工程入门
任务5:特征工程进阶
任务6:全连接模型
任务7:深度推荐模型
© 2019-2023 coggle.club 版权所有 京ICP备20022947 京公网安备 11030102010643号