国际算法竞赛赛的考试技巧有哪些呢,实战上有什么你觉得很重要的点

原标题:Kaggle冠军冲顶经验分享:怎樣11步搞定机器学习竞赛

最近,一名来自湖南长沙的小哥仅用15个月时间就冲上了Kaggle用户排行榜的首位,他的ID是Bestfitting

他本人叫做Shubin Dai,是一名数据科学家、工程师生活在长沙,目前领导着一家专注于为银行提供软件解决方案的公司工作之余,他除了喜欢在Kaggle刷榜外还是一名狂热嘚山地车手,喜欢在大自然中度过时光

在接受Kaggle采访时,他分享了参赛的心得也谈了不少机器学习竞赛的战斗经验。 量子位搬运过来鉯下为采访译文:

Q:你能介绍下你的个人信息和相关背景吗?

我的专业是计算机科学在软件开发方面拥有超过10年的经验。工作方面我目前领导着一个为银行提供数据处理和分析解决方案的团队。

大学毕业后我一直对使用数学方法编写程序来解决问题很感兴趣。同时峩也不断阅读各种计算机科学的书籍和论文,很幸运地赶上了过去十年中兴起的机器学习和深度学习热潮

Q:你是怎么开始参加Kaggle比赛的?

洳前所述我一直在阅读大量有关机器学习和深度学习的书籍和论文,但发现想要将这些算法应用到现成的小型数据集上很困难

后来,峩发现Kaggle上有各种有趣的数据集、算法和精彩讨论这是一个很棒的平台。我迫不及待想尝试下于是最开始,我参加了“红帽商业价值预測(Predicting Red Hat Business Value)”竞赛

Q:在参加新比赛时,你首先会怎么做

在比赛开始的第一个星期内,我会创建好一个初步的解决方案随着比赛进行会跟進并更新。要做到这一点我要先对这个比赛的数据和难点有一定了解,然后研究相似的Kaggle比赛及相关论文

Q:在比赛中,你会遵循一定的步骤吗

一般包括以下11部分:

Q:你仅用了15个月就很快地上升到了排行榜的第一名,你是怎么做到的

首先,排行榜的第一名说明了我在Kaggle上學习到很多知识同时我也很幸运。

在我的前几次比赛中我试图把近年来学到的理论知识转化为技巧,而且从其他人那里也学到了很多

在对Kaggle比赛有了一些了解后,我开始思考如何以系统化的方式进行比赛因为我在软件工程方面有多年的经验。

大约半年后我获得了一些奖项和一些自信。我想我可能会在一年内成为一名大师。在遥感图像识别比赛中我试图去争取金牌,所以当发现我是第一名时我感到很惊讶。

于是我觉得我应该继续使用上面提到的策略和方法,来赢得更多比赛在赢得Cdiscount图像分类比赛后,我也上升到了用户排名榜嘚前列

我想,我从Kaggle平台中受益了很多也从其他人那里学到了很多,Kaggle上的用户排名系统也激励着我不断进步我感到非常幸运,因为我從没想过我可以连续获得6个奖项在许多比赛中取得了前10名或前1%的成绩。我想我很难再重复这个经历了

但是,我参加比赛并不是为了沖顶排行榜我总是把每场比赛都视为一个学习机会,所以我试图从我不太熟悉的领域中挑选比赛这迫使我去年研读了成百上千篇论文。

Q:你上面提到你喜欢去研究已完结比赛中评分最高的解决方案你是否有什么特别的见解?

我尊重所有获胜者和精彩解决方案的贡献者他们为之付出很多努力。我总是以一种可敬的态度来研究这些解决方案

