以下文章来源于GitChat,作者刘明
写在前面
本人是个对数学和人工智能极其感兴趣的人。平时,我也在线上线下经常与国内外的朋友讨论人工智能的各种方面,无论是技术方面还是哲学方面。我帮助过很多实习生和网上的学生,带领他们从入门一步步过渡到足够从事数据挖掘工作。在此期间,我发现了一件很有趣的事情,所有技术好的数据分析/挖掘工作者,都是喜欢"主动学习"的人。
这次在GitChat上发起Chat,就是想帮助更多喜欢数据科学、喜欢主动学习的人能够少走弯路。这个Chat中主要讨论的是如何入门学习机器学习/深度学习的理论知识、如何着手数据挖掘项目以及从事数据挖掘相关岗位所需要的能力。
正文
不论你是学生、想转行数据岗位的在职程序员,都需要自学达成目标,我本身就是一个苦逼自学者例子。
我的本硕都是计算机专业,由于本科搞的是算法编程,硕士开始搞机器学习方向本来也比较适合,但机器学习算法真的让我头疼了很久。在慢慢攻克了机器学习算法,并学到一定程度后,我发现真正的数据挖掘绝不仅仅是会机器学习算法就够了,还要学习很多东西,比如数据清洗等等技巧。作为一个"过来人",我明白大家在学习中会遇到的困惑。我此次,就是来帮助大家解除困惑。
关于机器学习,非数学/统计专业的人都会有这些疑问:
- 到底要把数学学到什么程度才能够无障碍地推导机器学习算法?实变、复变、泛函、矩阵论到底要不要全都学会?
- 入门机器学习到底要看什么书?
- 除了机器学习,真正的工作中还哪些必要技巧?
- 如何入门深度学习?
- 如何着手开始进行数据挖掘项目?
下面,我会对以上问题逐个进行细致分解,结合自己的学习及工作经历为你一一解答,并给你提出适合建议。
数学要到什么程度?
从最基础的来说,微积分、线性代数与概率论是学习机器学习的必会内容。相信大家看到这个答案会很失望,但是放心,这绝对不像你想象的那么难。在本科期间,我们学习数学的目的其实是为了期末考试,需要做很多习题。而在机器学习中,使用到的仅仅是这些他们的特性,而不需要用他们来解题,所以只要知道他们的定义就可以。
比如线性代数,我们仅仅需要了解向量、矩阵和逆矩阵等等的定义,而不需要去真正的计算逆矩阵。
这说明,我们不需要花费大量时间去学习数学,而只需要了解并记住他们的定义。
那么,看什么书好呢?我个人给大家推荐的是《金榜图书》的考研数学讲义系列的《高等数学辅导讲义》、《线性代数辅导讲义》和《概率论与数理统计辅导讲义》。这三本书算是考研数学入门级,他们的优点是简洁、全面,把教科书中几百页的内容压缩到几十页,如果不看其中的例题,几天就能看完。
这三本书外,还有很多数学内容需要学习,比如Jacobian矩阵、张量、特征分解、奇异值分解(SVD)和Moore-Penrose伪逆等等……这些是实分析、复分析、矩阵论等书中的内容,也是机器学习的必会内容。
看到这里你可能会开骂了,我要是会这些,干嘛还看你写的东西!
放心,我就是来给你解决这些问题的。之前我说过,推导机器学习算法的过程中,需要的是了解数学定义,而非系统地学习每门课。然而想要通过看书学习某一个知识点是很难的,因为需要很多先修知识,否则根本看不懂。这里,给大家推荐一个非常良心的免费在线课程可汗学院(www.khanacademy.org),这个网站中包含很多学科,其中的数学部分几乎把所有机器学习中所需要的数学知识都涵盖到了,而且每个知识点的讲解都是独立的视频,每段视频大约只有几分钟,还有配套的在真实应用中的例子。比如向量微积分中的Jacobian矩阵这个知识点,可汗学院将其分为5个短视频来讲解(1. Jacobian矩阵的先修知识;2. 多变量函数的局部线性法;3. Jacobian矩阵;4. Jacobian矩阵的计算;Jacobian矩阵的决定子应用),这5个短视频从最基础的先修知识慢慢过渡到最难的部分,每个短视频只有3-8分钟,已经足够让我们理解Jacobian矩阵了。
入门机器学习到底要看什么书?
关于入门机器学习要看什么书,网上已经有很多人提出过建议。 而我的建议是:不看书。是的,不看书。所有的书都假设你的数学基础已经非常好,很多数学推导并没有告诉你其中的根源,使你无法看下去。
只有一个人,他假设你只懂最基础的微积分和线性代数——林轩田。他在台大开设的两门公开课"机器学习基石"与"机器学习技法"(网上很容易找到),基石是机器学习基础、技法是机器学习算法推导。不过,这两部视频似乎在各种方面都不如Andrew Ng的机器学习课程。而且几乎每一个看过他的"机器学习基石"课程的人都表示非常不喜欢,看不下去,原因有三:无聊、推导公式的过程太细,不知道学过之后的用处。讲到这里,大家可能会想到,当年学习高等数学的时候,好像也是这种感觉?对的,他的课程非常"无聊"但确实很重要,而且他讲的每一节课只要认真思考就一定能够听懂。他讲的是机器学习中最重要的基础,当你真的懂一点机器学习的时候,反过来看基石中讲的内容,比如Break Point、VC维、误差衡量、线性回归、非线性转换和梯度下降,哪一个是不重要的?
当你看完"机器学习基石",我建议你继续学习他的"机器学习技法"。我相信你刚开始学习"技法"的时候,会发现他比上部更加无聊,于是忍不住去看对应的书籍,想要避免看这种无聊的视频。然而,你最后一定还会回来继续看他的视频,因为你会发现他的视频虽然巨无聊,但讲的真的很细致,每一步推导都讲的很明白!
在学习"技法"课程的时候,你可以同步的看书了,因为光看视频,很多东西会忘记,要不断的看书复习。这里,我推荐给你三本书:《统计学习方法》by李航、《机器学习》by周志华、《机器学习》by Mitchell。这三本书都是机器学习界入门的经典书籍,我之所以同时推荐三本,不是让你做三选一的选择题,而是把这三本对照着看:
- 《统计学习方法》对公式的推理深入;
- Mitchell的书重在算法思路的讲解,对公式的推理很浅显,但易懂;
- 周志华的书内容更加广泛且包含很多两本书中没有的内容。
建议学习的时候以李航的书为基础,与视频对照着看;使用周志华的书进行补充;当无法理解某处的时候看Mitchell的书。
除了机器学习,真正的工作中还哪些必要技巧?
真正的工作和项目中,只会机器学习是不够的。最早的就是对数据进行清洗,数据清洗工作和机器学习算法的选择同样重要。数据清洗注意需要掌握两点:数据处理与正则表达式。这里推荐三本书:《Python数据处理》、《数据科学实战手册(R Python)》与《正则表达式经典实例》,前两本讲的是数据清洗处理,最后一本讲的是正则表达式的语法。这三本书讲的是通用技巧,在具体工作中所需要的方法是不同的,不要把自己禁锢与书本中,要在具体的工作中自己思考。
由于篇幅有限,
不能全部展示完。
有兴趣的同学
可以直接扫描下方二维码继续阅读
??
所谓的“大数据”在近两年来极其火爆,甚至连街头巷尾的买菜大妈都知道。大数据最根本的基础是机器学习/深度学习,然而很多程序员们想要从事数据岗位的工作却不知如何下手。
- 数学需要吗?需要学到什么程度?
- 学机器学习要看什么书?
- 除了机器学习外,数据清洗又如何进行呢?
- 如何着手进行数据挖掘项目?
本人作为在数据挖掘岗位摸爬滚打 3 年的半老司机,希望通过本场 Chat 帮助大家拥有能从事数据挖掘相关岗位工作的能力。
实录提要:
- 现在反而是最优化方面比较虚,不知道这方面有没有什么推荐的?
- 完全没有学过线数和概率论的人,有什么建议吗?有什么在线课程推荐吗?
- 数据挖掘需要大数据支撑,需要了解 Hadoop 的知识吗?
- 机器学习在数据挖掘中的应用,具体可以做什么,有什么案例可以分享吗?
- Python 需要掌握到什么程度就可以实战了?
- 作为一个前端开发如何利用机器学习/深度学习变现?
- 如何学好基础并很有提高实战能力?
- 新手,看了很多 Python 和机器学习的书籍后遇到问题还是不知道如何着手?
- 机器学习门槛高吗,自学真的适合吗?
- 以后若从事机器学习工作,是不是现在就得学好各种数据结构和算法的知识?
- 机器学习初期最应该以什么为重,才能在之后的路上更加畅通?
- 同时学习计算机和信管两个专业的大一学生,现在这个阶段入门合适吗?
- 个人机器学习的知识和技能要到什么程度才能得到阿里的数据挖掘岗位?
- 作为一个底层驱动工作者,自学需要多长时间才能入门,学习到什么程度可就业?
- 机器学习有必要学习 Matlab 这个软件吗?