2019腾讯算法大赛参赛感悟

作者 : 开心源码 本文共2542个字,预计阅读时间需要7分钟 发布时间: 2022-05-12 共228人阅读

今天的你假如不懂机器学习、不懂人工智能,也许很快就会被时代所淘汰。

参与腾讯算法大赛已经有一个月的时间了,这一个月里大葱哥体会颇多,既有心酸又有满满得收获感,在此和大家分享如下。

小白起步

大葱哥深深地感觉到了智能浪潮的冲击感,于今年2月底开始了机器学习领域的自学之路,期间我看了一部分吴恩达教授主讲的机器学习视频、看了tensorflow官方教程的mnist数据集案例并跟着案例写了一遍代码、拜读了大师级人物的《终极算法》纸质书,还结合自己擅长的Java语言,实现了一遍mnist的神经网络。当然还下载了不少的电子书比方西瓜书、花书等,但由于时间关系还没有学习。
以上算是自己在机器学习领域的储备了,属于典型的小白起步阶段。

“误入”赛区

一次偶然的机会,我得知了腾讯算法大赛的消息,于是到官网查看了相关信息,基于大葱哥对机器学习的浅薄认知,当即决定借这个机会练手,当时大葱哥幼稚的认为“比赛不就是把数据交给模型训练,而后调整模型参数看结果精确度,结果理想了即可以预测嘛”。

“一入候门深似海”

经过一段着急、兴奋的等待,迎来了官方的正式开赛,在下载完数据后大葱哥傻眼了,训练集在哪里呢?没有训练集我怎样训练模型啊?经过详细阅读官方的相关文档,大葱哥终于明白了,理想是丰满的现实是骨感的,训练集需要自己构造,算你狠!
打开测试集文件,大葱哥又懵了,怎样这么多id字段呢?mnist可都是数值呀,这些id神经网络怎样消化呢?而后我看到了投放时间、定向人群两个字段,这两个字段的值是分隔符分割的一串字符,这类数据神经网络又该怎样解决呢?
这和自己对机器学习的认知差距太大了,和自己看的示例完全不一样,我甚至开始“怀疑人生”了,原来机器学习这么难呢!

万事开头难

兵来将挡水来土掩,有困难我们就处理困难,没有困难我们制造困难也要上,这才是大葱哥的风格。
既然一头雾水,那就说明缺乏总体思路,大葱哥各种网络资源如百度、腾讯官方公众号、官方QQ群等来寻求答案,经过学习和沾消化,我逐步理解到了赛题的整体解答思路:

  1. 数据清洗
  2. 训练集特征构造
  3. 训练集标签统计
  4. 特征分析
  5. 特征解决
  6. 构造模型
  7. 训练模型
  8. 调整模型
  9. 预测结果

有了总体思路,我即可以一步一步的破除障碍前进了。
这里面训练集构造工作是大葱哥最困难的一步,从最简单的python语法、cvs文件读取到复杂的数据相关性分析、数据行转列等等,这些知识我都是从零开始摸索。
当然也要感谢官方的QQ群,里面经常有同学分享经验,让我学到了很多知识和技巧,说实话最开始的时候群内探讨的问题我听不懂,知识盲区太多,于是对自己听不懂知识开始补课,就在这一听一补之间,慢慢的能听懂群内的探讨了,并开始尝试借鉴同学们的思路写代码实现。

柳暗花明又一村

经过不断的学习和编码尝试,大葱哥也能通过写代码生成最基本的baseline可,按出价排序生成结果集,这算是这个比赛中的一个入门技巧。
每次看到结果集提交后成绩有了提升,我内心还是很兴奋的,当然这种兴奋支撑我基于攻坚克难。
经过前期的艰难匍匐前进,大葱哥对赛题的规则也有了深入了解,开始尝试创新,我自己依据官方的文档编写了检测结果集单调性的代码,这样可以方便自己在线下检验结果集的单调性分数,作为线上提交前的检验,由于单调性再比赛中占到60分的权重,因而这个部分我们必需要拿到满分,不能丢分。
我根据广告静态记录、广告操作记录,利用行转列、去重、异常值解决等技巧,构造出了和测试集具有一样特征(也就是字段)的训练集,再结合历史曝光数据按天统计了标签数据,至此,就完成了训练集的构造,当然这里涉及很多细节问题,比方当天有修改的广告记录能否适合做训练集等,建议仔细阅读官方的文档,我这里是把这类情况的广告排除了。
有了训练集下一步就是特征分析和解决了,当然为了快速出一个baseline,这里也可以直接使用原始特征,先不做解决。
接下来就是模型的构造了,可选的模型很多,比方lightgbm、xgboost、随机森林、神经网络等,都可以考虑使用。简单期间可以先考虑树模型,这类模型可以直接解决离散型特征。
模型中会涉及到线下验证集的问题,这里我使用了3月19日的数据作为验证集,按时间划分主要是为了避免数据泄露问题,验证方法建议自己实现单调性和精确度计算,这样便于直观的理解模型分数。
我主要摸索了lgb模型、神经网络模型,期间也遇到了不少困难,但有一种无形的力量牵引着大葱哥前进、前进,办法总比困难多,有问题就肯定有处理办法,实在不好处理的我们可以先绕过去,大葱哥相信只需功夫深铁杵磨成针。

无论成败我已收获满满

比赛已经进入了初赛的B榜阶段,很快就要决定能否可以进入复赛了,但对大葱哥来说无论成败,我已受益匪浅。
参赛至今,我对机器学习的了解已经从小白到了大白阶段,所谓小白就是知道自己不会,但不知道具体哪些方面欠缺;所谓大白就是知道自己在哪些地方有欠缺了,知道一个完整的机器学习场景包含了哪些方面,知道自己应该增强哪些知识了,路漫漫兮吾将上下求索。

关于比赛的几点建议

对于比赛我总结了如下几点建议,希望能对同学们有所帮助。

  1. 关注官方信息
    官网提供的资料、信息;
    官方的公众号,定期推送排行榜前排同学的干货文章;
    官方QQ群,多听听同学们的探讨,也许你会恍然大悟。

  2. 正确形容问题
    在参赛中遇到问题困难不可怕,可怕的是我们不能说清楚问题。
    要对自己的问题进行提炼,仔细想想自己的困扰究竟是什么?
    只有想清楚了,并能精确形容自己的问题了,我们才能很快的找到处理办法,比方找人咨询或者者百度求助等。

  3. 参赛代码做好管理
    比赛期间我们需要编写很多代码,最好对代码进行版本管理,可以使用本地git,每次大的变动都提交一次git。
    比方我们调模型参数时,可能调整了很屡次,在官网也提交了很屡次,但比照发现还是之前的某次提交成绩好,假如不做git管理的话,有可能会把成绩最好的那次对应的模型参数搞混。

致谢

比赛期间大葱哥结识了很多赛友,在我遇到问题求助时,他们给予了耐心的解答和帮助,让我茅塞顿开重新启航,在此大葱哥一并感激。
当然也感谢官方提供了这样一个平台,让大葱哥有机会接触到前线的实际场景,系统全面的理解了机器学习和广告推荐业务领域知识。
最后预祝参与比赛的同学们都能获得自己理想的成绩,能通过比赛提升自己的技能收获知识。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 2019腾讯算法大赛参赛感悟

发表回复