无标题文章

作者:赵鹏

链接:https://www.zhihu.com/question/27292215/answer/133141387

来源:知乎

著作权归作者所有,转载请联系作者获得授权。

我是一个从传统行业转行到数据挖掘的应届生,我从我的角度回答一下这个问题吧,希望能对其他的同学有帮助,不过毕竟是个人经历,有一定的局限性,还请大家以批判的眼光看待这篇回答。

1. 前言

答主是2017应届毕业生,已签美团的数据挖掘岗,本次秋招一共投递了39份简历,做了19场笔试,面了12家公司,从一开始的完全不自信,到被折磨的要死但还是坚强的活下来,到最后的各种坦然,成长了许多。

答主本硕均是机械专业,在校学习成绩中等偏上,原本想从事嵌入式方向的工作,无奈学了两个月被导师叫停,说没有项目学完就忘,遂作罢。研二上在没有目标的情况下系统的学习了C++和数据结构,入门了Python。研二下开始学习机器学习相关知识,从四月下旬开始出差给导师做无聊的项目,白天出去搬砖,晚上回来学习,暑假没回家继续学习(暑假其实就两周),直到八月底开始找工作。

整个自学的过程一年左右,主要内容有计算机专业的基础知识,基础的机器学习知识,由于时间的原因,没有学hadoop和spark,这点确实是短板,各位如果有时间,最好能看看。

2. 基础知识自学

面试的时候一般先问基础知识:编程语言,数据结构和算法,操作系统和网络编程(数据库相对而言问的比较少),前两部分非常重要!如果前两部分非常熟悉,后两部分稍微会一点都能过面试,但是前两部分只会一点或者不会,九成九会跪在一面。答主就是前两部分比较熟悉,后两部分背了背常见的面试题,所有的面试都走到了终面。

2.1 编程语言

编程语言常问的是C/C++和Java,答主学的是C++。我首先把C语言圣经《C程序设计语言》详细的看了一遍,然后系统的看了《C++ Primer》(这本书已经出到第五版了),如果其他同学时间充裕的话,可以再把《Effective C++》看一下。

此处说明一下,看书不是简单地“看”,而是不看书能手敲出书上的例子,能独自做课后题。在这个过程中,常常会发现自己写的代码和书上代码,参考答案的代码有一些不一样,重点分析不一样的部分,会有很大的收获。我常常用笔抄一些关键代码,然后在纸上画出一个章节的简单思维导图,默记一会,把纸扔掉,最后把没有记住的知识点总结在为知笔记中,每过一段时间复习一下。

如果学的是C++,学完以后,要能回答下面的问题:内存怎么管理,const有什么用,引用和指针的区别,虚函数和纯虚函数,虚函数表,继承,重载和多态,模板函数,模板类,容器等相关知识。

2.2 数据结构和算法

网上大多人推荐的是《算法导论》或者《数据结构与算法分析(C语言描述)》,《算法导论》确实是一本很牛逼的书,但是真的太难啃了,不适合“快速学习”,这里我推荐《算法(第4版)》,这本书使用Java讲解常见的算法,但是完全木有关系,Java零基础的我看起来没有任何压力,因为该书几乎没有用到Java的任何特殊语法。

仅仅看《算法(第4版)》是不够的,还需要《剑指offer》《程序员代码面试指南》,《剑指offer》一定要多看几遍,里面的题目真的被考烂了,被问到原题的概率很大。《程序员代码面试指南》属于提升书籍,里面按照专题把题目归类了,强烈建议把动态规划专题看一遍。

如果只会算法而不能把代码写出来,也不行,锻炼这个能力只能靠OJ了。这里推荐去牛客网刷题,可以先刷《剑指offer》或者学习《直通BAT面试算法精讲课》,然后再刷leetcode专题,刷leetcode的时候可以按照网上推荐的顺序刷,非常舒服(第一次做的时候,可以先跳过hard,最后再做)。

数据结构和算法常考的是堆,栈,排序,链表,二叉树和动态规划等,相关的问题多练练,面试的时候才能写得比较快。有句话这么说,考试并不是让考生在考场上把不会的题做出来,而是检查考生会什么,不会什么,仅此而已。面试的时候,如果反应快一点,能给面试官留下很好的印象。

2.3 操作系统和网络编程

这里答主没怎么学,时间不够,看了几章《深入理解计算机系统》就看不下去,罪过。。。

后来就去搜索常见的面试题:进程和线程的区别有哪些?进程/线程间如何通信?如何防止线程死锁?TCP三次握手四次挥手是个什么步骤?我把这些问题的答案背下来,等面试官问我的时候我再背出来,然后坦白自己没有学过操作系统和网络编程,这些都是我在网上找答案背的,再深一点我也不会了。一般情况下,面试官的表情会比较诧异,不过也就不再讨论这个话题了。

