阿里资深 AI 工程师教你逐个击破机器学习核心算法
** 前言**
近年来,随着 Google 的 AlphaGo 打败韩国围棋棋手李世乭之后,机器学习尤其是深度学习的热潮席卷了整个 IT 界。
所有的互联网公司,尤其是 Google 微软,百度,腾讯等巨头,无不在布局人工智能技术和市场。
百度,腾讯,阿里巴巴,京东,等互联网巨头甚至都在美国硅谷大肆高薪挖掘人工智能人才。现在在北京,只要是机器学习算法岗位,少则月薪 20k,甚至 100k 以上……
不错,新时代时代来了,我们从互联网走向移动互联网,现在又从移动互联网走向人工智能时代。
业内有人称这一次的人工智能爆发是互联网3.0时代的开启。去年国家教育部已经把 Python 和人工智能技术列入中小学生课程培养计划中。
所以,为了不让我们在这个时代的浪潮中被击倒,赶紧从基础学起,入门机器学习,走进人工智能的大门……
1. 机器学习在人工智能中的地位
也许目前AI领域最火的概念是深度学习,于是乎很多初学者就直奔深度学习而去,觉得可以绕过机器学习这个门槛。那么这么做对还是不对呢?
图1 机器学习、深度学习以及人工智能的关系
我们首先了解一下机器学习、深度学习以及人工智能的关系。如图1,我们很清楚的知道:人工智能包含机器学习,而深度学习又是机器学习的一个重要分支。
那么为什么我们应该从机器学习而不应该是当下最火的深度学习开始入门呢?
原因很简单,机器学习是深度学习的基础,深度学习其实就是机器学习的一个分支演化过来的。
如果你不深入学习传统机器学习算法思路和思想,那么你直接学习或者使用深度学习技术是很危险的,因为你的根基将很不牢固,而且学习深度学习的难度也会大很多。
2. 机器学习算法的挑战
对于初学者而言,可能会觉得有很多机器学习算法是十分强大和完美的,但理想是美好的现实是残酷的!那么机器学习算法学习过程中有什么样的挑战呢?
为了回答这个问题,我先告诉大家一个问题,没有一个机器学习算法是万能的,也没有一个机器学习算法是没有缺点的。正因为如此,才会有不同的算法层出不穷,百花齐放!
也许你听说过 AdaBoost 算法很厉害;也许你听说SVM算法精确,理论非常的完美;也许最近几年 Kaggle 比赛中 XGBoost 火的一塌糊,理论完美精度奇高;可是最近几年深度学习又疯狂崛起……为什么会出现这种现象呢?
难道他们是简单的更新换代,新算法出来老的东西就可以彻底被替代了吗?显然不是这样的,大家各自都有自己的特点与长处。
面对不同的问题,我们应该选择不同的机器学习算法,而什么情况下选择什么算法,该从什么角度去思考这个问题是值得每一位初学者深思的问题,这就是挑战所在!
在这里,我简单拿 XGBoost 和深度学习作比较,说一下他们各自的优缺点和擅长领域。当数据维度不是特别高,并且具有固定维度的时候 XGBoost 表现良好,能够获得很高的准确度和计算速度;
但是当数据维度很高,达到数十万百万级别的时候,这时候 XGBoost 就会显得很吃力,精度和时间效率就明显不行,这时候深度学习的用处就来了。
可以简单地将他们俩比作小轿车和大卡车的区别,只有了解了每个算法的原理之后我们才知道如何进行选择。
3. 机器学习的学习方法
也许对初学者而言,最关心的问题应该是如何系统高效地学习机器学习算法。对于这个问题笔者也是沉思良久,结合笔者多年学习和工作经验,总结出如下的机器学习算法学习路线:
图 2 机器学习的学习路线
如上图2是我个人总结的机器学习算法学习路线图,它适合所有的初学者。相信很多同学都听说了,机器学习需要强大的数学功底。
那么是不是本科生,数学基础不是非常好的毕业生或者从业者就不能学习机器学习呢?答案是否定的。
是的,前面那句话没错,机器学习需要强大的数学功底,但是更精确的解释应该是这样的:你数学功力有多厚决定着你在机器学习领域能走多远,但是如果是入门,成为一名互联网算法应用工程师的话,其实要求并不是很高,并不是每个人都要成为 Andrew NG 那样成为顶级机器学习科学家。
当然,我相信所有想从事或者转行机器学习的同学,基本的编程基础是有的,这点应该不需要过多的强调。
那么接下来就是本文最关键的地方:经典机器学习算法的学习。
何谓经典,每个机器学习老司机都应该有自己独特的见解,笔者将此总结成如下章节的机器学习入门核心算法。
4. 机器学习入门核心算法
-
机器学习基础知识 本节内容主要介绍机器学习基础概念知识,为后续学习算法打下理论基础知识。
-
KNN 算法——不学习我也能预测 KNN学习算法可以说是机器学习这门领域里最简单的一个算法,它的思想非常简单,因此初学者必读。
-
逻辑回归(LR)——算法工程师必考 也许你觉得逻辑回归在研究生实验室里基本上派不上用场,那就说明LR无用武之地,那你就错了。LR在工业界是最常使用的一种算法,尤其是在大数据环境下更是如此。因为LR算法具有模型简单存储方便,计算复杂度低等诸多优势。
-
Naive Bayes 算法——后验概率学习算法 朴素贝叶斯算法的核心是利用贝叶斯后验概率进行学习的算法,理论简单,实现简单,假设(特征完全独立性)更简单,但是朴素贝叶斯算法在文本分类等领域的应用也是十分广泛的。
-
决策树算法——IF-THEN 规则的集合
可以毫不夸张地说,决策树是机器学习中最重要最常用的的一类算法。它们理论完美精妙,并且多可决策树可以通过不同的组合方法结合在一起成为集成学习方法中的弱学习器。无论是工业界还是学术界,应用都十分范。 -
XGBoost——基于决策树的 Kaggle 夺冠利器 无需多言,XGBoost 是 kaggle 比赛中打拼出来的算法。坊间也有一句名言:在 Kaggle 比赛的算法选择中,结构化数据用 XGBoost,非结构化数据用深度学习。
从这句话可以看出 XGBoost 的江湖地位。当然,它是靠优秀的计算效率和准确率以及对分布式大数据的支持才获得如此的成绩的,XGBoost 算法应该是初学者必懂算法。
-
LightGBM——据说这家伙比 XGBoost 还牛 鉴于 XGBoost 的火爆程度,微软 MSRA 决定要开发出一种算法系统来挑战 XGBoost 的江湖地位,于是 LightGBM 应运而生。
LightGBM 是在 XGBoost 算法存在不足之上进行深度优化的提升树算法:它具有更低的内存占用,更高的时间效率,并且精度也略高于 XGBoost,为此,LightGBM 与 XGBoost 对比学习,应该是初学者提升基本功的一次饕餮盛宴。
-
无监督聚类——从 K-Means 说起 机器学习最主要的两大类算法就是有监督学习和无监督学习。本节几乎将无监督算法主要算法及其原理详细介绍了一遍,从 K-Means 到密度聚类的 DBSCAN,再到层次聚类的 AGENS,并且全都通过伪代码的形式给出了算法执行步骤,加深读者对无监督学习算法的理解。
-
Isolation Forest——异常检测的利器 在异常检测领域,Isolation Forest 独树一帜。本文主要介绍一种由南大周志华老师团队提出的 IForest 异常检测算法,并且笔者使用 Java 将其实现并开源。后期如果读者需要,作者会开发一版 Python 版本的,服务到位有木有……
-
神经网络——深度学习的基础 学习机器学习,尤其是近年来深度学习的火爆。神经网络绝对不能够错过,它是深度学习的基础,是连接机器学习和深度学习的桥梁。
本节作者不仅介绍了神经网络的工作原理,并且以 Sigmoid 函数为激活函数为例,详细推导了 BP 学习算法的数学原理。使得读者对神经网络算法不仅能够知其然,而且能够做到知其所以然。
-
特征降维——PCA 与 LDA 在数据量大,特征维度高的时候,我们需要在原始信息损失可接受范围内适当降低特征维度以减少算法对内存的大量占用。在此基础上,我们详细介绍了PCA与LDA算法各自降维的原理,并最终使用实战案例程序直观地显示两种算法降维的效果。
-
征战BAT——算法面试杂谈 本节主要是作者总结自己多年来征战BAT等著名互联网公司的过程中总结出的算法面试题以及相关的答题技巧和答案,帮助大家了解自己学习完本课程距离面试一线互联网公司还有多少距离,是否已经达到了征战BAT的要求了。这一节可以说是本课程的点睛之笔,当然笔者写作过程也会相对其他章节比较长一点。
以上算法能够包含机器学习的方方面面了,吃透了这些算法,从事互联网算法工程师的工作肯定没问题。当然想要继续深究,我会在最后一节讲述。
简单的机器学习算法,例如 KNN、K-Means、朴素贝叶斯等,代码能力稍微强一点的读者可以自己实现,然后拿经典数据集去实验,这样更能加深自己对算法的理解。当然更进一步的是可以参加一些算法比赛,提升自己的算法实战能力。
5. 作者经验和课程特色
作者研究生期间曾在微软实习,从事知识图谱数据分析挖掘相关工作。毕业先后就职于京东和阿里巴巴,主要从事的都是机器学习反欺诈检测和数据挖掘相关的工作。目前就职于陌陌,担任推荐算法工程师,负责陌陌直播算法推荐。
本课程是机器学习的入门并拔高课程,注重理论与实战的结合。致力于用白话的方式讲解算法中的数学原理,并带有完整的源代码帮助读者进行实践。
同时还会结合作者本人在机器学习数据挖掘领域的经验和 BAT 等一线互联网面试经历,列举常见的机器学习面试题以及相关答题技巧。帮助读者从理论到实践,再到搞定面试 BAT 的一系列能力的培养。
6. 学完该课程之后该如何提升
其实学完这么课程,基本上能够达到机器学习核心算法入门了。对于一个对自己严格要求的同学来说这肯定是不够的,那么接下来该如何提升自己呢?所谓师傅领进门,修行在个人。
因此在这里结合我个人的学习经历,给大家一点参考建议:
-
阅读机器学习经典教材,个人比较推荐李航老师的《统计学习方法》。如果英语可以的话可以学习《The Elements of Statistical Learning》。
-
在学习每种经典算法的时候,最好要找出它的原始论文以及相关论文来搞清楚这个算法发展的来龙去脉。机器学习大牛都是会去看无数的论文的,这个我相信没有例外。
-
如果想深入了解各个算法的具体实现过程,进一步掌握造轮子的能力。可以参见著名的开源库的实现:Python 我比较推荐 scikit-learn,Java 我比较推荐 Smile 或者 weka。
如果每个初学者都能坚持不懈地按照我说的方法去做,总有一天你也会成为AI界的一颗新星!
扫码试读
订阅福利
-
本课程限时特价 19.99 元,2018.6.14 日零时恢复至原价 29.99 元。
-
订购本课程可获得专属海报,分享专属海报每成功邀请一位好友购买,即可获得 25% 的返现奖励,多邀多得,上不封顶,立即提现。