机器学习入门课程导读#
对于初学者来说,“如何才能入门机器学习”、“入门机器学习从理论开始还是从实践开始?”这都是一些老生常谈的话题。
想想自己刚刚开始接触机器学习的时候又何尝不是这样,总觉得自己一直是在门外徘徊,就是不得其中之道。幸运的是经过漫长的时间摸索,也总结出了适合我自己的一条学习路线,接下来就与大家一同分享。
下面,从整个全局的角度来介绍一下如何入门机器学习这门课程。
1. 什么是好方法?#
如何学好机器学习我认为最最最重要的并不是急迫的去选择各种学习资料或是视频,而是先从方法论上知道如何才能有效地入门机器学习。好的方法事半功倍,差的方法事倍功半。当然,从本质上来说方法没有好坏之分,只有适合不适合的区别,只有适合自己的方法才能称之为好方法(这句话值得反复读3次)。因此这也就回答了诸如“李航的统计学习方法,吴恩达的视频,关于机器学习的东西都看不懂是怎么回事?”这类的问题。
任何一本书都不可能做到让所有人都觉得“好”,这个“好”不是评价它的质量好坏与否,而是在于它适不适合自己。适合自己的才算是“好”,不适合的都是“垃圾”。同时,任何一本书几乎也不可能做到每个知识点都讲得很好,对于你来说可能某本书就其中一个算法你认为讲地很好,而且特别适合自己,但是剩下来的自己都看不懂。可能学习10个算法别人一本书就够了,而你却需要10本书,但哪怕就是这样的状况我认为也是值得的。
所以,看不懂你现在手中的材料没关系,但是一定不要放弃去找一本适合自己的书、自己的视频。
诚然,你需要明白的是刚开始入门机器学习是有一定的门槛,所以也不要轻易放弃。同时,尤其需要说明的一点就是奖励的反馈机制,选择一种阶梯式的、循序渐进式的学习方法使得自己在学习一个算法中,每过一天半天的时间都能够有收获感、成就感、喜悦感,这样才能有更强的动力继续学下去形成正向反馈的闭环。
2. 怎么进行学习?#
我第一次系统性的学习机器学习时所接触到的资料是吴恩达老师的机器学习视频课程。不得不说吴恩达老师的这门课程内容也确实浅显易懂,并且大部分内容也讲解得十分详细,对于初学者来说上课内容绝对是满满的干货。
不过学着学着,我慢慢地发现这门课似乎并不是那么的适合自己。由于当时我也没有找到更好的学习材料,所以也只有硬着头皮接着往下看。直到第二次拿着李航老师的《统计机器学习》课本继续学习时,才总结出了一套适合我自己的学习路线。
总结起来就是一句话:先抓主干,后抓枝节。
千万不要小瞧这八个字,很多朋友不能入门机器学习可能就是因为没人告诉自己这个道理。
学习一个算法就好比遍历一棵大树上的所有枝节,算法越复杂其对应的枝叶也就越繁茂。一般来讲通常有两种方式遍历这棵大树: 「深度优先遍历」和「广度优先遍历」。
对于有的人来讲可能适合第一种方式,即从底部的根开始,每到一个枝干就深入遍历下去,然后回到主干继续遍历第二个枝干,直到结束;而对于有的人来讲可能第二种方式更适合,即从底部的根开始,先沿着主干爬到树顶以便对树的整体结构有一定的概念,然后从根部开始像第一种方式那样遍历整棵大树。
相比于第一种方式,第二种方式在整个遍历过程中更不容易"迷路",因为一开始就先对树的整体结构有了一定的了解了。
因此,对于一个算法的学习,笔者将它归结成了5个层次(3个阶段):
其中,阶段一可以看成先从大树主干爬到树顶一窥大树全貌的过程,因为对于一个算法来讲最基本的就是它所对应的思想,而这也是一个算法的灵魂所在。阶段二和阶段三就可以看成遍历完整棵大树后的层次了,它是对算法里细枝末节的具体探索。
为什么会是上面这种排序呢?可以打乱吗?笔者的回答是: 当然可以,只要是适合自己的方法,那就是好方法。不过,对于绝大多数人来讲,笔者认为应该遵循上面这一学习顺序。
不过遗憾的是现在大多数读者的学习顺序是①②④⑤③或者是①②④③⑤。这两种学习顺序的弊端就在于,很多算法在其数学推导过程中是有难度的,当克服不了这个难度时很多读者往往就不会接着往下进行,而这一问题在初学者当中尤为突出。
例如对于线性回归模型来说,如果按照上图左侧①②④⑤③的顺序进行学习,那么最后得到的结果可能就是“既没学会怎么用, 也不知道为什么”。 相反,笔者一贯主张的是“先学会怎么用,再探究为什么”,这就是上图右侧的顺序。
学习过程最重要的就是要形成一个良好的正向循环,这样才会有继续学习下去的动力。
3. 学到什么时候?#
对于一个算法到底应该学到什么时候或者什么层次同样也是初学者所面临的一个问题。
可以想象,如果没有事先将一个算法的学习过程归结为如上3个阶段,此时笔者还真不知道告诉你应该学到哪种程度,因此笔者的建议是,对于所有的算法来讲阶段一是必须完成的,这也是课程「机器学习入门课程(基础)」 的目标。
但对于一些相对容易的算法(如线性回归)可以要求自己达到上述3个阶段,而对于那些难度较大的算法(如支持向量机)可以根据自己的定位选择。同时需要注意的是,对于任何一个算法的学习很少有人能做到学一遍就全懂的境界,所以也不要抱着学一遍就结束的想法。
因此,各位读者在实际的学习过程中,可以在第一次学习时先达到阶段一,然后在第二次学习时再达到阶段二,因为这样分阶段的学习方式更能够相对容易地使自己获得满足感,获得继续学下去的乐趣。最后,照着以上步骤进行,学习3~4个算法后,便算得上是初窥机器学习的门径了。
4. 课程学习目标#
上面我们从方法论上介绍完了如何入门机器学习,但是课程「机器学习入门课程(基础)」的目标只局限于上面图中的阶段一过程,这适用于不想从事于机器学习的基础研究工作,但是却又必须对传统机器学习算法的思想及使用有一个初步的了解。
在课程「机器学习入门课程(进阶)」中,将会完整按照上述3阶段列出每个算需要学习内容及顺序。
换句话说,「机器学习入门课程(基础)」是「机器学习入门课程(进阶)」的一个子集,在前者课程中的学习进度也会自动同步到后一门课程中,大家可以根据需要自行选择。
由于某些章节的内容包含了一个算法的三阶段全部内容,因此下面对这部分内容在课程「机器学习入门课程(基础)」中的学习范围进行一个说明。
以下内容「机器学习入门课程(进阶)」课程可忽略。
-
第4.4节,仅需学习第4.4.1节、第4.4.2节、第4.4.3节和第4.4.8节内容;
-
第9.4节,仅需学习第9.4.1节和第9.4.2节内容;
-
第11.5节,仅需学习第11.5.1节内容;
-
第12.1节,仅需学习第12.1.1节和第12.1.2节内容;
-
第12.2节,仅需学习第12.2.1节和第12.2.2节内容;
-
第13.1节,仅需学习第13.1.1节和第13.1.2节内容;
-
第13.2节,仅需学习第13.2.1节和第13.2.2节内容;
-
第13.3节,仅需学习第13.3.1节和第13.3.2节内容。
其余部分,按课程「机器学习入门课程(基础)」中列出的课时进行学习即可。