希望这篇文章能让你在Kaggle比赛中取得更好的名次!

  17年11月份左右开始备赛蓝桥杯,当然在备赛过程中了解了什么是ACM,什么是OI了解了蓝桥杯是一个什么水平的赛事,因为参与人员众多且编程水平良莠不齐所以这个比賽的奖项基本没什么含金量,曾在网上看到过国二以上才有点含金量因为学校及系别的原因,我未能参与到大学生的主流国际算法竞赛賽:ACM-ICPC中其实内心还是有点遗憾的,这也是标题的“伪”字的由来了

  现在是2019年3月18日,我统计了一下我这近一年半刷过的题目数量夶概有一千题(水题)。本周周日就是蓝桥杯省赛的比赛日期我会给自己刷过的题做个总结。

  去年蓝桥杯拿了B组国三今年报了A组,说实话今年可能连省一也拿不了了毕竟A组水平和B组水平还是有差距的。

  今年暑假开始在codeforces上认识了一个中学生(初中生,过完暑假才初三)然后我们就一起打了整个暑假的cf+刷洛谷,他打NOIP普及组本人学校是一所二本院校,身边学生的编程水平真的很低自我感觉初中生可以吊打我们,对此感到汗颜大概打了7个月的cf吧,名字始终没到蓝rating最高不过是1564。cf上的题挺好玩很多思维题,打比赛的过程其實收获了很多洛谷刷完了试炼场普及组,所以经常自嘲自己不过是初中生水平

  我曾有过3天终于调对大数除法的经历,也曾有过连續20天打游戏未碰学习的时候

  今年的比赛结果可能不会如意,但这是自己努力程度+天赋的结果没什么好后悔和不满的。

   update: 遗忘了哆年的blog,当年A组打了个省一+国二,现在成为一名小公司新手C++程序员按领导意思学习HP-Socket框架,以后负责项目的通信相关的内容非计科系毕业生表示啥都得学。。

摘要:楼天城在接受采访时称Petr Mitrichev能力全面、处事稳重以及准确率很高,是TopCoder前几名选手中唯一没有明显弱点的选手。是的这位只有27岁的俄罗斯传奇人物,他赢得了很多編程大赛的冠军通过这篇文章,我们一起来回顾下这个牛人的传奇故事吧

如果俄罗斯总统普京在适当的时候透过克里姆林宫的窗口往外望,或许他有机会看到世界上最好的电脑程序员在河对岸的谷歌莫斯科办公室里工作

这位世界上最好的电脑程序员是谁?是的他就昰只有27岁的传奇人物Petr Mitrichev,Petr Mitrichev是一名俄罗斯人虽然他只是工作于谷歌的搜索部门,但他还是赢得了编程冠军头衔

在众多编程比赛中,大部分電脑爱好者都只是为了追求奖金、旅行机会和到达一个新的高度“当你在比赛中解决一个问题,你会发现有一种满足感”,在加利福胒亚州山景城谷歌总部前的草坪上和蔼可亲但有点苍白的Petr Mitrichev却如此说道。

自2005年Petr Mitrichev从莫斯科国立大学毕业后他就一直在全球算法编程领域保歭领先地位。在这种国际最高规格的编程比赛中往往涉及无限棋盘游戏或N+1个奶牛哞哞声分贝等级,这通常需要参赛者强悍的数学分析能仂和键盘操作速度而Petr Mitrichev则以他的“短暂停顿”而出名,也就是说Petr Mitrichev差不多就是在刚看完问题后就开始着手回答问题。

对Petr Mitrichev来说这类编程比賽犹如在主观世界中提供了一个难得一见的小岛,他说:“这类比赛的美就在于它是完全无意识的不会受到人类认知的干预”,他还补充到这是他见过最公平的比赛。

不过并不只是有Petr Mitrichev才能看到算法的美因此技术公司常利用这种比赛来寻找世界上最聪明和速度最快的程序员,像Facebook和谷歌等巨头就会赞助编程竞赛里的一些顶级赛事

Petr Mitrichev崭露头角是在他十岁那一年,当时他拿起属于他哥哥的一本计算机编程书盡管Petr Mitrichev莫斯科家中还没有计算机,但他依然在第二年百位全国高中生编程比赛中获得了第60名的成绩由于他还只有11岁,评委特地奖励一台电腦给这位少年天才15岁时,Petr Mitrichev赢得了这个比赛的冠军不久之后,他开始参加国际大赛他首次亮相是在北京举办的奥林匹克信息大赛。

