上周是淘宝穿衣搭配算法大赛开始评测后的第一周,周冠军是来自浙江大学的"FUC AUTH"队。他们在夺得本周冠军以后,还将本身的获胜经验分享给了你们,究竟有什么秘诀呢?python
阿里巴巴天池大数据竞赛在浙大师兄们的口碑中一直很不错,它真正意义上地为咱们提供了海量数据源和大数据处理平台,尤为是大数据处理平台是在高校实验室中很难提供。对于之后走向大数据方向的研究人员而言也很具有科研价值,大数据比赛确实也锻炼大数据挖掘算法和程序优化,让咱们受益不浅。算法
因为咱们团队也差很少都是新手,能取得这样的成绩,确实激励咱们,让咱们更有信心面对未来的挑战。在高兴的同时咱们也深入地意识到到目前比赛刚开始,许多大牛还未真刀真枪开始干,咱们如今取得的成绩也不可骄傲。编程
而在比赛期间,咱们确实遇到过不少困难:缓存
1程序运行时间过长数据结构
程序运行时间过长,尤为是本文挖掘部分,因为咱们采用的比较词向量TF/IDF的类似度的方法,然而词向量维度过高,计算量大。若是采用常规方法计算须要整整1天多,为了解决计算速度问题,咱们采用能预先计算的结果预先缓存到内存字典中,线下用python实现相似基于内存迭代的多进程Map/Reduce方案,开出16进程进行计算,将时间缩短到1.5小时左右。机器学习
2评价想法的可行性编程语言
想法不少,如何评价想法的可行性,咱们将套餐数据分开为训练数据和测试数据,并生成测试数据的标准答案,在线下搭建一个线下评价系统。通过第一天的提交结果反馈,咱们发现咱们的线下评价系统是合理且有效的,线上领先线下0.2%。评价系统能评价出咱们的想法的好坏。比赛就是不断验证想法,提出去好的想法并分析其中的缘由,并加以改变。工具
3关于调参问题学习
关于调参问题,以前一直是手工调参,发现效率过低,人工干预麻烦。咱们就采用暴力调参法,先粗条后细调,或者直接采用登山法以及模拟退火法,甚至咱们也开发出一套随机蒙特卡洛方法。发现蒙特卡洛的方法效率最低,参数维度较少优先选择暴力法,参数维度较多选用登山法或者模拟退火法。测试
4团队协做
最后关于团队协做问题,因为你们习惯的编程语言不一样,有C/C++、matlab、python等,为了更好的协做须要有人能翻译其余人的编程语言实现统一版本的语言,好比python,版本统一能不少好处,集体参数调优。相对而言我以为python很是适合做为编程工具,抛开其运行效率问题不说,是一种很好的交互式语言,相对于C/C++而言,能够分步执行,随时查看结果,与matlab相似。可是matlab有没有相似python的强大数据结构,字典和列表,还有python机器学习支持很强大,编程很是方便,代码简洁。
5给你们的建议
结合上述的困难,我主要给其余选手的建议:
1. 不断优化代码,能预先计算的可重复使用的数据尽可能预先计算好,多用相似hash字典的数据结构缓存变量数据,运行效率提高很大一部分都是在于数据的查询
2. 想法能够不少,都须要创建有效的线下评价系统对其进行验证
3. 模型以前的重要程度能够简单设置参数体现,并经过程序调参选择出最佳参数,每次迭代过程要往评价好的方向走
4. 尽可能不要重造机器学习算法,通常来讲各大语言算法都有写好的计算学习版本,好比python的sklearn,里面就封装好本次要使用的TF/IDF模型。
文/天池大数据科研平台
移动推荐算法赛答辩会Top5选手PPT截图
(下载方式见底部)