1.3 机器学习应该如何入门——世上无难事
相信在看了上面的内容之后,一些读者朋友也已经动心,想要加入机器学习的领域当中了。保不齐能像故事中的小C一样,既能抱得美人归,又能找到一份心仪的工作。但另外,又会担心自己基础薄弱,不知道从何入手。
不用担心!只要你肯多动脑,勤动手,相信很快就可以入门的。下面是我们给大家的一点学习方面的建议。
1.从一种编程语言开始
如果你之前完全没有编程的基础,那么我们建议先从一门编程语言开始。目前市面上常用的编程语言有很多种,如C++、Java、Python、R等。那么该选择哪一种呢?不必纠结,编程语言并没有绝对的“好”和“不好”的区别,只是它们各自有各自的特点而已。而且如果你掌握了其中的一种,再学习其他的编程语言时,上手会快得多。
本书使用的语言是Python,主要原因是:在数据科学领域,Python已经成为了一门通用的编程语言。它既有通用编程语言的强大能力,同时还具有诸如MATLAB或者R之类针对某个专门领域语言的易用性。同时丰富和强大的库,让Python在数据挖掘、数据可视化、图像处理、自然语言处理等领域都有非常不俗的表现。
Python还被称为“胶水语言”,因为它能够把用其他语言编写的各种模块轻松连接在一起。而它简洁清晰的语法和强制缩进的特点,都让Python对初学者非常友好。此外,它还是完全开源的,用户完全不需要支付任何费用。
由于Python语言的简洁性、易读性以及可扩展性,在国外用Python做科学计算的研究机构日益增多,一些知名大学已经采用Python来教授程序设计课程。众多开源的科学计算软件包都提供了Python的调用接口,如著名的计算机视觉库OpenCV、三维可视化库VTK、医学图像处理库ITK。Google的深度学习框架TensorFlow兼容得最好的语言之一,也是Python。
2017年7月20日,IEEE发布2017年编程语言排行榜:Python高居首位。
还有一个重要的原因,对于用户来说,Python的学习成本是非常低的。哪怕是完全零基础的读者,在一个月左右的努力学习之后,也可以大致掌握它的基本语法和主要的功能模块。
因此我们推荐读者使用Python进行机器学习方面的研究与开发,在后面的章节我们会带大家配置基于Python的开发环境。
2.熟悉机器学习中的基本概念
在对编程语言有了基本的掌握之后,读者朋友需要熟悉机器学习中的一些基本概念,比如什么是“有监督学习”,什么是“无监督学习”,它们之间的区别是什么,在应用方面有什么不同。另外,对机器学习的“分类”和“回归”有基本认知,清楚在什么场景下使用分类算法,在什么场景下使用回归算法。最后理解模型的“泛化”,明白在什么情况下模型会出现“过拟合”的现象,在什么情况下会出现“欠拟合”的现象。
3.了解机器学习中最常见的算法
在了解了基本概念之后,读者朋友就可以开始了解机器学习中最常用的一些算法了。比如K最近邻算法、线性模型、朴素贝叶斯、决策树、随机森林、SVMs、神经网络等。
在这个过程中,读者需要了解每种算法的基本原理和用途,它们的特性分别是什么,在不同的数据集中表现如何,如何使用它们建模,模型的参数如何调整等。
4.掌握对数据进行处理的技巧
读者朋友可根据前述内容,对小数据集进行建模并且做出一些预测。但是在真实世界中,数据往往比我们拿来实验的小数据集复杂很多倍。它们的特征变量会大很多,也就是说数据的维度会高很多,同时可能完全没有训练数据集供你使用,这时候读者就需要掌握一些数据处理的技能,比如如何对数据进行降维,或者聚类,从而让数据更容易被理解,并从中找到关键点,为建模奠定基础。
5.学会让模型更好地工作
学会用算法建模和对数据进行处理之后,读者朋友要做的是如何让模型更好地工作。例如,怎样做可以让算法的效率更高,怎样找到最适合的模型,模型最优的参数是什么,以及如何打造一个流水线,让几个模型在其中共同协作,以解决你的问题等。
6.动手,一定要动手操作
学习一门知识最好的办法就是使用它,因此建议读者朋友一定要自己动手实操。不要嫌麻烦,尽可能把本书中的代码全部自己敲一下这样才能对内容有更加深刻的理解。如果觉得不够过瘾,还可以到知名的Kaggle大赛平台,或者“天池”算法大赛平台上,使用那些来自真实世界的数据来磨炼自己的技能。
当然,还有个更好的方法,那就是去企业中寻找一个机器学习工程师或是算法工程师的职位,在工作中学习,效果是最好的了。