肖建
转自牛客网,查看原文请点击这里
背景介绍
offer:百度sp,美团sp,华为sp
面试其实在九月底就基本结束了,一直在忙一些其它的事情。最近看到牛客推出的访谈栏目,感觉非常不错,也想着能贡献自己的一些微薄经验,希望后来的学弟学妹们能少走点弯路,强撸之下完成了这篇yy贴。
ps: 因为我个人资质中庸,编程能力也很普通,所以我想我的经验应该比较具备普适性吧,大家应该会比我做的更好。
本期话题:跟你聊聊机器学习的求职攻略 所谓笨鸟先飞,我制定了个半年计划来打怪升级,大致可分三块:编程基础,机器学习理论,实战。
编程基础
编程基础这块我其实没啥发言权,牛客上随便找一个估计都比我厉害不少。
因为本身非计算机出身,大二学完数据结构基本就没看过这块,平时主要放在看论文划水上了,编程相当于是我最弱的一块。(网易,头条,滴滴笔试都跪了),所以编程不错的牛牛们请忽略这块。
一句话概括:套路+总结
我的策略非常简单粗暴,两样工具:leetcode,剑指offer(面试coding题基本来源这两块)。刷题也要讲究些策略,刚开始,刷了几天我就受不了了,感觉真tm枯燥,然后一顿胡思乱想胡搅蛮缠无理取闹之后,有了如下的套路:
- 先对题目分类,比如:数组/链表/二叉树等(leetcode有对应的分类,很贴心)。
- 对于每一类,总结出基本的模块(每一类问题都会存在一些简单模块,复杂题基本都可以猜解为这些简单模块的叠加)
- 按照上述的由各分类到各子模块对应写总结做笔记(推荐gitbook,支持markdown,格式简洁美观)
机器学习理论
关于理论这块我觉得一开始上手就看李航的统计学习方法不太好,刚入门的话,Andrew Ng的视频还是非常不错的,但是只能算是开胃菜,两到三周看完比较合适,每课都应该做笔记写总结(不写总结的学习就是耍流氓!)。这一步要快,要猛。
看完算是有了些许的概念,整体上还是比较弱的。接下来推荐重点看林轩田的机器学习基石和机器学习技法,总共三十二课,每一课都相当精彩,细致学下来需要三个月,我指的是细致的看,每一课都应该写笔记,梳理脉络,强烈建议做笔记。
踏踏实实看完,面试中让你推个svm讲讲adboost,gbdt原理基本就是手到擒来,再辅以李航的统计学习方法和周志华的西瓜书查漏补缺,基础就算比较扎实了。
当然这一块可能会有些枯燥,但林轩田老师讲的真的是非常精彩了,强烈安利,做笔记很重要,在强调遍。
实战篇
没经过实战,不能算会机器学习,理论学的好也只是提供的一个基本保障。没玩过数据,拼过指标的人是很难融入工业界的。
举个最简单的例子,在工业界逻辑回归用的是非常广泛的,你会想,为啥要用这么简单的模型,我们有那么多理论上更叼的模型为啥用这个?
模型是有适用性的,用什么模型更多取决与我们的数据。比如在推荐系统里面,随随便便做几个特征交叉,做下one hot encoding,维度就是几万,几十万维,ctr预估里面更是可以达到上亿的特征,而且这些特征是高度稀疏的,几万维特征可能只有几十维是非零的,这时候使用Random Forest 和 GBDT 这样的模型结果很可能根本拼不过 LR。
LR及其衍生算法FM,FFM在处理这种高维离散特征是有先天优势的。这样一些经验我们需要在实战中积累。
kaggle里面的比赛比较适合新人入门,氛围比较好,每个比赛有对应的论坛,时不时有人会发布自己的代码,大家集思广益一起讨论,可以学到很多。国内的比赛大多会封闭些,讨论很少,不利于新人上手。
一. 所以实战第一块就是完整跟踪kaggle上的一个比赛,因为有些比赛数据量很大,大家根据自己现有的机器配置选择合适的比赛参加,8g内存是最低的配置了。
(打比赛的话python党强烈安利《利用python进行数据分析》这本书,pandas大法好)。
二. 第二块着重于实现常用算法,svm/kmeans/LR/FM等,这一块可以作为简历亮点,去工业界毕竟是要码代码的,前面刷的题也不能白刷,所以这块可以强烈提升自信,网上有很多开源实现可以参考,写完会爱上c++。
PS:这三块应该是并行操作的,同时上,分配好时间。