若何入门机械学习

本篇文章,我将从过来的人角度先容下机械学习若何从入门到醒目,这里我们谈履历,谈工具,更谈方式论。

1.入门

作为初入机械学习的小白,你可能除了一颗好奇的心和一番热血外什么都不没有,固然最好照样希望你能有线性代数、微积分和概率论的基础。你可能会心存挂念:学过但忘了。不用忧郁,这种器械不用就会忘,但只要用到,学一学便会;或者说你可能真的没学过,这个也不用忧郁,只要你真的想学现在也来得及。

好了空话不多说,我们进入入门阶段的正题。入门阶段主要有三个义务:

  1. 快速看完周志华的《西瓜书》
  2. 看吴恩达 Coursera 上的《机械学习》
  3. 调包跑算法

看完这个后可能人人会有许多不解或者许多疑惑。不着急,我们一个一个解答。

1.1 快速看完《西瓜书》

问题一:为什么要选《机械学习》?

由于这本书真的很不错,作为入门书籍异常合适。同样著名的《统计学习方式》虽然也很不错,然则其对小白来说相对较难。虽然《西瓜书》上面也有公式,但我们在初学的时刻太庞大的完全可以先跳已往,而且书中还配有西瓜的例子,可以很好的辅助同砚们明了算法的事情历程。

问题二:为什么要快速看完?

我这里强调快速,是由于快速真的很主要。由于若是战线拉得太长,若是一最先看的太细又读哪儿哪不懂,人是很容易有排挤心理的。最简朴的一个例子,你想想你背英语单词的时刻,若干次是从“abandon”最先背起的。每次快要期末考试了,或者四六级,又或者突然想学英语了,就拿起单词书来背,若干次是还没背到 “b” 就 abandon 了。泛起这种情形的一大缘故原由是成就感不足,由于在枯燥无味的知识海洋里没能获得实时的正反馈激励自己继续前行而泛起了 abandon 的情形。稀奇是对于延迟满足感不强的同砚来说,很容易在最先入门的时刻就栽起了跟头。

问题三:怎么快速看完?要有多块?

我们这里强调的快速阅读并不是说随便翻一番,更不是说“量子颠簸速读”(手动狗头)。我们阅读前要带着问题去读,比如说算法能用来干什么,算法的输入输出是什么等等。对照好的一种方式是用头脑导图来纪录每一章的脉络或者主线。以决议树为例,看完《西瓜书》后,我们可能有以下条记:

若何入门机械学习

通过纪录头脑导图的方式除了可以帮我们记条记、理清自己思绪外,另有两个异常主要的利益。其中一个是:学完不至于感受很虚。试想一下,若是你快速看完一本书而不记条记的话,是不是会有一种猪八戒吃人参果的感受?(心里OS:西瓜书讲的啥?)若是你有头脑导图了,一看就知道决议树是基于多个if判断语句组成分类器(固然,也可能会知道决议树可以用于回归),有多种属性划分可以选择,在天生树的时刻可以通过剪枝计谋降低过拟合,处置延续值的时刻有两种算法,处置缺失值的时刻会遇到两个问题等等。

另一个利益是:辅助自己迭代知识。我们知道产物是需要迭代的,知识固然也是要迭代的。这也是为什么我们要分为入门、进阶和醒目三步走的一大缘故原由。罗马不是一日建成的,一口也吃不成胖子。

固然作为初学者,我们的头脑导图可能没有那么详细,比如说看完《西瓜书》线性分类那一章,我们可能只有:

若何入门机械学习

不多这样也没有关系,知识是不停迭代的,头脑导图只是辅助我们学习的一个工具。

至于时间,人人可以自己掌握,我是花了不到一个星期看完,天天 3~4 个小时的样子。

1.2 吴恩达Coursera上的《Machine Learning》

问题一:为什么是这门课?

