一个好的学习步骤
好的方法事半功倍,差的方法事倍功半。当然,本质上来说方法没有好坏,只有适合不适合。而我下面所总结的用于入门机器学习的方法也只是我一家之言,或者是很适合我自己的方法,当然也是值得借鉴的。
在知乎隔不了多久就会看到有人提问如何才能入门机器学习。想想自己刚刚开始接触机器学习的时候又何尝不是这样,总觉得自己一直是在门外徘徊,就是不得其中之道。幸运的是经过漫长的时间摸索,也总结出了适合自己的一条路线。接下来就来与大家一同分享。
1 怎么学?
笔者第一次系统的开始学习机器学习所接触到的资料就是吴恩达老师的机器学习视频,入门内容也确实浅显易懂,并且说得也很详细。对于初学者来说,上课内容绝对是慢慢的干活,但是对于笔者自己来说却有点不那么适合。但是当时也没有更好的办法了,只有硬着头皮接着往下看。直到第二次拿着李航老师的统计机器学习课本继续学习时,才总结出了一套适合初学者的学习路线。路线也很简单,总结起来就是一句话:先抓主干,后抓枝节。
学习一个算法就好比遍历一棵大树上的所有枝节,算法越是复杂枝叶也就越多,且一般来说有两种方式:深度优先遍历和主干优先遍历(不怎么恰当)。对于有的人来说可能适合第一种:从底部的根开始,每到一个枝干就深入遍历下去,然后再回到主干继续遍历第二个枝干,直到遍历结束;而对于有的人来说可能更适合第二种:从底部的根开始,沿着主干爬到树顶先对大树的整体结构有个概念,然后再从根部开始像第一种方法一样遍历整棵大树。相比于第一种方法,而第二种方法在遍历过程中更不容易“迷路”,因为一开始我们就先对树的整体结构有了一个了解。
因此,对于一个算法的学习,笔者自己将它归结成了五个层次(三个阶段):
其中阶段一可以看成是先从大树主干爬上树顶一窥大树的全貌,因为对于一个算法来说,最基本就是它所对应的思想,而这也是一个算法的灵魂所在;阶段二和阶段三就可以看成是遍历完整个大树后的层次,是对细枝末节具体的探索。
那为什么会是上面这个排序呢?可以打乱吗?笔者的回答是:当然可以,只要是适合自己的方法,就是好方法。可遗憾的是现在大多数人的学习顺序都是①②④⑤③或者是①②④③⑤。这两种学习顺序的弊端就在于很多算法在数学推导中是有难度的,当克服不了这个难度时,就不会接着往下进行了。相反,笔者一贯主张的是先学会怎么用,再探究为什么。
同时,可能有人会问①学了直接学③可以吗?笔者的回答是:绝对不可以!因为这将使得你变成一个完全的调参侠,各种参数组合在你眼里都是盲目试出来了,你根本不明白每个参数的具体含义(过大怎么样,太小会如何),尽管这样也可以宣称自己会使用开源框架了。具体的对应步骤,笔者会在后面的算法学习过程中加以说明。
2 学到什么时候?
对于一个算法到底应该学到什么时候同样也是初学者所面临的一个问题。就像是有人问:对于一篇论文,我到底是应该看懂原理就行,还是要尽可能的去实现?可以想象,如果没有事先将一个算法的学习过程归结为如上三个阶段,此时笔者还真不知道如何告诉你应该学到哪儿。
笔者的建议是,对于所有的算法阶段一是必须完成的;对于一些基础或相对容易的算法(如线性回归)可以要求自己达到上述三个阶段;对于那些难度较大的算法(如SVM)可以要求自己做到1.5个阶段就行。同时,对于一个算法的学习很少人能做到学一遍就全懂的境界,因此也不要保证学一般就结束的想法。例如第一次学达到阶段一、第二次学达到阶段二等等。因为这样分阶段的学习方式更能够相对容易的使自己获得满足感,以享受学习的乐趣!照着以上步骤,学习大约3-4个算法后,便可以初窥机器学习门径了!