复赛的号角刚刚吹响,全新的数据集正式上线,算法极客间的决赛入场争夺战正式启幕!我们有幸请到参加了两届大赛的元老选手,与大家聊一聊他认为可以让代码更加高效漂亮的几个关键点,帮你镇定面对复赛,顺利完成代码优化,冲击决赛入场资格!

应主办方邀请,在复赛开始的时间节点,做一份分享。

我是从2018年腾讯广告算法大赛开启了比赛生涯,第一次打比赛的经历让我记忆犹新。组不到队友,最终也只得到了Solo 15名的成绩,但那一次比赛也是我代码写的最多的一次比赛。抛开上分目的不谈,我尝试过各种调试工具,写过多种风格的代码,比如用mysql做特征工程、资源控制等(傻乎乎)。虽然很多尝试最终都没有在比赛中奏效,但也教会了我在日后的比赛中不受到资源、效率、以及编码能力的困扰,最终也顺利的拿到了不错的成绩。相比于比赛结果,另外一个值得关注的点就是,一般答辩队伍的方案里,很少有人特征数目比我少、代码量少、运行时间短。就这道题目而言,我平均5-10min 可以通过5折验证测试一个特征的好坏。

回到本届的赛题,赛题本身从场景到数据以及评价指标复杂度都比较高。我个人初赛本身投入的时间不长,成绩也不是很理想。这里就不谈特征、模型什么的了,相信前面几位大佬的相关分享已经十分详尽了,今天我想分享一些个人觉得比较重要的东西。比赛本身一般是拼模型、特征、业务理解。以上会化为你最终的成绩呈现,当然也拼答辩和PPT创新。但除此之外,我们更应该为未来多考虑一些过程。

比如,模型是否简洁高效?是否形成了良好的代码风格?是否构建了足够便捷的调试框架?

等等,下面我来详细与各位分享一下。

确保第一个模型简单易用 并正确实施基础架构

在把问题想太细之前,需要做的就是定义好问题、目标、以及候选的模型方案,形成自己的第一个baseline。通过对数据量,特征特点,以及目标分析就可以获得一个不错的方案。一般比赛的开始阶段,大家也都会纷纷在群里分享一些自己不同方案尝试的初步效果。而尽快实现出来第一个模型的好处在于,让你获得初步的线上反馈以及成就感,同时也可以通过和其他选手的对比,从而把握自己当前是否跟得上节奏。

关注代码效率以及代码结构

在开发的过程中,遇到速度慢的处理或者内存占用较大的处理的时候,多去思考运行原理以及测试效率并且优化它。

通常的优化思路有:
1、代码的时间复杂度
2、你的操作是Python层的处理,还是C的处理(pandas 和numpy 里很多运算是C处理的),尤其是你的循环操作,是否可以在C层处理掉。
3、是否有已经封装好的且高效的写法?(优化代码结构和行数,更美观)
4、是否无关数据预先做了过滤。(比如日志先过滤掉无关日志)
5、考虑到字符串格式的复杂性和内存占用,是否可以预先编码处理?
6、计算复杂的操作是否可以减少计算次数?(比如如果有10w个日期字符串却只有30个不同日期,你可以先去重复,然后做30次转换,最后10W个日期直接做map映射过去。)
7、理解字典、列表、集合等数据结构的使用场景和优劣。
8、缓存稳定不变的中间结果。总结不同缓存方法(如:csv,nzp,hdf,pickle)的优劣。

你所学会的优化的方法会延续到你的下一个比赛,不会让你因为速度而困扰。同时快速的迭代,也可以有助你在有限的时间内,尝试更多的想法。

版本控制和资源控制

你是否遇到过以下问题:
连续几个迭代无果之后,突然发现无法复现最高成绩?
在繁琐的特征工程后,想分析上分点以及蛇皮区的时候,发现就只记住了强特和大坑。
不小心覆盖了之前辛辛苦苦跑出来的某个特征文件。
想对比之前的高分文件,发现文件找不到了。
… …

这时候你就要考虑要对代码的版本进行控制了。

这里强烈推荐Git,它是你以后工作后,必不可少的工具,不会用的同学自行百度。当然Git != Github,千万不要把代码不小心比赛期间“开源”了哦。具体怎么用呢,一般就是发现强特Git一下;好不容易写好了骚操作,Git一下;跑出来当前最高成绩的版本,Git 三次!!!(e…好像不能连续Git,三次表示强调!)

资源控制的话就是对你的历史提交以及过程文件进行管理,一般对文件夹或者文件加上日期,提交文件生成一份 “时间 + 模型 + 线下得分””备份。另外记录一份excel ,来保存时间+自己的操作 + 线下得分 + 线上得分 + 思考总结。便于你回顾和思考,同时也便于组队后与队友的沟通交流。

以上就是我的分享,希望大家日后的代码可以高效,漂亮。

除了分数外,至少让自己觉得,我的代码真美!(自恋一下) 另附一句很受用的话:

“请把自己看成是一位出色的工程师,而不是一位机器学习专家。”

