Home

Awesome

Tencent_Social_Ads

第一届腾讯社交广告高校算法大赛(全国14名)

队名:竟然有这种操作 <br> 最终成绩:0.101595 排名第14<br> 特征维数:64<br> 训练数据为:28,29两天<br> 训练机器内存:16G<br> 算法模型:lightGBM<br>

文件说明:

doFeats_1.py:根据原始文件生成中间文件<br><br> doFeats_2.py:根据中间文件生成特征<br><br> train_cv.py:训练及预测(LGB相当的快,一组CV预测大概40分钟)<br><br>

主要特征:

特征筛选:

  在特征筛选上没太多经验,基本是参考lgb输出的特征的weight重要性和gain重要性来增删特征,weight是特征分裂次数,gain是分裂特征获得的信息增益总量,不过重要性只能做参考,一个比较好的特征选择方法是,每次构造的特征计算其在训练集和测试集上的均值和方差,保证分布相同,差不多则放入模型训练,如果结果比之前好那这个特征就基本可用。

模型与训练:

  由于队友比较忙,主要工作是自己来,整个特征构造与筛选的过程是利用lgb重要性,所以最后构造出的特征在其他模型上表现不好,模型融合阶段就处于很大的劣势,预测主要采用交叉预测,实际上是stacking第一层做的操作,然后利用不同折数加参数,特征,样本(随机数种子)扰动,再加权平均得到最终成绩.<br>   关于机器内存一个比较实用的方法是设置虚拟内存,会有比较大的改善,也是能用16G服务器跑下来的主要原因。

其他参考操作:

不足与思考:

  由于缺乏比赛经验,在整个比赛的过程中有很多欠缺的地方,比如分工不明确,导致最后只有一个模型能达到比较好的效果,继而导致模型融合效果不理想,最后一天被挤出前十;又比如数据处理经验不足,对异常数据(19,20上午以及30号的label)基本没做什么处理;然后一个小小的客观原因,决赛的数据量比较大,其中一个文件有5.7亿条记录,而16G内存的机器也一定程度上影响了成绩。<br>   不过总体来说结果还是不错的,也非常感谢分享经验的各位大神,比赛过程中通过他们的分享,网上的博客,自己的努力等等,让我一个接触机器学习才1个月的小白感受到了ML的魅力,也让我一个连pandas都没用过的新手见识到了一系列神奇的操作,也很感谢腾讯能提供这个平台让我们学到更多。