这部分怎么学我不清楚,各位还是咨询计算机专业的同学或者看看别的答案吧。

2.4 个人学习历程

答主花了半年时间(研二上)点了编程语言,数据结构和算法的技能点,顺道点了一些别的小技能点。这段时间主要看了《C++ Primer》,《算法(第4版)》,《Learn Python The Hard Way》,《鸟哥的Linux私房菜》,按照廖雪峰的教程把git学了一下,开始用markdown写博客。

3. 机器学习自学

今年的机器学习很火,稍微大一点的公司都招这个方面的人才,我的感觉大多人都是自学的,貌似本科开这个专业的学校很少?

个人理解的机器学习主要有三个方向(按照岗位要求分):数据挖掘,自然语言处理和深度学习。数据挖掘主要是搜索排序,反作弊,个性化推荐,信用评价等;自然语言处理主要是分词,词性分析等;深度学习主要是语音和图像识别。

(此处经知友@吴文君提醒,数据挖掘是一个较为宽泛的概念,包含机器学习,自然语言处理和深度学习,我在这里把概念搞混了,大家不要被我误导哈)

我找的是数据挖掘方向,所以就说说这个方向的个人学习经验吧。

主要准备两个方面,一方面是掌握常见机器学习算法原理,另一方面是应用这些算法并解决问题。

3.1 常见机器学习算法

和大部分人一样,我是看吴恩达老师的《机器学习》视频入门的,看了两遍,说实话第一遍自己以为懂了,看第二遍的时候才发现第一遍的懂了是“假懂”,第一遍懂得就是皮毛。吴恩达的视频有两个版本,一个是网易公开课在教室讲课录制的版本,另一个是在自己办公室录制的版本,我看的是在办公室录制的版本,看了网易公开课版本的目录之后,个人感觉网易公开课的要难一点。

看完视频以后,需要自己动手实践加深理解,这里我主要看《机器学习实战》和《统计学习方法》,前者全是实践没有理论,后者全是理论没有实践,所以结合起来学习非常棒。我主要按照《机器学习实战》的目录学,涉及到什么机器学习模型,就去《统计学习方法》中看该模型的数学推导及证明,然后把《机器学习实战》上的代码敲一遍,验证一遍。

后来市面上出了一本很好的机器学习教材:周志华老师的《机器学习》。我现在的建议是主要按照《机器学习》的结构走,《机器学习实战》和《统计学习方法》作为辅助,《机器学习实战》有对应模型的代码就敲一遍,没有就算了;《统计学习方法》的证明一般比《机器学习》更深一点,有对应的证明就看,没有就算了。

上面三本书吃透,基础就差不多了,但是面试的时候会发现,除了DT,LR,SVM问得比较多之外,随机森林和GBDT问的也非常多,以及参数如何调整,模型如何评价等等。这些东西只能求助于搜索引擎和论文了,暂时没有别的系统的学习方法。

补充一下,推荐算法问的也比较多,把项亮的《推荐系统实践》好好看就行了。

学完这个部分应该会的问题,我放在了最后,以免影响排版。

3.2 应用这些算法并解决问题

在实际的工作中,硕士生其实大多是用算法而不是发明算法,所以还得学会怎么用算法解决实际问题。这里建议参加Kaggle的比赛,都是比较实际的问题,而且还有排名,面试的时候也有一定的说服力。

这里主要学一些Python的包就行了,如numpy,pandas,matplotlib和sklearn等,推荐一本五星级好书:《利用Python进行数据分析》。

这一部分关于特征处理的问题问的比较多,比如怎么选相关特征,如何清洗数据,以及选取什么样的机器学习模型。

3.3 个人学习历程

机器学习部分答主也花了半年的时间学习(研二下),看了《机器学习实战》和《统计学习方法》,《机器学习》只看了几章,《利用Python进行数据分析》看了一大半,《推荐系统实践》看了一半。机器学习相关的东西得经常复习,尤其是推导部分,SVM的推导我每隔几周复习一次,每次都有新的收获。

自己写了一个豆瓣爬虫,爬了豆瓣11W多网页共4W本书,利用PyQt写了一个界面,使用基于物品的协同过滤算法推荐书籍。

这段时间还走了点弯路,报了个课程,写了一个图片分享网站,学了一些前端和后台的东西,如HTML,CSS,JavaScript和Flask等等,本来是想学完这个,把书籍推荐的那个项目从单机版做成网页版,服务于他人,结果根本没时间,做不到那一步,面试也从来没问过这些东西,囧……