【获奖公布】元老选手心得分享:请把自己看成一位出色的工程师相关推荐

  1. 往届选手心得分享:如何在比赛中提升自己?

    第一届腾讯社交广告高校算法大赛以"移动App广告转化率预估"为主题,首次开放腾讯在社交和数字广告领域的"实战类"数据,以高度模拟真实业务的赛题方式呈现,并直指数 ...

  2. 往届选手心得分享:腾讯广告算法大赛萌新指南

    第一届腾讯社交广告高校算法大赛以"移动App广告转化率预估"为主题,首次开放腾讯在社交和数字广告领域的"实战类"数据,以高度模拟真实业务的赛题方式呈现,并直指数 ...

  3. 2017“CCF科学技术奖”全公布,6位获奖人带来独家经验分享

    本文讲的是2017"CCF科学技术奖"全公布,6位获奖人带来独家经验分享, 由中国计算机学会(CCF)主办,福州市人民政府.福州大学承办,福建师范大学.福建工程学院协办的2017中 ...

  4. 【获奖公布】2017 CSDN博客专栏评选

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴!      ...

  5. 【获奖公布】 |新年新目标,立Flag的时候又到了

    时光荏苒,又到了跟过去一年说再见的时候了.不少CSDN博主已经撰写年终总结跟未来的展望.杨秀璋老师的向死而生,为爱而活--忆编程青椒的戎马岁月就写的非常精彩. 距离2019年还有2天,你的新年小目标定 ...

  6. html从入门到精通前锋,街篮新手攻略 从入门到精通的心得分享二

    街篮毕竟是一款竞技手游,上期介绍了街篮的一些玩法和基本技巧,本期就不再提介绍而是针对实战,以下就是将街篮的实战技巧分享给大家,希望对大家了解街篮有所帮助. (本文为超好玩原创攻略,转载请注明出处) 推 ...

  7. 转:SAP 零售业POS心得分享

    转:SAP 零售业POS心得分享 转:SAP 零售业POS心得分享 最近看了一些SAP进行中的零售业项目,觉得有些心得,希望透过本篇文章让大家多了解SAP跟零售业POS连接的做法,能够更顺利地完成项目 ...

  8. 【采访】腾讯社交广告高校算法大赛第三周周冠军——到底对不队比赛经验及心得分享

    [采访]腾讯社交广告高校算法大赛第三周周冠军--到底对不队比赛经验及心得分享 经过又一周紧张又激烈的角逐 腾讯社交广告高校算法大赛产生了第三周周冠军 他们的名字叫"到底对不队" 这 ...

  9. 腾讯广告算法大赛 | 复赛第二周最佳进步奖得主心得分享

    腾讯广告算法大赛 | 复赛第二周最佳进步奖得主心得分享 我们关注着每个团队的成长, 即使你认为自己并不出众, 但腾讯广告算法大赛, 乐于发现你的闪光点. 这不, 我们特邀本周最佳进步奖得主分享成长之路 ...

最新文章

  1. 安装oracle sqldeveloper
  2. spark大数据基本概念整理以及软件下载链接
  3. 1235813找规律第100个数_人教版一年级下册数学第1-8单元知识点梳理填空,附答案...
  4. 神经网络激活函数=生物转换器?
  5. 【OpenCV 例程200篇】04. 用 matplotlib 显示图像(plt.imshow)
  6. 基于Vue实现后台系统权限控制
  7. c语言字母表等腰三角,【原创】CS必修课——C语言基础编程实战26“C语言输出等腰三角形”...
  8. Python使用pyinstaller打包几个小技巧
  9. 在Eclipse中运行JAVA代码远程操作HBase的示例
  10. 从0开始构建自己的前端知识体系-JS-事件-键盘事件总结
  11. scott用户对象维护
  12. 威纶通触摸屏232脚位_威纶触摸屏tk6070iq232接口引脚电 – 手机爱问
  13. Simulink汽车动力学仿真
  14. android剪贴板数据来源,Android判断程序回到前台并获取剪贴板数据
  15. 《老路用得上的商学课16—20》消费心理学(一)
  16. VSCode配置Python教程
  17. 在材料技术方面的进步使游戏改变了MLCC的性能
  18. 正规的股票交易软件有哪些?
  19. 银汇通无线pos机的优势与区别
  20. 音视频学习之时间戳相关整理(时间基tbr,tbn,tbc)

热门文章

  1. 周小川:数字人民币不会取代美元 也不会威胁全球货币体系
  2. 以太坊2.0存款合约地址余额已突破50万ETH
  3. SAP License:SAP在线帮助的实现
  4. SAP License:SAP成本收集器两则
  5. 天池实验室-Task04-Python数据分析:从0完成一个数据分析实战
  6. 你可能还不知道的关于JavaScript类型的细节?
  7. 毕业设计周记(第二篇)
  8. 我打败了妈妈 - 张朔
  9. 中国象棋口诀及要领精髓
  10. .NET/C#使用NPOI操作Excel