这里要注重,是 Coursera 的《Machine Learning》,不是 CS229 的《Machine Learning》。推荐缘故原由有以下几点:

  • 内容基础,虽然是英文,然则有中文字幕;
  • 质量很棒,12 万个评分,平均得分 4.9,要知道满分才 5 分;
  • 每节课时间不长,且课后都有小演习;
  • 除了自己记条记外,还可以再网上找到其他同砚上课记的条记,可以作为自己条记的弥补;
  • 《义务一》“太爽了”,可以稍微痛苦点,随着吴恩达推推公式,加深明了,为进阶做准备。

可能有同砚还会推荐其他先生的课,甚至手机了一堆资料。我只想说,别这样。我们要拒绝仓鼠病(仓鼠喜欢囤器械),器械太多会涣散我们的注重力,还会让我们有一种感受学了很多若干的错觉。Less is more,学精品就行。

问题二:这门课也要快速吗?

万万别快!一定要认真做条记(或头脑导图)!做完条记还要去查看别人的条记,弥补下自己遗漏的点。看待好的课程一定要怀着虔敬的心态去看,万万别虚耗第一次看视频的机遇,后面再看可能就没那么有耐心了。

问题三:那我要花多久时间?

总共十一门课程,没门课程都有预估时间,加上整理条记看其他人的条记,自己可以预估一下。建议在两个星期以内完成。

这门课虽然是英文的,而且另有公式,然则由于吴恩达先生讲的很好,以是其难度是比我们看西瓜书要低的。

1.3 调包跑算法

问题一:为什么要调包跑算法?

缘故原由三有:

  • 提高感性熟悉:我记得刚学计算机的时刻,先生稀奇喜欢对我们说一句话:自己写一写、跑一跑、感受一下。只有着手操作一下,才气切身感受;
  • 提高代码能力:计算机是一门工程性很强的学科,不仅要学理论知识,更要有不错的代码实现能力;
  • 成就感:人人不以为能够“展望”未知的事情自己就是一件很有成就感的事吗?

问题二:数据从哪儿来?

数据集泉源太多了,但照样那句话:不要有仓鼠病,我们需要什么数据去拿什么数据即可。对照建议的数据源有 Kaggle 和阿里天池,可以去看看那些入门级的竞赛,跑跑内里的数据集。

问题三:跑哪些算法?

既然是调包,大部门都市用到 Sklearn,内里的算法都可以试一试,能跑通一个,再换另一个的速率也挺快的,最好笼罩常用的算法如:LR、SVM、Random Forest等。

问题四:花多久时间?

这个要看自己的基础了,若是代码能力还行的话,一天就能搞定了,若是代码能力不ok,可能要两三天。若是代码能力不行的话,记得去看别人写好的代码,而不是自己瞎捣鼓。

1.4 总结

总结一下入门阶段三个义务的目的

  1. 《西瓜书》:领会并熟悉算法,对机械学习有个也许的领会;
  2. 《Machine Learning》:在吴恩达先生的率领下推推公式,加深对算法的明了,为进阶学习做准备;
  3. 调包跑算法:对算法有一个感性的熟悉,并提高着手能力。

预计时间:3~4 个星期。

第一阶段所用到的:

  • 工具:《西瓜书》;《统计学习方式》;头脑导图;做条记推荐 Markdown 或者手写条记;
  • 方式论:实时正反馈;拒绝仓鼠病。

PS:若是有多余的时间也可以看一下《团体智慧编程》,这本书很简朴而且有很完整的代码实现,可以凭据自己的喜欢选择阅读照样着手实践。

2.进阶

完成入门阶段的学习后,我们乐成从机械学习小白晋升到机械学习入门,在看到 SVM,LR 之类的词时再也不会陌生了。然则革命尚未乐成,同志仍需起劲。

那在进阶阶段,我们学什么呢?以及若何学习呢?

我们来看下进阶学习的义务:

  1. 学习《统计学习方式》《西瓜书》
  2. 学习书籍以外的常用算法
  3. 学习特征工程,打竞赛

同样的,我们来解答下同砚们的疑惑。

2.1 学习《统计学习方式》《西瓜书》

问题一:为什么又学习《西瓜书》?

由于我们第一遍学的不仔细,我们第一遍只是简朴的过一遍了。尚且,好的书不应该只看一遍。要信赖每次阅读都市给我带来不一样的体验。

