3分钟了解入门「机器学习」该学习什么?(下)


本文来自作者 刘明 在 GitChat 上分享「机器学习/深度学习书单推荐及学习方法」,阅读原文」查看交流实录

文末高能

编辑 | 坂本

写在前面

本人是个对数学和人工智能极其感兴趣的人。平时,我也在线上线下经常与国内外的朋友讨论人工智能的各种方面,无论是技术方面还是哲学方面。

我帮助过很多实习生和网上的学生,带领他们从入门一步步过渡到足够从事数据挖掘工作。

在此期间,我发现了一件很有趣的事情,所有技术好的数据分析/挖掘工作者,都是喜欢”主动学习”的人。

这次在 GitChat 上发起 Chat,就是想帮助更多喜欢数据科学、喜欢主动学习的人能够少走弯路。

这个 Chat 中主要讨论的是如何入门学习机器学习/深度学习的理论知识、如何着手数据挖掘项目以及从事数据挖掘相关岗位所需要的能力。

正文

不论你是学生、想转行数据岗位的在职程序员,都需要自学达成目标,我本身就是一个苦逼自学者例子。

我的本硕都是计算机专业,由于本科搞的是算法编程,硕士开始搞机器学习方向本来也比较适合,但机器学习算法真的让我头疼了很久。

在慢慢攻克了机器学习算法,并学到一定程度后,我发现真正的数据挖掘绝不仅仅是会机器学习算法就够了,还要学习很多东西,比如数据清洗等等技巧。

作为一个”过来人”,我明白大家在学习中会遇到的困惑。我此次,就是来帮助大家解除困惑。

关于机器学习,非数学/统计专业的人都会有这些疑问:

  1. 到底要把数学学到什么程度才能够无障碍地推导机器学习算法?实变、复变、泛函、矩阵论到底要不要全都学会?

  2. 入门机器学习到底要看什么书?

  3. 除了机器学习,真正的工作中还哪些必要技巧?

  4. 如何入门深度学习?

  5. 如何着手开始进行数据挖掘项目?

下面,我会对以上问题逐个进行细致分解,结合自己的学习及工作经历为你一一解答,并给你提出适合建议。

数学要到什么程度?

从最基础的来说,微积分、线性代数与概率论是学习机器学习的必会内容。

相信大家看到这个答案会很失望,但是放心,这绝对不像你想象的那么难。

在本科期间,我们学习数学的目的其实是为了期末考试,需要做很多习题。

而在机器学习中,使用到的仅仅是这些他们的特性,而不需要用他们来解题,所以只要知道他们的定义就可以。

比如线性代数,我们仅仅需要了解向量、矩阵和逆矩阵等等的定义,而不需要去真正的计算逆矩阵。

这说明,我们不需要花费大量时间去学习数学,而只需要了解并记住他们的定义。

那么,看什么书好呢?我个人给大家推荐的是《金榜图书》的考研数学讲义系列的《高等数学辅导讲义》、《线性代数辅导讲义》和《概率论与数理统计辅导讲义》。

这三本书算是考研数学入门级,他们的优点是简洁、全面,把教科书中几百页的内容压缩到几十页,如果不看其中的例题,几天就能看完。

这三本书外,还有很多数学内容需要学习,比如 Jacobian 矩阵、张量、特征分解、奇异值分解(SVD)和 Moore-Penrose 伪逆等等……这些是实分析、复分析、矩阵论等书中的内容,也是机器学习的必会内容。

看到这里你可能会开骂了,我要是会这些,干嘛还看你写的东西!

放心,我就是来给你解决这些问题的。之前我说过,推导机器学习算法的过程中,需要的是了解数学定义,而非系统地学习每门课。

然而想要通过看书学习某一个知识点是很难的,因为需要很多先修知识,否则根本看不懂。

这里,给大家推荐一个非常良心的免费在线课程可汗学院(www.khanacademy.org,需要科学上网),这个网站中包含很多学科,其中的数学部分几乎把所有机器学习中所需要的数学知识都涵盖到了,而且每个知识点的讲解都是独立的视频,每段视频大约只有几分钟,还有配套的在真实应用中的例子。

比如向量微积分中的 Jacobian 矩阵这个知识点,可汗学院将其分为5个短视频来讲解:

1. Jacobian 矩阵的先修知识;

2. 多变量函数的局部线性法;

3. Jacobian 矩阵;

4. Jacobian 矩阵的计算;

