赛题分析
本届算法大赛的题目是“广告受众基础属性预估”。
赛题背景
众所周知,像用户年龄和性别这样的人口统计学特征是各类推荐系统的重要输入特征,其中自然也包括了广告平台。这背后的假设是,用户对广告的偏好会随着其年龄和性别的不同而有所区别。许多行业的实践者已经多次验证了这一假设。然而,大多数验证所采用的方式都是以人口统计学属性作为输入来产生推荐结果,然后离线或者在线地对比用与不用这些输入的情况下的推荐性能。本届大赛的题目尝试从另一个方向来验证这个假设,即以用户在广告系统中的交互行为作为输入来预测用户的人口统计学属性。
我们认为这一赛题的“逆向思考”本身具有其研究价值和趣味性,此外也有实用价值和挑战性。例如,对于缺乏用户信息的实践者来说,基于其自有系统的数据来推断用户属性,可以帮助其在更广的人群上实现智能定向或者受众保护。与此同时,参赛者需要综合运用机器学习领域的各种技术来实现更准确的预估。
赛题目标
在比赛期间,将为参赛者提供一组用户在长度为91 天(3 个月)的时间窗口内的广告点击历史记录作为训练数据集。每条记录中包含了日期(从 1 到 91)、用户信息 (年龄,性别),被点击的广告的信息(素材 id、广告 id、产品 id、产品类目 id、广告主 id、广告主行业 id 等),以及该用户当天点击该广告的次数。测试数据集将会是另一组用户 的广告点击历史记录。提供给参赛者的测试数据集中不会包含这些用户的年龄和性别信息。这可以被理解为一个分类问题。
数据说明
训练数据中包含三张表,分别是:click_log.csv,user.csv,ad.csv。测试数据为:click_log.csv,ad.csv。
lick_log.csv:
time: 天粒度的时间,整数值,取值范围[1, 91]。
user_id: 从1到N随机编号生成的不重复的加密的用户id,其中N为用户总数目(训
练集和测试集)。
creative_id: 用户点击的广告素材的 id,采用类似于 user_id 的方式生成。
click_times: 当天该用户点击该广告素材的次数。
user.csv:
user_id
age: 分段表示的用户年龄,取值范围[1-10]。
gender:用户性别,取值范围[1,2]。
ad.csv:
creative_id
ad_id: 该素材所归属的广告的 id。每个广告可能包含多个可展示的素材。
product_id: 该广告中所宣传的产品的 id。
product_category: 该广告中所宣传的产品的类别 id。
advertiser_id: 广告主的 id。
industry: 广告主所属行业的 id。
数据分析
click_log.csv文件是关于用户行为的数据,最为关键,首先对其进行分析。
len(df_log)
len(df_log['user_id'].unique()), min(df_log1['user_id']), max(df_log1['user_id'])
len(df_log['creative_id'].unique()), min(df_log1['creative_id']), max(df_log['creative_id'])
统计其总样本数,用户的人数、范围,和广告id的数量可知,共3000w条日志数据。用户共90w,id从1~900000,并未有缺失。广告素材id共248多万个,id从1~4445718,说明有些广告没有一个用户进行点击。
其次对ad_csv进行分析,可知product_id有缺失值,product_category为广告中产品类别,可以作为后续的特征。
最后对user.csv进行分析
import matplotlib.pyplot as plt
file3 = 'dataset/train/user.csv'
df_user = pd.read_csv(file3, low_mem