4. 其它

做数据挖掘不可避免的要接触大数据,目前常用的大数据框架就两个,Hadoop和Spark,如果会一个就很有优势,在美团实习的同学说这两个都用……所以建议看完C以后,不学C++,学Java,因为Hadoop的原生开发语言是Java,资料多;相应的Spark的原生开发语言是Scala,不过也有Python的API。

具体学Hadoop还是Spark,学Java还是Scala,大家还是在拉勾网上面看自己心仪岗位的要求。反正答主目前是在恶补Java和Hadoop,希望在入职前补上短板。

5. 校招

每年3、4月份各大厂会招很多实习生,尽量出去实习,面试的时候有实习经历很有优势,哪怕公司比较小,只要你实际上在认真的做项目就可以了,有人带怎么都比自学好。答主原本计划出去实习,但是导师根本不放,心好累。

面试主要有两点要说,一是一定要先去面一下不想去的公司,熟悉一下面试流程和套路,二是一定要多看面经。答主花了两天看了近200篇机器学习岗的面经,把问题和答案都整理了一下,收获很大,后面面试碰到了好多原题。

对于答主来说,最难的不是面试,而是笔试,笔试范围广,难度大,今年要是不能全AC,进面试很难。怎么办?想办法内推吧,避免参加笔试,内推从7月份就开始了,多找学长问问,没有学长,就去论坛上发帖求内推,要不然9月份笔一次挂一次,会严重怀疑人生。

6. 推荐书单

先说答主看过的,质量保证:

C/C++:《C程序设计语言》,《C++ Primer》

数据结构和算法:《算法(第4版)》,《剑指offer》,《程序员代码面试指南》

机器学习:《机器学习》(周志华),《机器学习实战》,《统计学习方法》,《推荐系统实践》

Python:《Python核心编程(第二版)》,《利用Python进行数据分析》

其中《Python核心编程(第二版)》有点厚,像字典,不适合遍历,网上都推荐《Python基础教程》,应该也不错。

没看过的,但是评价也不错的:《Effective C++》,《STL源码剖析》;《编程之美》,《编程珠玑》;《数据挖掘导论》,《集体智慧编程》,《模式识别和机器学习》,《凸优化》;《深入理解计算机系统》,《操作系统》,《计算机程序的构造和解释》,《代码大全》,《Head First 设计模式》,《代码整洁之道》,《程序员的自我修养》。

这些书足够看3-5年了,233~

7. 小结

一定要耐得住寂寞,守得住孤独,没有人和你讨论问题,就去网上求助

一定要动手实践并且随时做笔记,要不然忘得很快

OJ尽早开始刷,最晚7月开始,9月前至少做完200~300道题

能实习就实习,不能实习一定要参加Kaggle比赛

常见的机器学习模型都能推导,会调参,能说优缺点,能和别的模型比较

彩蛋——常见机器学习问题

什么是bias和variance

k折交叉验证中k取值多少有什么关系

分类模型和回归模型的区别是什么

为什么会产生过拟合

如何解决过拟合

写出信息增益,信息增益比和基尼系数的公式

写出LR的目标函数和损失函数

LR和SVM的异同

推导SVM

SVM在哪个地方引入核函数

常用的核函数有哪些,说说它们的特点及调参方式

随机森林的学习过程

随机森林的优缺点

GBDT和随机森林的区别

如何判断决策树过拟合

线性分类器与非线性分类器的区别及优劣

特征比数据量还大时,选择什么样的分类器

L1和L2正则的区别,如何选择L1和L2正则

多分类怎么处理

如何进行特征选择

吐槽一个推荐算法,并提出修改意见

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,394评论 25 707
  • http://blog.csdn.net/david21984/article/details/57451917 ...
    紫色冰雨阅读 541评论 0 0
  • 金庸武侠小说里刻画的女人千千个,有清丽洒脱的小龙女,由爱生恨的马夫人,刁钻古怪的黄蓉,心狠手辣的李莫愁,尊贵华丽的...
    梦想2050阅读 10,903评论 1 10
  • 爱情放飞的翅膀 任牢房也无法限制他的追求 凡事的道理很简单,才发现做到最简单的才最难。 人生这条路,本来就没有回头...
    楼台花舍阅读 242评论 0 0
  • 读李笑来《把时间当做朋友》随笔 当你发现用锤子可以去钉钉子,但不能用锤子去锤锤子,不能用钉子去钉钉子时,我们竟然可...
    kangyiii阅读 379评论 0 2