5. Jacobian矩阵的决定子应用

这5个短视频从最基础的先修知识慢慢过渡到最难的部分,每个短视频只有3-8分钟,已经足够让我们理解 Jacobian 矩阵了。

入门机器学习到底要看什么书?

关于入门机器学习要看什么书,网上已经有很多人提出过建议。 而我的建议是:不看书。是的,不看书。

所有的书都假设你的数学基础已经非常好,很多数学推导并没有告诉你其中的根源,使你无法看下去。

只有一个人,他假设你只懂最基础的微积分和线性代数——林轩田。他在台大开设的两门公开课”机器学习基石”与”机器学习技法”(网上很容易找到),基石是机器学习基础、技法是机器学习算法推导。

不过,这两部视频似乎在各种方面都不如 Andrew Ng 的机器学习课程。而且几乎每一个看过他的 “机器学习基石” 课程的人都表示非常不喜欢,看不下去,原因有三:无聊、推导公式的过程太细,不知道学过之后的用处。

讲到这里,大家可能会想到,当年学习高等数学的时候,好像也是这种感觉?

对的,他的课程非常”无聊”但确实很重要,而且他讲的每一节课只要认真思考就一定能够听懂。

他讲的是机器学习中最重要的基础,当你真的懂一点机器学习的时候,反过来看基石中讲的内容,比如 Break Point、VC维、误差衡量、线性回归、非线性转换和梯度下降,哪一个是不重要的?

当你看完”机器学习基石”,我建议你继续学习他的”机器学习技法”。

我相信你刚开始学习”技法”的时候,会发现他比上部更加无聊,于是忍不住去看对应的书籍,想要避免看这种无聊的视频。

然而,你最后一定还会回来继续看他的视频,因为你会发现他的视频虽然巨无聊,但讲的真的很细致,每一步推导都讲的很明白!

在学习”技法”课程的时候,你可以同步的看书了,因为光看视频,很多东西会忘记,要不断的看书复习。

这里,我推荐给你三本书:《统计学习方法》by李航、《机器学习》by周志华、《机器学习》by Mitchell。

这三本书都是机器学习界入门的经典书籍,我之所以同时推荐三本,不是让你做三选一的选择题,而是把这三本对照着看:

  • 《统计学习方法》对公式的推理深入;

  • Mitchell 的书重在算法思路的讲解,对公式的推理很浅显,但易懂;

  • 周志华的书内容更加广泛且包含很多两本书中没有的内容。

建议学习的时候以李航的书为基础,与视频对照着看;使用周志华的书进行补充;当无法理解某处的时候看 Mitchell 的书。

除了机器学习,真正的工作中还哪些必要技巧?

真正的工作和项目中,只会机器学习是不够的。最早的就是对数据进行清洗,数据清洗工作和机器学习算法的选择同样重要。

数据清洗注意需要掌握两点:数据处理与正则表达式。

这里推荐三本书:《Python数据处理》、《数据科学实战手册(R+Python)》与《正则表达式经典实例》,前两本讲的是数据清洗处理,最后一本讲的是正则表达式的语法。

这三本书讲的是通用技巧,在具体工作中所需要的方法是不同的,不要把自己禁锢与书本中,要在具体的工作中自己思考。

如何入门深度学习?

目前,深度学习并非工作的必备技能,仅仅是加分项。所以我建议大家在掌握了一定的机器学习知识后,再开始学习深度学习的内容。

深度学习最好的入门书籍,莫过于《神经网络与深度学习》by Michael Nielsen,该书有中文版。这本书通俗易懂,用最简单的语言和例子阐述了概念和原理。

但这本书虽然通俗,却非常细致的把深度学习最基础的核心算法——BP网络的数学公式仔细地推导了一遍,乍一看很容易,但如果多读几遍,相信大家每一遍都会有不同的收获。

在读了《神经网络与深度学习》后,需要开始学习 CNN、RNN 等主流的深度学习网络了,学习这些网络的时候,也需要把他们的 BP 算法推导清楚。

目前我见过的讲解最好的不是书籍,而是一位网名为 hanbingtao 的作者在网上写的Blog,该Blog把深度学习从最基础的感知机基础到 CNN、RNN、LSTM 的数学公式都推导了一遍,而且很浅显易懂,强烈建议大家阅读。

如何着手开始进行数据挖掘项目?

着手数据挖掘项目,首先要选择一门合适的语言。数据挖掘可以用很多语言完成,R、Python、Java 等等都可以。

