问题描述
基于用户app的下载和使用情况预测用户的人口属性(性别和年龄)。
数据说明
- gender_age:训练和测试集
- events, app_events: 当用户使用TakingData SDK时,系统记录的日志。包括经纬度和对应app情况。
- phone_brand_device_mode:用户的手机属性
数据分析
基本数据
如上图所示,选手要做的不是直接预测用户的性别和年龄,而是把预测用户属于哪个性别/年里的分组。在这个比赛中,赛题举办方将用户分为12个组,例如M32-38,该用户为男性,年龄在32-38岁之间。选手给出预测结果,采用的评分机制是logloss。
年龄和性别分布
基于手机类型的性别分布
可以猜想,用户的年龄和性别跟使用的手机型号和使用的app会有一定关系,直接用图标来说明问题。
横坐标是不同的手机型号,纵坐标是性别的分布情况。整体上男性的比例大于女性(猜想这些sdk都是基于Android的,Android用户中,女性用户大于男性用户),在某些手机的型号中,男女比例是用显著不同的。
基于手机类型的年龄分布
大多数看起来都一样,没有明显区别。
解决方案
1、基于手机品牌,型号和安装app(brand,model,app)
- one-hot brand
- one-hot model
- one-hot app
- one-hot app-label
- sparse representation
- logistic Regression or XGBoost
- score:2.273 CV / 2.265 LB
2、深度学习方法
该方法主要基于方法1,在方法1的基础上增加了一些tf-idf的特征。由于处理好的特征和维度和一张图片的维度比较类似,所以有些选手分享了一些基于深度学习的方法,这些方法在这个问题中也取得了比较好的效果。
- TF-IDF of brand and model and app labels
- Frequency of brands and model names
- sparse representation
- 3 layers Dense with 3 layers Dropout neural network
- score:2.23452 LB (+ 0.03)
3、数据泄露
这是一个很有争议的比赛,因为在本次比赛中出现了严重的数据泄露,可以看到,在比赛的最后阶段,利用数据泄露的队伍成绩得到了大幅度提升。提升幅度约为0.06
参考价值
- 准确率:基于安装app来预测用户的人口属性的效果比较一般,在训练的过程中观察到的准确率约为20%-30%之间,我觉得基于安装app很难将准确率进行进一步的提高。
- 数据情况:我们有着更高质量的数据,比如网站的注册情况,BOC购买情况,账单消费情况等,会比基于安装app的预测取得更好的效果。
- 其他方面:在特征比较多的情况下,采用深度学习的方法可以节省很多特征工程的时间,效果也比较突出。但是采用什么结构的神经网络,采用怎么样的学习参数,都是需要进一步的实验。