编程语言从Pascal换成C#后登顶

Petr Mitrichev获得现在的世界排名则是在加入编程竞赛世界联赛之后这一系列的每周和年度竞赛是由美国康涅狄格州TopCoder公司举办,咜吸引了来自世界各地超过四十万名的程序员参加而Petr Mitrichev自从把他的编程语言从Pascal换成C#后,他在世界的头名位置从2005保持至今

这样的技术与风喥造就了Petr Mitrichev极客式英雄的形象,每当他贴出一个在线视频时论坛就会有帖子仔细分析他的每次表现。在规模宏大的年度竞赛中几百个程序员都聚集在酒店的宴会厅,大厅的大屏幕都会实况直播参赛者的电脑屏幕

“当观众看到Petr Mitrichev在比赛中出现一个Bug,后来再次看到他修复这个Bug時围观人群总是出现一阵骚动”TopCoder CTO Mike Lydon如此说到,他继续称对于外行这些没什么可看的,但对这些现场观众而言却是如此的迷人

比赛中的問题往往涉及描述物理的状况然后用数学方式表达出来,而这就需要参赛者现场写一个算法比如Petr Mitrichev最近参赛的一个问题就是,在一个无限嘚国际跳棋中预测某个棋子的位置参赛者写的程序只要能够正确处理试验数据就可以得分。而在有些比赛中还包括一个挑战阶段提交數据让竞争对手的程序出错便可得分。

在这样的竞赛中当然也有奖金可拿头等奖金达/ratings

25岁的楼天城有“中国大学生计算机编程第一人”的稱号,也被参加竞赛的学子们敬称为“楼教主”他的传奇经历一直激励着众多年轻学子:从2001年开始参加计算机编程竞赛,并连获全国一等奖;2004年入选国家集训队同年获得IOI金奖并被保送到清华大学;2008年开始在首位亚裔图灵奖获得者姚期智院士的理论计算机中心攻读博士;2007姩和2009年两次带队参加ACM/ICPC全球总决赛并获得第二名。《程序员》近日专访了编程奇才楼天城让他与我们分享一下他传奇的编程竞赛之路。

记鍺:请简单谈谈你的童年经历童年哪些人、哪些事对你的影响最大?

楼天城:小时候我比较爱玩,并不怎么喜欢学习后来在8岁那年,我跟随父母一起到清华大学游玩身处中国的最高学府,我不自觉地受到了感染当时就给自己定下了童年的第一个目标——要在学习仩投入更多的精力,严格要求自己将来一定要到清华大学读书。这是童年中对我影响最大的一件事儿经过十年的努力,现在这个愿望巳经实现了

父母是童年时代对我影响最大的人,他们特别注重对我心理、性格等素质的培养而不是局限于学业。他们认为高素质对人嘚影响远远超过学习能力的影响在高中我能如愿参加各项编程竞赛,也离不开父母的支持但前提是数学等智力科目不会受到影响。这類竞赛并不属于高考科目而且势必会对学业产生一定影响,如果没有父母的支持参加竞赛这条路是走不通的。父母的支持支撑着我一矗在竞赛这条路上走下去另外,我比较喜欢各种棋类还喜欢踢足球。棋类可以锻炼人的思维而运动也会培养人的思考能力。小时候峩就考虑向对方球门底线带球(如果是向球门带球,一定是越向前越好)球门与球的角度是越变越大还是越变越小;往前带球,这个角度是越大越好还是越小越好。经过计算后我发现把球带到某个地方时,角度是最大的再往前带就会变小,而这个地方就是射门的朂佳位置结论是:这个最大的角度与距球门的距离有关。

记者:你是什么时间开始接触编程的在学习编程过程中,都开发过哪些应用

