上手机器学习小白指南

引言

对于现在流行的深度学习,保持学习精神是必要的——程序员尤其是架构师永远都要对核心技术和关键算法保持关注和敏感,必要时要动手写一写掌握下来,先不用关心什么时候用到——用不用是政治问题,会不会写是技术问题,就像军人不关心打不打的问题,而要关心如何打赢的问题。

接下来我按照自己走过的路来聊聊,小白如何学习机器学习

对程序猿来说,机器学习是有一定门槛的(这个门槛也是其核心竞争力),相信很多人在学习机器学习时都会为满是数学公式的英文论文而头疼,甚至可能知难而退。

但实际上机器学习算法落地程序并不难写,比如你有一点点编程基础,就可以先用Java70行代码去实现一个高端的BP神经网络算法,就算没有实现,去跑跑这个代码也是不错的体验。

其实不光是神经网络,逻辑回归、决策树C45/ID3、随机森林、贝叶斯、协同过滤、图计算、Kmeans、PageRank等大部分机器学习算法都能在100行单机程序内实现。

机器学习的真正难度在于它为什么要这么计算,它背后的数学原理是什么,怎么推导得来的公式,网上大部分的资料都在介绍这部分理论知识,却很少告诉你该算法的计算过程和程序落地是怎么样的。

对于程序员来说,你需要做的仅是工程化应用,用已经封装好的库和包去实现自己的奇思妙想,而不需要证明出一项新的数学计算方法。

实际大部分机器学习工程师都是利用别人写好的开源包或者工具软件,输入数据和调整计算系数来训练结果,甚至很少自己实现算法过程。

但是掌握每个算法的计算过程仍然非常重要,这样你才能理解该算法让数据产生了什么样的变化,理解算法的目的是为了达到什么样的效果,如果没有达到我们可以调节哪些参数。

本文以最简洁,痛感最少的路线介绍一下如何入坑机器学习。

正文

直接上手那些最高端的算法可以让你走到很快,但是打好基础才会让你走得更远

1)编程语言——首推python,虽然其他语言也可以,但没有py那么多可调的包,花费一周左右(代码功底好的同学一下午)掌握语法和各种神奇的表达式,以及他的诸多特点:鸡肋线程,强制缩进,不需编译的解释性

2)下载一个Jupyter Notebook记事本,感受前所未有的编程体验

  • 网页版轻量级,无负重,不会像Pycharm那样占很多内存,
  • 可以使用GPU加速,
  • 支持Makedown语法,比如本文就是在这上面写的,
  • 支持Latex语法,可以随便敲出美美的公式排版,
  • 支持各种格式的导出,虽然对中文有缺陷,但导出为tex文件,再在TexStudio里面编辑一下目录就OK了
  • 分节运行,特别容易找bug
  • 可以边运行,边修改
  • 还支持表情包,啊啊啊,岂曰太难,我有神器
    上手机器学习小白指南
    简直吹爆

3)之后是不是以为开始学习算法了?

不,,,等等,,我们走另外一条路,感受一下升级打怪的成就感

先上Kaggle官网,随便报名一个新手练习赛,我刚开始报的是泰坦尼克号的生存
https://www.kaggle.com/competitions

注意到了吧,上万人同时在线竞技,还有什么比这更加刺激的吗?
还有详细的新手成长文档,在左边Tutorials教程里面,全部跟着来一遍。

我只对上述做一点补充:
Numpy,pandas,sklearn,matplotlib这四个模块是数据挖掘和机器学习的基础和重中之重,这四个模块不扎实,深度学习兵败如山倒,学长含泪忠告

教程提示:需要上官方文档全部过一遍,但学长的亲身体验后:这个时间周期是我寒假1个月,每天12个小时的投入,历经无数次的怀疑和放弃刷完的

对于小白,在没有对自己未来职业清晰规划的情况下,只能是从入门到放弃

