上周是淘宝穿衣搭配算法大赛开始评测后的第一周,周冠军是来自浙江大学的"FUC AUTH"队。他们在夺得本周冠军之后,还将自己的获胜经验分享给了大家,究竟有什么秘诀呢?

阿里巴巴天池大数据竞赛在浙大师兄们的口碑中一直很不错,它真正意义上地为我们提供了海量数据源和大数据处理平台,尤其是大数据处理平台是在高校实验室中很难提供。对于以后走向大数据方向的研究人员而言也很具备科研价值,大数据比赛确实也锻炼大数据挖掘算法和程序优化,让我们受益匪浅。

由于我们团队也差不多都是新手,能取得这样的成绩,确实激励我们,让我们更有信心面对将来的挑战。在高兴的同时我们也深刻地意识到到目前比赛刚开始,许多大牛还未真刀真枪开始干,我们现在取得的成绩也不可骄傲。

而在比赛期间,我们确实遇到过很多困难:

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截图

(下载方式见底部)

天池大数据周冠军分享|附移动推荐算法赛答辩会Top5选手PPT的更多相关文章

  1. 超人学院Hadoop大数据技术资源分享

    超人学院Hadoop大数据技术资源分享 http://bbs.superwu.cn/forum.php?mod=viewthread&tid=807&fromuid=645 很多其它精 ...

  2. 大数据学习路线分享-Hbase shell的基本操作完整流程

    HBase的命令行工具,最简单的接口,适合HBase管理使用,可以使用shell命令来查询HBase中数据的详细情况.安装完HBase之后,启动hadoop集群(利用hdfs存储),启动zookeep ...

  3. 【天池大数据赛题解析】资金流入流出预测(附Top4答辩ppt)

    http://mp.weixin.qq.com/s?__biz=MzA3MDg0MjgxNQ==&mid=208451006&idx=1&sn=532e41cf020a0673 ...

  4. 【大数据系列】MapReduce示例好友推荐

    package org.slp; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import ...

  5. 天池移动推荐算法赛--https://github.com/PnYuan/Tianchi-BigData

    参考: https://blog.csdn.net/Snoopy_Yuan/article/details/75808006

  6. Kaggle大数据竞赛平台入门

    Kaggle大数据竞赛平台入门 大数据竞赛平台,国内主要是天池大数据竞赛和DataCastle,国外主要就是Kaggle.Kaggle是一个数据挖掘的竞赛平台,网站为:https://www.kagg ...

  7. Storm 实战:构建大数据实时计算

    Storm 实战:构建大数据实时计算(阿里巴巴集团技术丛书,大数据丛书.大型互联网公司大数据实时处理干货分享!来自淘宝一线技术团队的丰富实践,快速掌握Storm技术精髓!) 阿里巴巴集团数据平台事业部 ...

  8. Spark大数据的学习历程

    Spark主要的编程语言是Scala,选择Scala是因为它的简洁性(Scala可以很方便在交互式下使用)和性能(JVM上的静态强类型语言).Spark支持Java编程,但对于使用Java就没有了Sp ...

  9. 大数据公益课堂成就你高薪之梦,30W,50W,100W...

    从之前的知道“大数据”这词,到2013年正式开始了解大数据领域,再到2014年深入研究大数据相关的领域,到现在逐渐影响周围的同学.朋友和家人.大数据技术将给我们带来的远不止我们想到的这些.曾经我身边的 ...

随机推荐

  1. 使用k-means对3D网格模型进行分割

    使用k-means对3D网格模型进行分割 由于一些原因,最近在做网格分割的相关工作.网格分割的方法有很多,如Easy mesh cutting.K-means.谱分割.基于SDF的分割等.根据对分割要 ...

  2. SSH整合常见错误

    spring+hibernate出错小结: (1)java.lang.NoClassDefFoundError: org/hibernate/context/CurrentSessionContext ...

  3. (转载)OC学习篇之---类的初始化方法和点语法的使用

    昨天介绍了OC中类的定义和使用,今天我们来继续学习类的初始化方法和点语法的使用. 一.首先来看一下类的初始化方法 在Java中我们知道一个每个类都有构造方法,这里的初始化方法就是和构造方法一个概念的, ...

  4. Java中可重入锁ReentrantLock原理剖析

    本文由码农网 – 吴极心原创,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 一. 概述 本文首先介绍Lock接口.ReentrantLock的类层次结构以及锁功能模板类AbstractQue ...

  5. 第三百零一天 how can i 坚持

    其实真搞不大懂自己.不喜欢巴结人,也不喜欢阿谀奉承,但老是感觉自己却又在那么做,是对自己要求太高了,想太多?? 郭娜好像把我拉黑了,拉黑就拉黑吧.或许真不合适. 睡觉.

  6. PC问题-可以PING通IP,PING名字不通,可以远程,但不能访问共享文件夹?

    问题现象:可以PING通IP,PING名字不通,可以远程,但不能访问共享文件夹? 问题原因:目标主机中NetLogon服务未启动. 问题处理:远程打开目标主机,“我的电脑-管理-服务-启动(改为自动) ...

  7. POJ 3321 Apple Tree (树状数组+dfs序)

    题目链接:http://poj.org/problem?id=3321 给你n个点,n-1条边,1为根节点.给你m条操作,C操作是将x点变反(1变0,0变1),Q操作是询问x节点以及它子树的值之和.初 ...

  8. CommandLine 和 Options

    用到的jar包 <dependency> <groupId>commons-cli</groupId> <artifactId>commons-cli& ...

  9. js面形对象(2)

    1.​原型与in操作符     有两种方式使用in操作符:单独使用和在for-in循环中使用.在单独使用时,in操作符会在通过对象能够访问给定属性时,返回true,无论该属性是存在实例或者是存在于原型 ...

  10. 解决iPhone上select时常失去焦点,随意跳到下一个输入框,影响用户操作

    window.addEventListener('load', function() { FastClick.attach(document.body); }, false); //300s延迟,解决 ...