问题二:两本谁先谁后?

建议先读《统计学习方式》(建议看第二版),并以《统计学习方式》的目录来重新整理自己的知识系统,以《西瓜书》为辅,《统计学习方式》看到什么算法了,就去《西瓜书》内里看一看,弥补一下。这样做的缘故原由很简朴:以《统计学习方式》的目录构建我们的知识系统加倍合理。

问题三:该怎么去学习?

这个阶段不能再像入门阶段那样看到庞大的公式就跳过了。然则我也知道许多同砚的数学基础欠好,而书中的部门公式又有许多跳过的步骤,读起来对照难题。这时刻我们就要借用群体智慧了:

  • 首先,我们要学会行使 CSDN/知乎等专业的平台,这些平台上的那些高赞高阅读量的博文都是经由时间的筛选出来的高质量文章,许多很不错的博文写的比书上写得加倍有利于人明了,固然也可以看看一些论文,异常经典比如说:吴信东的《数据挖掘十大算法》;
  • 其次,github 上有一个对照著名的《南瓜书》,这本书是对《西瓜书》中公式推导的弥补,周志华先生也推荐过;
  • 最后,行使好我们的头脑导图,在阅念书或博客的时刻,记得完善自己的条记,这个真的很主要!

另外,《统计学习方式》对照厚,稀奇是第二版的,我们要学会取舍,要分清哪些算法需要看,哪些算法可以放一放。比如说,我以后是想做推荐、广告 CTR、风控之类的事情,那我们就可以把 MCMC、LDA 之类的算法先放一放,而把有限的时间放在 LR、SVM、决议树上。

学习的时刻涉及到大量的数学原理,缺啥补啥即可,万万别放下机械学习去学数学去了。不是说数学不主要,而是我们要明了,每个阶段的目的和义务,目的导向性有助于我们学习。

问题五:学到什么水平?

我以为进阶学习的水平至少要包罗:

  1. 对需要学习的算法,掌握其数学原理,学会公式推导,掌握算法的优缺点;
  2. 对不需要学习的算法,领会算法的作用,使用场景;
  3. 掌握算法细节,比如说 SVM 的 SMO 和核函数;K-means 的调优与改善,若何确定 k 值,若何证实其收敛性;LR 的参数更新方式,L1 和 L2 两种正则化,参数求解若何优化等;

以 LR 为例,学完后的头脑导图可以是这样的:

若何入门机械学习

虽然看起来内容没之前多,但仔细看的话,内容深度照样和入门阶段的有显著区别的。

问题六:也许花多久?

这个要凭据每小我私家选择的算法个数而定,平均一个算法可以花两到四天去学习掌握。

2.2 学习书籍以外的常用算法

问题一:有哪些算法?

图像分类综述

对照著名的有 Boosting 三兄弟: XGBoost、LightGBM 和 CatBoost;

其次,FM、FFM 及其衍生的算法也很著名;

问题二:为什么要学习?

首先,这些算法是对照常用的算法,性能好,鲁棒性强,经常用于各大小公司,和各大竞赛(Kaggle、阿里天池等);

其次,我们可以学一学这些算法的头脑,有助于我们算法调优,比如说我们用 XGBoost 的时刻,由于学习了 LightGBM 以是知道对延续特征离散化有助于 XGBoost 提升泛化性;

问题三:若何学习?

首先,建议先去看高质量的博文,对三个算法有个也许的领会后再去看论文,这样做的利益在于读完博客可以对算法有个也许的领会,再去看论文也更容易入手,此外原汁原味的论文读起来也是一种享受;

其次,不建议每个都学,学有余力的同砚可以多学一点,时间重要的器械挑重点的来学,要明白取舍。

2.3 打竞赛

问题一:为什么要打竞赛?

首先,打竞赛是我们从理论通往实践的主要一步,竞赛的数据相对事情后的数据来说会清洁许多,在从理论过渡到实际事情的历程中有很大的辅助。

其次,“没有免费的午餐”,即没有算法能完善的解决所有的问题。通过打竞赛,我们可以加深对算法的明了,熟悉算法的善于领域。

