Coggle 30 Days of ML(22年8月)


## Part1 内容介绍

在给大家分享知识的过程中,发现很多同学在学习竞赛都存在较多的问题:

  • 不知道如何构建特征工程、筛选特征
  • 不知道如何搭建深度学习模型、优化模型
  • 不知道如何改建模型、debug模型

而上述问题都是一个合格算法工程师必备的,本月我们将组织一次推荐系统竞赛训练营活动,希望能够帮助大家入门数据竞赛。在活动中我们将布置具体竞赛任务,然后参与的同学们不断闯关完成,尽可能的帮助大家入门。

8月份的竞赛活动将以华为全球AI算法赛,广告-信息流跨域CTR预估赛题展开。


## Part2 活动安排

  • 活动是免费学习活动,不会收取任何费用。
  • 请各位同学添加下面微信,并回复【竞赛学习】,即可参与。


## Part3 积分说明和奖励

为了激励各位同学完成的学习任务,将学习任务根据难度进行划分,并根据是否完成进行评分难度高中低的任务分别分数为3、2和1。在完成学习后(本次活动,截止8月31),将按照积分顺序进行评选 Top3 的学习者。

打卡链接:https://shimo.im/forms/iF1DJpH6GJAL8QGe/fill

打卡可以写在一个地址,每次有新完成的可以重复提交打卡!

Top1的学习者将获得以下奖励

  • Coggle 竞赛专访机会
  • 《机器学习算法竞赛实战》

Top2-3的学习者将获得以下奖励

  • Coggle 周边福利
  • Coggle 竞赛专访机会

历史活动打卡链接,可以参考如下格式:

昵称 得分
liuxinhe894449 3
zuozuo 3
Bisk 3
Nothing 3
Eureka 1
AlexNet 1
Jming ZHU 1
KING小保 1
当且仅当 1
nyfzpf
Lynn
Joyce
liuxinhe894449

## Part4 广告-信息流跨域CTR预估

### 赛题介绍

广告推荐主要基于用户对广告的历史曝光、点击等行为进行建模,如果只是使用广告域数据,用户行为数据稀疏,行为类型相对单一。而引入同一媒体的跨域数据,可以获得同一广告用户在其他域的行为数据,深度挖掘用户兴趣,丰富用户行为特征。引入其他媒体的广告用户行为数据,也能丰富用户和广告特征。

本赛题希望选手基于广告日志数据,用户基本信息和跨域数据优化广告ctr预估准确率。目标域为广告域,源域为信息流推荐域,通过获取用户在信息流域中曝光、点击信息流等行为数据,进行用户兴趣建模,帮助广告域CTR的精准预估。

比赛报名方法:https://shimo.im/docs/G9fZLTn1lbccQhkQ/read

比赛地址:https://developer.huawei.com/consumer/cn/activity/starAI2022/algo/competition.html#/preliminary/info/006/rank

### 数据说明

提供的数据包括目标域用户行为数据,源域用户行为数据, 以下按照这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
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:验证集划分与树模型

    • 学习KFold数据划分逻辑
    • 使用Pandas和sklean完成下属数据划分操作:
      • 训练集验证集用户不重合的情况
      • 验证集用户时间戳 晚于 训练集用户时间戳
      • 联合目标域用户行为源域用户行为,并使用时间戳和用户划分验证集
    • 使用树模型、随机森林、LightGBM或CatBoost完成模型多折训练
  • 任务4:特征工程入门

    • 使用Pandas完成下列统计【目标域】:
      • 统计用户历史行为次数
      • 统计用户历史点击的广告分类
      • 统计每类广告被点击的概率
    • 将提取的特征加入树模型从新训练
  • 任务5:特征工程进阶

    • 使用gensim和Pandas完成下列统计【目标域 + 原域】:
      • 使用word2vec训练广告序列和实体序列
      • 聚合得到用户word2vec编码
      • 计算用户与当前广告序列的相似度
    • 将提取的特征加入树模型从新训练
  • 任务6:全连接模型

    • 搭建全连接网络模型
    • 将所有的特征进行数值编码
    • 使用early stop进行进行训练
  • 任务7:深度推荐模型

    • 将类别特征进行Embedding嵌入
    • 对模型进行训练与验证
    • 搭建DeepFM模型进行与验证


© 2019-2023 coggle.club 版权所有     京ICP备20022947    京公网安备 11030102010643号