2015年参加了3次大数据/Machine Learning相关的比赛(天猫LBS/DataCastle职位预测/内网简历预测),特将问题和技巧汇总成文。
碰到的问题
- 痛点1. 实验平台和环境不熟
ODPS和御膳房是天池比赛标配,目前通过SQL/XLab/PAI尚能适应,Datacastle外部赛数据量较小,可以使用任何单机版工具,就面临工具选择问题。但不论如何,最好能在比赛前,掌握比赛指定的平台和工具,减少编码错误导致的debug时间。2次天池比赛,在SQL联表的多记录冗余和NULL值misjoin上吃了多次亏,延误了比赛进度。
- 痛点2. 线下表现与线上测评不一致
对线下优化的打击很大,即便线下优化的很好,提交后结果大失所望。
- 痛点3. 特征选择以保证结果最优
不知道哪些特征是有效的,特征工程一抹黑,要么激进地加了一大堆特征,要么保守地不敢随意在最佳特征集上新增特征。
解决技巧
- 残缺样本的清洗
天猫LBS推荐大赛数据量千万级,个别列缺失样本众多,可以考虑保留数据质量较好的样本,同时节省一次试错流程的时间。而后面的2次简历预测大赛数据量刚上万级,样本数量比较少,尽可能对缺失值进行填补。
- 保留线下/线上分布一致的特征
线下表现OK,线上惨不忍睹,除了过拟合,数据量不足情况下未做交叉验证导致测试集不稳定之外,主要原因就是提取的特征在训练集和线上数据集表现不一致,导致模型训练无效,去除该类特征后,随不能保证成绩提升,但是至少线下和线上的提升方向很大概率上保持一致。
- 关注正负样本比例
天猫LBS推荐大赛,负样本比例远大于正样本不符合直观感觉,人为设置直观比例后,保证预测结果不偏向于选出较少正样本,也可以清洗一些不靠谱的负样本。
- 过拟合-欠拟合的平衡
某些特征加入后线下效果飙升,但是线上测评下降,可能利用了某些label的信息导致穿越和过拟合,果断杀掉,引入一些看似泛化类的特征。也可以绘出learning curve,观察train/test的error情况。
- 分析原始数据,进行特征组合
在简历比赛中,通过正样本分析,发现测试/产品岗位女性比例较其他岗位高,或者经验和学历都很高的资深人士应聘要求不高的岗位,等等。通过交错的特征组合,构造出比较拟合的特征。
- 先特征工程,后模型调参
避免刚稳定好一套最优参数,被新加的特征又破坏了平衡点。
- 均衡准确率和召回率
最终提交样本的比例可以通过一次成绩计算得知,提交合适的正样本比例可以拉平准确率和召回率,使得F1值最大化。
- 确立最佳方案原点
建议新的提升方案尝试之前,保留好当前最好成绩的版本镜像,试错尽量勿深,免得不知道成绩倒退的原因,加大寻找和最佳方案diff的困难。当然如果想从模型架构上动刀,就需要大刀阔斧地修改了。
- 多模型的比较
阿里简历大赛采用御膳房,可以多模型组件并行跑分,总体测评下来,bayes和svm自不堪当大任,线下比较RF>GBDT=XGBOOST>LR,但是线上测评效果GBDT一直占优,还未能研究RF过拟合的原因。
- 文本特征潜力较大
简历比赛涉及很多职位,个人的描述信息,从中进行归类和处理就能获得较好的特征,比如对职位等级的归类(高级职位,经理职位,总监职位),以及优秀公司的识别(比如有过百度/腾讯经历的人,应聘阿里成功概率会比其他公司高一筹)。
- 不要太迷信LR的p-value
虽然LR不是最优模型,但是经常用LR进行特征重要度打分,但是发现不少特征的重要性打分和直观感觉不一致,原因可能是特征之间本身无法保持独立,以及特征空间较大/各特征scale不同导致p-value的不准确。
未来可以尝试的点
- bad case分析(预测错误case的原始数据分析)
在特征工程进入瓶颈期后,可以针对分类错误的case单独分析,找出新的特征可以改善错误分类,case较多的典型对效果提升会大。
- 缺失值通过建立预测模型进行填补
对于某列缺失值比例较大的情况,一味的用默认值/均值填充已经失去了该列的显著性,可以直观地构建和该列相关的其他列作为特征,先进行一次预测补足。
- 负特征的使用
此前一直只直观分析正样本的数据共性,其实能够挑出负样本比例较大的规则,形成负特征,或许有效。
- 连续特征的分段
工作年限也许并非和成功线性相关,或许2头较高,或者分段较高,总之将明显的分段引入连续特征,使特征有效性增强。
- 交叉验证
之前样本量够的情况下,为了节省跑分时间,未做交叉验证,有可能会导致模型只是针对随机一次选出的验证集上的较优结果。
- 结果的ensemble
- 提交样本的选择
在比赛后期,针对不同大类的样本,比如简历预测中,技术类岗位预测效果较好,可以突击提交超过预估比例的技术类样本组合,拉高整体F1效果。
总结
三次投入较多的竞赛,从最早的top35%,到第二次top25%,第三次top20%,每次提升虽然不多,但限于个人赛精力、观点碰撞和试错机会有限,但都收获了很多经验。比赛成绩是由较强的理论功底和丰富的应用经验决定的,有目的地提升任意一方面实力,是未来长期的努力方向。