楼天城:我从高一开始学习编程相关知识。编程对于高中生来说确实是一门特别的科目。我所开发的应用中印象比较深刻的是黑白棋当时在联众的游戏平台上,它有90%的胜率最初设计的黑白棋只能搜索到六层,它的“棋艺”并不理想当时很多此类的黑白旗游戏也能莋到这一步。为了突破这一局限我研究了各种优化技术、博弈算法及搜索技术,对算法进行了优化使原来的搜索增加了四层,它的计算能力、博弈水平也随之提高了很多一时很多人都难以胜过它。虽然这个游戏并没有像李开复当年写的黑白棋那么优秀但对我来说,還是蛮有成就感的另外,我还做过很多其他的应用但大多是实现一些涉及核心的关键问题,并没有作为产品公布出来

记者:你第一佽参加编程竞赛是什么时间?在之后的竞赛经历中遇到了哪些挑战?

楼天城:2006年我第一次参加编程竞赛,是Google编程挑战赛由于一个失誤,我与冠军擦肩而过大赛结束后,我非常沮丧后来在父母和老师的鼓励下,我下定决心要再等机会赢取冠军。

两年后直到2008年,峩才有机会再次参加Google编程挑战赛并在最后8分钟赶超了当时领先于我2小时52分的南非选手,获得了冠军这次大赛对我来说可以算作一次真囸的挑战。

记者:2010年举办的topcoder公开赛你取得了一个不错的成绩,对此有什么感受

楼天城:topcoder公开赛是世界范围内一年一度的编程大赛,2010年茬赌城拉斯维加斯举行我参加的其中两项不同的比赛都进入了决赛,一项是24小时的类似马拉松的Coding比赛另一项是算法编程。这次比赛比較可惜的是在最后决赛阶段犯了一个小小的错误,而滑到了亚军的位置以后再有同样的机会,争取能够获得更好的成绩

记者:请谈┅下现在读博的感受。

楼天城:我从2008年开始在姚期智院士领导的清华大学理论计算机中心攻读博士学位现在还处于学习和提高阶段,研究方向主要是以组合算法为主总之,很幸运能够得到姚院士的指导这段时光注定将成为我人生中最重要的阶段之一,我会用心努力做恏每一天

记者:除了编程竞赛,你之前还参加过很多数学方面的竞赛有些人认为编程与数学没有太大的关系,你怎么看

楼天城:可能是我们所遇到的问题不太一样吧。我遇到的问题多侧重于核心部分往往比较抽象,对效率要求也很高要解决它们,必须有深厚的数學基础从这个方面来说对数学要求还是非常高的。

记者:你怎样看待编程竞赛对有志于投身编程竞赛的人有何建议?

楼天城:编程竞賽是一个“公平、刺激、酷”的脑力游戏除了能获得乐趣之外,还能很好地锻炼自己的思维磨炼坚韧随和的性格。参加了多次竞赛峩真实地体会到它的残酷性。编程竞赛是顶尖高手之间全方位素质的较量即使一时的状态不佳,也会让你与冠军失之交臂最终换来的將是几年的漫长等待。但也相当刺激、公平这也是我喜欢它的主要原因。我感觉自己很幸运能够接触到这些编程竞赛。这种比赛形式完全符合我的思维方式。在这十多年来无论在思维的培养还是对性格的磨炼上,它对我都起了很大的作用

至于建议,像我们这些靠悝性思维来解决问题的人平时过于依赖自己的计算能力,不相信定式、经验之类的东西而实际情况却是,有一些凭借经验才能做到的倳情我们做得不够好,只是想当然地以为计算等于一切结果却与目标相差很远。所以有很多非智力因素也需要去掌握否则,你可能會因此而落后于他人这算是我的一个建议。

另一个建议就是不要把参加竞赛当作上大学的一个途径竞赛可以帮助你提高自学能力和综匼素质,锻炼思维能力也可以帮助你提高其他科目,但平时一定要注意协调好竞赛与其他科目之间的关系不要把其他科目落下,不要讓竞赛成为影响正业的事情

(本文来自《程序员》杂志11年04期,更多精彩内容敬请关注04期杂志)


我要回帖

更多关于 国际算法竞赛 的文章

 

随机推荐