loser的反思和总结

啰嗦一下

马上面临就业,之前就一直在思考以后发展研究的方向,年初刚好听了一个教授关于机器学习的讲座,引起了我很大兴趣,本科时做过算法、现在做优化,有一定的数学建模经验,我开始关注这一领域。开学后,小伙伴找到了我,开始以为和以前的数学建模比赛一样,预想的是我来建模,她来做数据处理。比赛的任务是根据用户4个月在天猫的行为日志,建立用户的品牌偏好,并预测他们在将来一个月内对品牌下商品的购买行为。

s1

第一季是下载到本地的数据,可以使用各种语言和工具,一开始就用matlab上神经网络来训练,当时还没有提取特征的概念,训练的效果不行。然后就是用规则,把特征加权相加,设置阀值,来得到结果。后来小伙伴还做了未交互的品牌推荐,和规则融合,就这样挺过了第一季。

第一季最后成绩7.10%,排名173。当然第一季只是给大家预热,真正厮杀到白热化的第二季才是重头戏。

s2

第二季是连接阿里的虚拟机,在ODPS平台上进行操作,ODPS是阿里自主研发的分布式计算平台。在看了ODPS的操作手册后就感觉亚历山大,没用过sql,没用过python,没用过java,没用过mapreduce(其实原理都还不知道)。

因为是抱着学习的态度来参加比赛的,所以一开始就想自己去建立实现模型,在用sql实现了s1用的规则之后,我就开始研究模型:逻辑回归、随机森林,模型搞明白之后,开始看怎么在分布式的框架实现,完事我就和小伙伴说,我们还是用平台里自带的算法包吧,我觉得自带的算法就挺不错哒

在用s1的特征用逻辑回归实现了后,已经一个多月过去了,这时才基本熟悉平台里的工具,但是小伙伴要去百度实习,我忙着写论文,忙于实验室主办的一个国际会议,以及准备开题报告答辩,两个人都放下了比赛。等我忙完登录虚拟机已经是7月17号了,我们竟然有47天没有登录了。这时我几乎全身心都投入了比赛,虽然时间不多,但是完全有逆袭的机会,可最后成绩还是只有5.32%,排名108,下面做一些失败的总结:

1、队友。这个问题很多参赛的都提到过,我觉得除非是大神级的可以一个人做到全面,大部分人一个人做下来实在是很累。到了第二季就是我一个人在做,一是敲代码,debug,跑程序都是非常耗费精力,最重要的是一个人的思维很容易受限,虽然也和小伙伴商量,但是没有深入理解赛题,也并没有好的思路。最后在怎样抽取特征时,我几乎是绞尽脑汁,作为一个初手,实在是很难有好的思路。

2、特征。因为大家用的模型基本一样,所以重点就在特征的选取上,我一直在关注这群里大神们的讨论,还看了内部赛选手的经验之谈,最终选取出了100+的特征。大神们都已经公布了自己的方法和特征,对比之后,发现特征还是比较单一,针对用户特征、商品特征、用户-商品特征,都是统计某时间段内行为次数,还有天数。并且没有分析特征间的关系,特征的强弱性,造成虽然有100+特征,但是真正起关键作用的强特征并不多。其实特征的选择还在于对业务的理解,没有业务经验,单纯靠自己的主观观念去理解,肯定会有局限。

3、有想法就去实现。我的特征中缺少的就是特征间的耦合,比如各种比值类型的特征,这个想法有过,并且做了尝试,但是代码有误,然后。。。就没有然后了。时间紧迫,我就没在管,其实最后一段我也有点急躁,代码各种bug,反而浪费了时间。特别是前期就要去做各种尝试,不要到最后了还有想法没有实现。

4、做好线下测试。特别是提取代码时,一定要用一个小样本测试代码是否有误,经常在花了很久,跑完程序时,才发现代码错误,极其浪费时间。如果能发现错误还好,发现不了找错都不好找,比赛结束了我还发现,提交的一组加了时间因子的特征的代码中,日期是错的。最后一段由于资源紧张,我都是直接线上提交,就没有在线下测试,经常造成提交了才发现错误,浪费提交机会。所以一定要线下调试好了,再线上提交,不要因为小bug浪费时间。

5、要常总结思考。最后我花了很大精力在调参上,当然不是说调参不重要,好的参数,肯定会提高成绩,但是和好的特征比着还是差远了。当我意识到成绩低更多是因为特征时,已经在调参上浪费太多精力,并且换了特征,最好的参数就不一定是之前的了。

6、坚持。最后一段时间刚开始投入了很大精力,但是由于思路和方法不对,特别是经常有bug,成绩虽有提升,但还达不到自己期望,在换了数据后,就有点懈怠了。现在想来,最后几天把当时的想法给实现了,最起码成绩会比现在更好。比赛结束后,心有不甘,改了之前bug,又实现了一些想法,线下测试果然有提升。

总之,对于抱着学习心态参赛的我,已经学到了很多,数据的处理、特征的提取、几个模型的理解,还用了几个没用过的语言、熟悉了ODPS的平台、用了mapreduce的框架,虽然中间一段时间没有做比赛,但最后我还是坚持到了最后一天,就是因为对于能处理这么大的数据,能用ODPS里的工具,特别是每天早上五点自动醒来看成绩时的喜悦和失落,都以莫大的魅力吸引着我,很久没有这种全身心专注的做一件事的感觉了。当然群里热闹的讨论,热心的工作人员都赋予了比赛更多的意义。没事看大神们在群里发言,逛大神们博客都是一种享受。

一些关于比赛的博客,感谢这些博主,让我能够快速的上手。

关于sql的使用和离线评估的构建:

http://wuchong.me/blog/2014/04/26/odps-sql-introduction/?spm=5176.7189909.0.0.0ZwHzz

Mapreduce入门:

http://beader.me/2014/05/05/odps-mapreduce/

一个内部赛选手的心得,虽然没怎么看懂,但又好像学到了点什么:

http://bbs.aliyun.com/read/158002.html?spm=5176.7189909.0.0.tYuVae

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值