在此建议:上我的博客,把四个模块最常用的处理数据和可视化的方法手敲两遍,可以不背下来,但是要用时,知道去哪找就行

4)建议先自己去找一些资料(包括书和博客)慢慢和那些高端算法混个脸熟,花费一两周吧,多看,多闻,多归类,自己模糊建立一个框架,知道学到什么程度,掌握什么到那个层级,可以做什么,对之后系统学习大有裨益,

例如当你看到一个RBF-SVM,你淡然一笑,这是属于支持向量机的,他们主要是核不同,造成了差异,对于高斯曲线型数据,用此模型效果更好,而不是见到一个新东西就很惶恐,感觉自己知识漏洞。

古人云:博闻强识不是没有道理

5)之后呢,就正式入坑,你将会在一次次的碾压自己中感受到分数提高带来的兴奋与喜悦,也会更加积极主动的去学习各类算法核他们的适用领域,当你发现掉包调库已经不能满足你的野心时,你会主动的开始推数学公式,并且沉溺于人类的智慧无法自拔

不多,不少,恰如其分的美感会让你对数学世界有一个更加深刻的认识

推荐书目《深入浅出机器学习》,跟着啪啪啪敲起来吧,然后绞尽脑汁在这片战场杀出属于自己的路,定个小目标吧:泰坦尼克号前百分之十。

当你达到这个目标,回首来路时,

无论

从清晨到野外

从黄昏到书桌,

在课上,在饭间

在机器的每一次轰鸣中

在内心的每一次呐喊中

在敲下每一行代码的点滴时刻

在每一次优化后分数提高的激动瞬间

亦或者在每个辗转反侧苦思无解却又不甘放弃的深夜**

都可以坦然地说:接触机器学习后,我都过的充实认真,也都热情的拥抱过每一天,也尽过自己最大的努力

之后,如果你还保有当年 胸中有丘壑,立马振山河的激情

欢迎你,你已经是我们的同志了,让我们一起立誓:

未来已来,我从今开始学习,至死方休。

我将不恋爱,不游戏,不虚度。

我将不受虚赞,静心沉淀。

我将不惧未来,决不退缩。

我是Kaggle中的战士,

Hackathon中的烈焰

追寻KDD的微光

我将青春与热血献给深度学习

今日如此,夜夜如此。

(让我入戏一会,纪念一下终章 * 第八季的开播)

如果没有,也没关系,云计算,分布式,前端,后端,安卓,爬虫,还有大好天地任你驰骋,毕竟

何必硬刚KDD,人生无处不青山
(注:KDD:数据挖掘最高学术会议)

以上所有项目代码在我的博客里都有,但你自己要清楚只有亲手输入电脑才是属于你的。
我能想到最可惜的事莫过于:那些胸怀大志,天命不凡的年轻人,在每一次听到战斗的号角时,声势浩大的立下了旗帜,却倒在了里起点不远的位置

6)调用一个百度的API感受一下工业界成熟应用的风范
7)入手深度学习
8)用 TensorFlow 学习神经网络
9)如何读顶刊顶会的论文

……
未完待续
——————————————————————————————

本文只为鼓舞学弟百尺竿头的入门随笔,重点回顾我的一些来路,没有太过具体的学习内容,文中不足之处欢迎大家多多斧正,引用了我看过的一些文章,但记忆模糊,未能找到详细作者,如有侵权,请联系博主删除。

推荐:
1.红色石头干货满满 https://redstonewill.com/

2.机器学习成才之路:这是一条GitHub高赞的学习路径
https://zhuanlan.zhihu.com/p/59924278?utm_source=qq&utm_medium=social&utm_oi=884935501994418176

3.《动手学深度学习》https://zh.d2l.ai/

4.《100天机器学习》https://github.com/Avik-Jain/100-Days-Of-ML-Code

5.还有万门大学,唐宇迪老师等课程良心推荐小白入门