Getting started with Machine Learning

近年来互联网数据大爆炸,数据的丰富度和覆盖面远远超出人工可以观察和总结的范畴,而机器学习的算法能指引计算机在海量数据中,挖掘出有用的价值,也使得无数学习者为之着迷。

机器学习是什么

在我看来,机器学习研究的是计算机怎样模拟人类的学习行为,以获取新的知识或技能,并重新组织已有的知识结构使之不断改善自身。简单来讲,就是计算机从数据中学习出规律和模式,以应用在新数据上做预测的任务。

机器学习关注什么问题

并非所有的问题都适合用机器学习解决 (比如逻辑清晰的问题用规则就能很高效和准确地处理),也没有一个机器学习算法可以通用于所有问题。那么,机器学习,到底是关心和解决什么样的问题。

如果在 IT 行业 (尤其是互联网) 里溜达一圈,你会发现机器学习在以下热点问题中有广泛应用:

从功能的角度分类,机器学习在一定量级的数据上,可以解决下列问题:

  • 分类问题:根据数据样本上抽取出的特征,判定其属于有限个类别中的哪一个。比如:垃圾邮件识别。

  • 回归问题:根据数据样本上抽取出的特征,预测一个连续值的结果。比如:电影票房预测。

  • 聚类问题:根据数据样本上抽取出的特征,让样本抱团 (相近 / 相关的样本在一团内)。比如:新闻分类。

其实,上述常见问题可以划到机器学习最典型的 2 个分类上:

  • 分类与回归问题需要用已知结果的数据做训练,属于 “监督学习”。

  • 聚类的问题不需要已知标签,属于 “非监督学习”。

入门方法与学习路径

机器学习对大多数入门者也有一个比较通用的学习路径,也有一些优秀的入门资料可以降低大家的学习门槛。简单说来,大概的一个学习路径如下:

因为机器学习是一个将数学 / 算法理论和工程实践紧密结合的领域,需要扎实的理论基础帮助引导数据分析与模型调优,同时也需要精湛的工程开发能力去高效化地训练和部署模型和服务,所以最左边之所以列了『数学基础』、『典型机器学习算法』、『编程基础』三个并行的部分。

数学基础

机器学习之所以相对于其他开发工作,更有门槛的根本原因就是数学。每一个算法,要在训练集上最大程度拟合同时又保证泛化能力,需要不断分析结果和数据,调优参数,这需要我们对数据分布和模型底层的数学原理有一定的理解。

如果只是想合理应用机器学习,而不是做相关方向的理论研究,需要的数学知识基本都集中在微积分、线性代数、概率与统计中。

典型算法

机器学习里所说的 “算法” 与程序员所说的 “数据结构与算法分析” 里的 “算法” 略有区别。前者更关注结果数据的召回率、精确度、准确性等方面,后者更关注执行过程的时间复杂度、空间复杂度等方面。

绝大多数问题用典型机器学习的算法都能解决,粗略地列举一下这些方法如下:

基本工作流程

当我们基本具备了机器学习的必要条件后,剩下的就是怎么运用它们去做一个完整的机器学习项目。

机器学习的工作流程如下:抽象成数学问题 - 获取数据 - 特征预处理与特征选择 - 训练模型与调优 - 模型诊断 - 模型融合 - 上线运行。

这些工作流程主要是工程实践上总结出的一些经验。并不是每个项目都包含完整的一个流程。这里的部分只是一个指导性的说明,只有大家自己多实践,多积累项目经验,才会有自己更深刻的认识。

参考资料