但我个人建议大家使用 Python,因为使用 Python 相对简单且大多数公司都要求使用 Python 进行工作。 

刚开始进行数据挖掘项目的时候,很多程序员出身的人会陷入一个误区,认为既然是做项目就要把算法的每一个细节都自己实现,而是不使用现成的工具包,担心自己会变成调包侠。

其实,每个高手都是从调包侠开始的,而且自己写的代码都是使用 Python 完成的,效率与工具包中直接调用C语言的代码相比要差很多。

而且,在入门阶段,不应该花费极多的时间只为了对算法造轮子。

在后期,当你的能力足够而进行一些非常复杂的项目的时候,才会觉得工具包满足不了你,那时候再顺其自然的造轮子岂不甚好。

说到 Python 的机器学习工具包,不能不提到 scikit-learn。scikit-learn的算法非常齐全(几乎把所有你能想到的机器学习算法都包括在内,甚至数据预处理、特征提取等等都有现成的工具),调用简单(两条语句就能训练出一个模型),API非常友善(可以到官网)。

学习 scikit-learn 最好的一本书是《机器学习系统设计》by里彻特。这本书共12章,除去最后一章外,每章都带着我们从最基础一步步地做出一个数据挖掘项目,其实把这本书看完,其实已经有最基础的数据挖掘项目能力了。

除了 scikit-learn 外,还有一个深度学习框架也非常好,叫做 Keras。

Keras 的底层可以用 TensorFlow 或者 Theano,在理解神经网络的情况下,学习 Keras 只需要花费极短的时间就可以上手。

