【获奖公布】元老选手心得分享:请把自己看成一位出色的工程师
复赛的号角刚刚吹响,全新的数据集正式上线,算法极客间的决赛入场争夺战正式启幕!我们有幸请到参加了两届大赛的元老选手,与大家聊一聊他认为可以让代码更加高效漂亮的几个关键点,帮你镇定面对复赛,顺利完成代码优化,冲击决赛入场资格!
应主办方邀请,在复赛开始的时间节点,做一份分享。
我是从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 ,来保存时间+自己的操作 + 线下得分 + 线上得分 + 思考总结。便于你回顾和思考,同时也便于组队后与队友的沟通交流。
以上就是我的分享,希望大家日后的代码可以高效,漂亮。
除了分数外,至少让自己觉得,我的代码真美!(自恋一下) 另附一句很受用的话:
“请把自己看成是一位出色的工程师,而不是一位机器学习专家。”
【获奖公布】元老选手心得分享:请把自己看成一位出色的工程师相关推荐
- 往届选手心得分享:如何在比赛中提升自己?
第一届腾讯社交广告高校算法大赛以"移动App广告转化率预估"为主题,首次开放腾讯在社交和数字广告领域的"实战类"数据,以高度模拟真实业务的赛题方式呈现,并直指数 ...
- 往届选手心得分享:腾讯广告算法大赛萌新指南
第一届腾讯社交广告高校算法大赛以"移动App广告转化率预估"为主题,首次开放腾讯在社交和数字广告领域的"实战类"数据,以高度模拟真实业务的赛题方式呈现,并直指数 ...
- 2017“CCF科学技术奖”全公布,6位获奖人带来独家经验分享
本文讲的是2017"CCF科学技术奖"全公布,6位获奖人带来独家经验分享, 由中国计算机学会(CCF)主办,福州市人民政府.福州大学承办,福建师范大学.福建工程学院协办的2017中 ...
- 【获奖公布】2017 CSDN博客专栏评选
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! ...
- 【获奖公布】 |新年新目标,立Flag的时候又到了
时光荏苒,又到了跟过去一年说再见的时候了.不少CSDN博主已经撰写年终总结跟未来的展望.杨秀璋老师的向死而生,为爱而活--忆编程青椒的戎马岁月就写的非常精彩. 距离2019年还有2天,你的新年小目标定 ...
- html从入门到精通前锋,街篮新手攻略 从入门到精通的心得分享二
街篮毕竟是一款竞技手游,上期介绍了街篮的一些玩法和基本技巧,本期就不再提介绍而是针对实战,以下就是将街篮的实战技巧分享给大家,希望对大家了解街篮有所帮助. (本文为超好玩原创攻略,转载请注明出处) 推 ...
- 转:SAP 零售业POS心得分享
转:SAP 零售业POS心得分享 转:SAP 零售业POS心得分享 最近看了一些SAP进行中的零售业项目,觉得有些心得,希望透过本篇文章让大家多了解SAP跟零售业POS连接的做法,能够更顺利地完成项目 ...
- 【采访】腾讯社交广告高校算法大赛第三周周冠军——到底对不队比赛经验及心得分享
[采访]腾讯社交广告高校算法大赛第三周周冠军--到底对不队比赛经验及心得分享 经过又一周紧张又激烈的角逐 腾讯社交广告高校算法大赛产生了第三周周冠军 他们的名字叫"到底对不队" 这 ...
- 腾讯广告算法大赛 | 复赛第二周最佳进步奖得主心得分享
腾讯广告算法大赛 | 复赛第二周最佳进步奖得主心得分享 我们关注着每个团队的成长, 即使你认为自己并不出众, 但腾讯广告算法大赛, 乐于发现你的闪光点. 这不, 我们特邀本周最佳进步奖得主分享成长之路 ...
最新文章
- 安装oracle sqldeveloper
- spark大数据基本概念整理以及软件下载链接
- 1235813找规律第100个数_人教版一年级下册数学第1-8单元知识点梳理填空,附答案...
- 神经网络激活函数=生物转换器?
- 【OpenCV 例程200篇】04. 用 matplotlib 显示图像(plt.imshow)
- 基于Vue实现后台系统权限控制
- c语言字母表等腰三角,【原创】CS必修课——C语言基础编程实战26“C语言输出等腰三角形”...
- Python使用pyinstaller打包几个小技巧
- 在Eclipse中运行JAVA代码远程操作HBase的示例
- 从0开始构建自己的前端知识体系-JS-事件-键盘事件总结
- scott用户对象维护
- 威纶通触摸屏232脚位_威纶触摸屏tk6070iq232接口引脚电 – 手机爱问
- Simulink汽车动力学仿真
- android剪贴板数据来源,Android判断程序回到前台并获取剪贴板数据
- 《老路用得上的商学课16—20》消费心理学(一)
- VSCode配置Python教程
- 在材料技术方面的进步使游戏改变了MLCC的性能
- 正规的股票交易软件有哪些?
- 银汇通无线pos机的优势与区别
- 音视频学习之时间戳相关整理(时间基tbr,tbn,tbc)