01
近年来,随着 Google 的 AlphaGo 打败韩国围棋棋手李世乭之后,机器学习尤其是深度学习的热潮席卷了整个 IT 界。
所有的互联网公司,尤其是 Google 微软,百度,腾讯等巨头,无不在布局人工智能技术和市场。
百度,腾讯,阿里巴巴,京东,等互联网巨头甚至都在美国硅谷大肆高薪挖掘人工智能人才。
现在在北京,只要是机器学习算法岗位,少则月薪 20k,甚至100k 以上……
不错,新时代时代来了,我们从互联网走向移动互联网,现在又从移动互联网走向人工智能时代。
业内有人称这一次的人工智能爆发是互联网3.0时代的开启。去年国家教育部已经把 Python 和人工智能技术列入中小学生课程培养计划中。
所以,为了不让我们在这个时代的浪潮中被击倒,赶紧从基础学起,入门机器学习,走进人工智能的大门……
02
也许目前AI领域最火的概念是深度学习,于是乎很多初学者就直奔深度学习而去,觉得可以绕过机器学习这个门槛。那么这么做对还是不对呢?
图1 机器学习、深度学习以及人工智能的关系
我们首先了解一下机器学习、深度学习以及人工智能的关系。如图1,我们很清楚的知道:人工智能包含机器学习,而深度学习又是机器学习的一个重要分支。
那么为什么我们应该从机器学习而不应该是当下最火的深度学习开始入门呢?原因很简单,机器学习是深度学习的基础,深度学习其实就是机器学习的一个分支演化过来的。
如果你不深入学习传统机器学习算法思路和思想,那么你直接学习或者使用深度学习技术是很危险的,因为你的根基将很不牢固,而且学习深度学习的难度也会大很多。
03
图 2. 机器学习的学习路线
如上图2是我个人总结的机器学习算法学习路线图,它适合所有的初学者。相信很多同学都听说了,机器学习需要强大的数学功底。
那么是不是本科生,数学基础不是非常好的毕业生或者从业者就不能学习机器学习呢?答案是否定的。
是的,前面那句话没错,机器学习需要强大的数学功底,但是更精确的解释应该是这样的:你数学功力有多厚决定着你在机器学习领域能走多远,但是如果是入门,成为一名互联网算法应用工程师的话,其实要求并不是很高,并不是每个人都要成为 Andrew NG 那样成为顶级机器学习科学家。
当然,我相信所有想从事或者转行机器学习的同学,基本的编程基础是有的,这点应该不需要过多的强调。
那么接下来就是本文最关键的地方:经典机器学习算法的学习,本课程是读者结合自己多年学习与工作经验挑选出的最具有实践意义的常用核心机器学习算法。
以上算法能够包含机器学习的方方面面了,吃透了这些算法,从事互联网算法工程师的工作肯定没问题。当然想要继续深究,我会在最后一节讲述。
简单的机器学习算法,例如 KNN、K-Means、朴素贝叶斯等,代码能力稍微强一点的读者可以自己实现,然后拿经典数据集去实验,这样更能加深自己对算法的理解。当然更进一步的是可以参加一些算法比赛,提升自己的算法实战能力。
04
上面讲了机器学习算法的学习方法,那么机器学习算法学习过程中有什么样的挑战呢?
为了回答这个问题,我先告诉大家一个问题,没有一个机器学习算法是万能的,也没有一个机器学习算法是没有缺点的。正因为如此,才会有不同的算法层出不穷,百花齐放!
也许你听说过 AdaBoost 算法很厉害;也许你听说 SVM 算法精确,理论非常的完美;也许最近几年 Kaggle 比赛中 XGBoost 火的一塌糊,理论完美精度奇高;可是最近几年深度学习又疯狂崛起……
为什么会出现这种现象呢?难道他们是简单的更新换代,新算法出来老的东西就可以彻底被替代了吗?
显然不是这样的,大家各自都有自己的特点与长处。面对不同的问题,我们应该选择不同的机器学习算法,而什么情况下选择什么算法,该从什么角度去思考这个问题是值得每一位初学者深思的问题,这就是挑战所在!
在这里,我简单拿 XGBoost 和深度学习作比较,说一下他们各自的优缺点和擅长领域。
当数据维度不是特别高,并且具有固定维度的时候 XGBoost 表现良好,能够获得很高的准确度和计算速度。
但是当数据维度很高,达到数十万百万级别的时候,这时候 XGBoost 就会显得很吃力,精度和时间效率就明显不行,这时候深度学习的用处就来了。
可以简单地将他们俩比作小轿车和大卡车的区别,只有了解了每个算法的原理之后我们才知道如何进行选择。
05
作者经验和课程特色
作者研究生期间曾在微软实习,从事知识图谱数据分析挖掘相关工作。毕业先后就职于京东和阿里巴巴,主要从事的都是机器学习反欺诈检测和数据挖掘相关的工作。目前就职于陌陌,担任推荐算法工程师,负责陌陌直播算法推荐。
本课程是机器学习的入门并拔高课程,注重理论与实战的结合。致力于用白话的方式讲解算法中的数学原理,并带有完整的源代码帮助读者进行实践。
同时还会结合作者本人在机器学习数据挖掘领域的经验和 BAT 等一线互联网面试经历,列举常见的机器学习面试题以及相关答题技巧。
帮助读者从理论到实践,再到搞定面试 BAT 的一系列能力的培养。
06
学完该课程之后该如何提升
其实学完这门课程,基本上能够达到机器学习核心算法入门了。对于一个对自己严格要求的同学来说这肯定是不够的,那么接下来该如何提升自己呢?所谓师傅领进门,修行在个人。因此在这里结合我个人的学习经历,给大家一点参考建议:
阅读机器学习经典教材,个人比较推荐李航老师的《统计学习方法》。如果英语可以的话可以学习《The Elements of Statistical Learning》。
在学习每种经典算法的时候,最好要找出它的原始论文以及相关论文来搞清楚这个算法发展的来龙去脉。机器学习大牛都是会去看无数的论文的,这个我相信没有例外。
如果想深入了解各个算法的具体实现过程,进一步掌握造轮子的能力。可以参见著名的开源库的实现:Python 我比较推荐 scikit-learn,Java 我比较推荐 Smile 或者 weka。
如果每个初学者都能坚持不懈地按照我说的方法去做,总有一天你也会成为AI界的一颗新星!