这里建议大家学习一个免费视频课程:莫烦 Python( https://morvanzhou.github.io/tutorials/machine-learning/keras/ )。

这个网站是一个免费的机器学习视频课程网站,站主莫烦大神用最简洁的方式会使你在不到一个小时的时间内就掌握 Keras 的语法。

以上是所用到的工具,学完《机器学习系统设计》已经有基础的实战能力,但其中的一些流程该书并没有系统地介绍。

如果想要更加系统的学习,推荐大家阅读《数据挖掘导论》,这本书包括分类、关联分析、聚类和异常检测的项目流程实例,还提供数据集和幻灯片,非常适合系统的学习。

在以上的事情都做完后,大家可以上 Kaggle 进行小的比赛,只要足够努力,拿到一些小比赛的 Top5% 还是有机会的。

写在最后

当你一步步的按照我给你的建议进行学习之后,会发现其实这些理论其实很简单,但实际应用起来绝非易事,这也构成了大多数搞数据挖掘的人能力平庸无奇的事实。这里,我对大家有几条私人的建议:

  1. 机器学习的理论基础一定掌握好,这是未来长远工作的筹码。

  2. 在学习算法的过程中,永远是对算法的效率进行分析揣摩在第一位,具体的代码实现在第二位,不要本末倒置。

  3. 对算法的学习要掌握所谓的”分寸”,相对重要的部分多学,不太主流的部分稍稍了解即可。

  4. 英语很重要,你会越来越发觉英语的重要性,请坚持每天学习一点英语。

  5. 学习机器学习算法要真正学懂,某些小的地方学不懂便跳过,最终会造成很多漏洞,而这漏洞,填补起来要花费很大的精力。

祝您学习的过程是愉快的,前路虽艰,行则心安。

近期热文

小白入坑 Web 渗透测试必备指南

前端攻城狮该了解的 Vue.2x 响应式原理

前端工程师“应试”指南

如何用 Node.js 爬虫?

两款敏捷工具,治好你碎片化交付硬伤

福利

「阅读原文」看交流实录,你想知道的都在这里

已标记关键词 清除标记
相关推荐
<p class="ql-text-indent-1 ql-long-39788408" style="text-indent:29.3333px;font-size:11pt;color:#494949;"> <span class="ql-author-39788408" style="color:#000000;">人工智能</span><span class="ql-author-39788408" style="color:#000000;">作为现在最为火热的领域,使得机器学习被越来越多的人所了解机器学习难学,主要的难度在于算法</span><span class="ql-author-39788408" style="color:#000000;">模型多不好理解,各种各样的工具不知道如何使用,实际项目不知道如何开发。</span><span style="color:#000000;">本门课程将系统入门机器学习,课程内容不光是对算法的学习,还包括诸如算法的评价,方法的选择,模型的优化,参数的调整,数据的整理,等等一系列工作。让大家对机器学习算法有个全面的了解,并</span><span style="color:#000000;">应用到你的实际项目中。</span> </p> <p> <span style="color:#337FE5;"><strong>整体课程设计</strong></span><strong></strong> </p> <p class="a" style="text-indent:21pt;"> 课程的所有内容都经过讲师的精心挑选。同时,在层次划分上,循序渐进,难易兼顾。让学员们更容易的入门。课程中既包含核心的基础知识,也有高级的进阶操作,做到了<span>“</span>老少皆宜<span>”</span>。 </p> <p> <span style="color:#337FE5;">课程分为基础篇,进阶篇和实战篇</span> </p> <p> <b>基础篇</b><span style="line-height:1.5;">:基础篇主要讲解高数基础。同时加入了很多</span><span style="line-height:1.5;">Python</span><span style="line-height:1.5;">入门算法,为之后自己动手做实验,打好基础。</span> </p> <p> <b>进阶篇:</b><span style="line-height:1.5;">之后是机器学习的核心,精选线性回归、逻辑回归、聚类算法、</span><span style="line-height:1.5;">EM</span><span style="line-height:1.5;">算法等等机器学习的经典算法。</span> </p> <p> <b>实战篇:</b><span style="line-height:1.5;">真正要掌握一门编程语言,仅仅学会分散的知识点是不够的,还必须要把知识点串联起来,做一些实际项目才能有更深的领悟与提高。我会通过</span><span style="line-height:1.5;">Kmeans</span><span style="line-height:1.5;">篮球数据分类这个具体的实战案例,带你综合运用前面所学的机器学习知识。</span> </p> <p> <img src="https://img-bss.csdnimg.cn/202006220524105596.jpg" alt="" /> </p>
<p> 本教程为官方授权出品 </p> <p> <br /> </p> <p> <span style="color:#404040;">伴随着大数据时代的到来,作为发掘数据规律的重要手段,机器学习已经受到了越来越多的关注。而作为机器学习算法在大数据上的典型应用,推荐系统已成为各行业互联网公司营销体系中不可或缺的一部分,而且已经带来了真实可见的收益。</span><br /> <br /> <span style="color:#404040;">目前,推荐系统和机器学习已经成为各大公司的发力重点,众多知名公司(如亚马逊、netflix、facebook、阿里巴巴、京东、腾讯、新浪、头条等)都在着眼于将蕴含在庞大数据中的宝藏发掘出来,懂机器学习算法的大数据工程师也成为了新时代最紧缺的人才。</span><br /> <br /> <span style="color:#404040;">精心打造出了机器学习与推荐系统课程,将机器学习理论与推荐系统项目实战并重,对机器学习和推荐系统基础知识做了系统的梳理和阐述,并通过电影推荐网站的具体项目进行了实战演练,为有志于增加大数据项目经验、扩展机器学习发展方向的工程师提供更好的学习平台。</span><br /> <br /> <span style="color:#404040;">本课程主要分为两部分,机器学习和推荐系统基础,与电影推荐系统项目实战。</span><br /> <span style="color:#404040;">第一部分主要是机器学习和推荐系统基础理论的讲解,涉及到各种重要概念和基础算法,并对一些算法用Python做了实现;</span><br /> <br /> <span style="color:#404040;">第二部分以电影网站作为业务应用场景,介绍推荐系统的开发实战。其中包括了如统计推荐、基于LFM的离线推荐、基于模型的实时推荐、基于内容的推荐等多个模块的代码实现,并与各种工具进行整合互接,构成完整的项目应用。</span><br /> <span style="color:#404040;">通过理论和实际的紧密结合,可以使学员对推荐系统这一大数据应用有充分的认识和理解,在项目实战中对大数据的相关工具和知识做系统的回顾,并且可以掌握基本算法,入门机器学习这一前沿领域,为未来发展提供更多的选择,打开通向算法工程师的大门。</span><br /> <br /> <span style="color:#404040;">谁适合学:</span><br /> <span style="color:#404040;">1. 有一定的 Java、Scala 基础,希望了解大数据应用方向的编程人员</span><br /> <span style="color:#404040;">2. 有 Java、Scala 开发经验,了解大数据相关知识,希望增加项目经验的开发人员</span><br /> <span style="color:#404040;">3. 有较好的数学基础,希望学习机器学习和推荐系统相关算法的求职人员</span> </p>
©️2020 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页