2.机器学习的学习方法

条条道路通机器学习,网上讲述的大多数道路是从理论学习开始的。但是,由于计算机科学是一门实践科学,从理论开始学习机器学习并不妥当。

在这篇文章里,介绍学习机器学习的一种方法。通常,技术人员的修习之路,兼具实践性和经验性,需要你潜心研究、付诸于实验,然后建立起自己的技术直觉。

机器学习的修习之路可分为 4 个方面 :

1. 学习一种机器学习环境

2. 学习一个机器学习数据集

3. 学习一个机器学习算法

4. 实现一个机器学习算法

听上去有点像 "如何把大象关在冰箱里",下面一一来看。

1. 学习一种机器学习环境

选择一种自己喜欢的机器学习环境,并学习如何将其用好。

建议从一个内置了数据准备工具、机器学习算法工具、结果表示工具的机器学习环境体系开始。这样的机器学习环境体系会让你更好地掌握端到端的机器学习过程,这种对体系的学习,比单纯学习一种特定的数据准备技术或者机器学习算法更有价值。

如果你对某特定算法或算法类感兴趣,你也可以借此环境体系深入研究提供该算法的库或者工具,通过掌握该库或者工具来掌握该特定算法。

推荐使用的机器学习环境如 : R、Scikit-learn、TensorFlow。

2. 学习一种机器学习数据集

选择并洞悉一个数据集,探索何种算法或算法类最适合用于该数据集的处理,培养对数据的敏感度。

建议选择一个对内存来说适度大小的、被广泛使用的成熟数据集。市面上有很多不错的数据集可供选择。然后,你要做的是去了解数据集所表达的待解问题、数据集的结构、以及寻找最适合该数据集处理的解决方案。

学习数据集时,可以选择一种机器学习环境或者统计开发环境。这有助于你将注意力集中到如何解决数据集的待解问题上,而不用为解决方案的代码实现细节而分心。

一些优质的数据源如 :UCI ML Repository、Kaggle。

3. 学习一个机器学习算法

研究一种算法,体会用其处理不同数据集时候,算法部分参数的稳定性和部分参数的微妙变化。

建议从一个复杂度适度的算法入手。选一个易于理解的算法,这类算法有许多种开放的源码实现可供选择,有比较少的参数供你研究。这里的目标是,对算法解决各种问题的能力和算法调参建立直观印象。

同对数据集的学习一样,使用一种机器学习环境来学习一个机器学习算法。这将使你能够将算法的行为作为一个系统来研究,而不是相反地"浪费"精力到数学和文献细节。

一些可用于入门的机器学习算法如:Least Squares、Linear Regression、Logistic Regression、k-Nearest Neighbour Classification、Perceptron

4. 实现一个机器学习算法

选择一个复杂度适中的算法,对其关键点进行细节研究,然后使用自己喜欢的计算机语言,试着用代码实现该算法。亦或者在不同语言之间移植算法实现。

将算法描述转化为代码实现、转化为功能系统的过程中,会遇到种种微决策。从点滴开始动手实现一个算法,对深入理解这些微决策很有帮助。对众多算法重复这种转化过程,以后遇到论文或文献中的数学与算法描述,你可以快速地对其建立起一种阅读直觉。

一些关于算法实现的想法:

1. 从一种语言到另一种语言移植开源的算法实现,是实现自己的算法实现的一种不错的入门方法。(实名推荐)

2. 对于一种算法,任何一种算法描述都有其侧重点和片面性,请参考两个以上的算法描述。

3. 对于一种算法,不同的算法实现有不同的细节考量,在时间允许的条件下,也可以阅读不同的算法实现。

4. 许多机器学习算法的实现核心,使用了一些先进的优化方法。不要试图去重新实现这些先进的优化方法,使用易于实现的优化方法 ( 如梯度下降法 ) 或者调用库方法取而代之。

小项目方法论

针对你想要弄清楚的问题,设计运行一些小项目。这种敏捷开发,可以让你快速地建立起针对问题的技术直觉。

小项目"小"在这么几个维度:

1. 花费时间少。一个项目从概念设计到项目结果展示,一般控制在 10 个小时以内。

2. 涉及范围小。先将问题收敛,再设计项目来对其实现。比如,问题 "微博是否会被转发" 可以收敛为 "特定时间段内特定账户的微博是否被转发"。

3. 花费资源少。保证仅使用"笔记本+互联网",就可将你的小项目迅捷地执行,而不依赖别的数据库架构或Web架构。

参考 :

1. https://machinelearningmastery.com/blog/page/67/

2. 不断更新中

猜你喜欢

转载自blog.csdn.net/jiangmengya1/article/details/85559921