前言
相信想学习机器学习的广大程序员(工程师)们已经被那些算法大神的学习路线虐的怕怕的了吧?不用担心,我来带你们理理一个工程师需要入门机器学习,到底要走哪个路线?
基础
不用多说,机器学习作为高门槛领域,基础还是需要的,但是也没有想得那么恐怖,很多人提问机器学习需要哪些数学知识,然后就会得到一大堆犹如天书般高大上的回答: 矩阵分析、微积分、概率论、统计学、数学分析等等,如果按照这些算法大神的路线去走,也许这条路就真的走到头了。
数学
所以,入门阶段要学什么数学呢?
答案就是:大学学过的基本的线性代数、高数(主要是微积分)、概率统计,不需要多高深,重点是能看懂,工程应用的核心是实践,不需要你去证明那些乱七八糟的定理!
好了,有了这些基本的基础,你就可以看懂和理解大部分的机器学习算法内容了。
编程语言
作为工程师,这个对你来说是小菜吧?目前来说Python在科学计算领域是应用最广的,因为学会它就行,虽然Python性能不好,但是毕竟简单嘛,很受非编程人员的欢迎。等你学懂了这个领域,自然可以其它语言去实现自己想要的东东。
入门
Step 1
如果你相信知乎算法大神们推荐的elements of machine learning,那就真的入坑了,工程师最大的优点是啥?懂得实践并且知道自己的实力到底有几瓶醋!
因此我推荐学习Machine Learning In Action,应用语言是Python,如果对英文没自信,那就看中文版本的:机器学习实践。这本书最大的优点就是用较少的公式给你讲解了尽量多的基本算法,而且剖析到位,讲解生动,降低了机器学习的抽象程度。
Step 2
可以学习一些网上的教学课程了,建议学习国外的,毕竟外国人的性格更擅长深入浅出。这里推荐Coursera上面Andrew Ng大神的Machine Learning课程。这门课程的特点如下:全面、深入浅出、有课堂作业来印证学习的内容。
这里我有个建议:一定要一点一点地把这门课啃清楚了,所以作业都做会了,有问题就谷歌,总是有答案的。对于机器学习来说,基础永远都是最重要的!
Step3
这个时候,你对机器学习应该也有一些概念了,这个时候可以培养一些全局观了,我们可以看这两本中文教材:周志华大神的<机器学习>、李航大神的<统计学习方法>,这两本是难得的佳作,值得一看!
英文书籍的话,可以看<Patten Recognition And Machine Learning> 和 <Elements of Statistical Learning>, 后者难度较大,但是内容很丰富,每次学习都会有新的收获。
Step 4
到了上一步,就真的完全入门了,这一步就是选择自己的应用方向了,毕竟机器学习是一个笼统的概念。比如大数据分析预测、图模型、深度学习、自然语言处理、图像识别、语音识别等等,这些都是一些应用方向
然后要讲讲机器学习的平台,现在最火的自然是Tensorflow了,谷歌公司用C++开发,用Python、Go(很快就会在官方的api库中正式发布,对此我还是很期待的,毕竟Go语言的性能是非常高的,工程师不像算法科学家,我们对于性能要求也是很苛刻的)做Api接口。学习这个平台可以从tensorflow上那些models学起,看看这些应用是怎么用tensorflow实现机器学习的。
再具体的,这里就不多说了,其实作者作为工程师也是在摸索之中。