最后,打竞赛的时刻,我们还会学到机械学习中一个异常主要的领域——特征工程。我们常说,特征决议上限,而算法只是去迫近这个上界,从这句话就能看出特征的主要性。以是只会算法是远远不够的,还要学会做特征工程。而且,差别的算法可能需要差别的特征工程,这也会加深我们对算法的明了。

问题二:若何学习?

首先,强烈推荐 Kaggle,由于 Kaggle 上有许多大佬分享的履历帖子,不仅有 baseline 算法,还会有数据分析、特征工程的履历和心路历程,异常建议人人去学习实践;

其次,特征工程是一个对照偏履历的,作为刚接触特征工程的同砚来说,可以一遍打竞赛,一遍看看相关书籍和博客:有一些对照著名的特征工程书《特征工程入门与实践》,另有许多同砚整理的特征工程相关博客也可以看看;

最后,照样那句话,记得整理条记!由于博客和书籍中有许多重复的内容,只有认真梳理了后才气形成我们自己的学习系统。

问题三:预计时间

短则看几本书看看 Demo 跑跑算法几个星期就搞定了,长则打几场竞赛需要大半年的时间。

2.4 总结

总结一下进阶阶段三个义务的目的

  1. 学习《统计学习方式》《西瓜书》:通过推公式加深对算法的明了,掌握算法细节;
  2. 学习书籍以外的常用算法:对书籍内容的一个弥补,学习和掌握现在对照盛行的算法;
  3. 打竞赛:将算法学习从理论过渡到实践,同时学习特征工程。

预计时间:这个时间颠簸会对照大,但无论花多长时间,这个阶段能获取到的知识都是异常多的。

工具:《统计学习方式》;《西瓜书》;《南瓜书》;《特征工程入门与实践》;博客;头脑导图;论文;

方式论:目的导向性;学会取舍;固然也要记得正反馈。

3.醒目

这一阶段就不太好谈了,由于现在我也在这个阶段里遨游,但我小我私家角度来说,有以下几个义务:

  1. 深入领会算法细节,对比各大算法差异
  2. 学习算法在工业中的应用,看源代码
  3. 看论文
  4. 写博客

同理,我们一个一个的来注释。

3.1 深入领会算法细节,对比各大算法差异

问题一:我都市推公式了,还不够细吗?

首先,我们说的推公式许多时刻都是看得懂公式,而不是知道为什么要这么推,即知其然而不知其以是然。比如说,我们会用拉格朗日乘子法来求解 SVM 的对偶问题,然则我们可能不知道拉格朗日乘子法原本是求解灯饰优化问题的,而不是 SVM 中的不等式优化问题,若是从将拉格朗日乘子法从不等式优化扩展到等式优化呢?

除此之外另有:为什么一定要转换成对偶问题呢?为什么要把 SVM 从 转化到 呢?原来的公式不香吗?以是推公式只是加深了对算法的明了,这个阶段的的学习还要多问为什么。为什么要这么做,为什么问多了之后可能我们就知道了:首先转化为对偶问题后可以简化问题庞大度,原来是和样本维度和样本数目有关的问题,现在只和样本数目有关了;其次转换为对偶问题可以利便的引入核函数,将数据从低维映射到高维,更容易求得最优解。。

其次,许多看似很简朴的器械,如我们在进阶阶段学习到的:LR 引入 L1 和 L2 范式可以通过约束权重值来削减过拟合风险。但我们有没有想过为什么权重小就能削减过拟合风险?为什么 L1 和 L2 范式有用?

到这个阶段后,我们可能就知道了:降低权重是为了降低算法的庞大度,防止泛起变量值颠簸引起的展望精度问题。我们也会知道,L1 和 L2 范式之以是有用,是由于引入了“零均值的拉普拉斯漫衍”和“零均值的正态漫衍”这种先验知识。

总之,这个阶段的义务就是要多问自己为什么。为什么是这样的?为什么这样行?那样不行吗?只有多问自己为什么,带着辩证的头脑去学习,才气加倍深刻的领会算法细节。

问题二:为什么要对比各大算法的差异?

独木不成林,我们要将学习到的零零散散的知识从点练成线,再将线拼接成面,甚至堆积成三维立体。

在进阶学习的历程中,我们知道 XGBoost 比 LR 效果要好,SVM 就算数学理论很完整工业界照样不常用。但我们不知道其为什么?为什么 XGBoost 比 LR 好?为什么 SVM 不常用?LR 和 贝叶斯为什么会应用于差别的领域?为什么“没有免费的午餐”?

领会差别算法之间的差异,及优缺点,比说 LR 与 SVM 的区别与联系、LR 与最大熵算法的区别与联系等等。

通过学习各大算法的差异与联系,可以辅助我们加倍深刻的领会各种算法。

问题三:要学习到什么水平?

这个欠好说,醒目阶段仁者见仁智者见智,以 LR 为例,我以为至少应该学到这种阶段:

若何入门机械学习

3.2 学习工业应用,看源码

问题一:为什么要学习工业应用?

由于我们大多数人最终照样要去工业界的,而工业界的头脑和我们在学校的头脑是有差距的。

首先,工业界加倍强调落地,而非精度。平时我们打竞赛、发论文之类的,都把算法搞的异常庞大,然则在工业界面临万万级甚至亿级的数据,太庞大的算法不利于我们算法落地。以是工业界是需要在精度和算力中取一个平衡点的;

其次,工业界看中速率,算法一定要快。这个时刻算法若何并行化实现就显得尤为主要。对照通用的方式是:数据并行和特征并行,人人可以自行领会下。

问题二:为什么要看源码?

看源码一来是为了加深自己对算法的明了,二来是学习下算法在落地时的优化计谋或是一些小 Trick,比如说若何排序?用O(nlogn)的快排吗?若何采样?若何加权采样?随机数怎么算?等等问题。这些都是需要从源码中学到的。

3.3 看论文

这个应该不用问为什么了吧,许多先进的机械学习/深度学习算法都泉源于论文,稍微老一点的类似 GDBT+LR、GDBT+FM 这种组合(GDBT 可以换成 XGBoost),年轻一点的有 DIN、DIEN 等。

看论文有助于我们领会最新的算法的模子,跟上前沿的研究轨迹。

3.4 写博客

实在写博客进阶的时刻也可以写,甚至入门的时刻也可以写。无非就是把条记整理一下发出去。但需要注重,我们这里说的博客是写给别人看的,若是是写给自己看的随便你怎么写。但现在你的目的受众是其他读者,你就要本着负责任的心态,把你的博文写好。

这个写好博客说的是,至少要让读者明了你在说什么吧。许多会以为贫苦,但实在不是,你之前的学习是一个输入,消化了若干你并不知道,而写博客是一种输出,你写出来若干就代表你会了若干。

有同砚可能要说了:”我会但我写不出,我是茶壶里煮饺子。“

负疚,万万别这么想,实在你就是不会,有这种头脑很大水平上是由于自己眼高手低,没有实事求是的缘故原由。

另外,写博客也是整理思绪的一个历程,可以很好的辅助我们学习整理归纳,加深自己对算法的领会。

3.5 总结

最后,我们来总结下醒目阶段的几个义务:

  1. 深入领会算法细节,对比各大算法差异:将点串成面,加深算法明了;
  2. 学习工业应用,看源码:领会工业应用和算法落地时的优化,加深算法明了;
  3. 看论文:领会前沿算法;
  4. 写博客:梳理知识,加深算法领会。

工具:源码;博客;论文;

方式论:以点串线带面;知识的输入输出;

4.学习资料推荐

贪心学院aijiaoai《机械学习》,这个课程笼罩了16大经典算法解说,20个实操案例,8大项目作业。而且是玩游戏通关的轻松学习模式,让你在2个月的时间快速入门机械学习。

 

更多干货分享,请关注“贪心科技AI”民众号。

原创文章,作者:2d28新闻网,如若转载,请注明出处:https://www.2d28.com/archives/549.html