从机器学习到深度学习:基于scikit-learn与TensorFlow的高效开发实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 机器学习的一般流程

虽然机器学习科学包含了大量解决不同问题的算法与技术,但在工程实践中它还是有一个几乎普适的流程模板,如图1-4所示。

图1-4 机器学习项目流程

1.2.1 定义问题

在机器学习的定义中有提到所有的机器学习项目必须有一个明确的任务目标,所以这是要解决的第一个问题。万事开头难,虽然这一步骤不需要具体的算法或人工智能技术,但却需要提出者具有敏锐的眼光和全局意识,而这些通常以丰富的系统知识为基础,是机器学习项目能否成功非常关键的一步。正因如此,大多数科技企业都有类似“创意基金”这样激励员工定义、提出问题的措施。

以下几个步骤可以帮助读者正确定义机器学习的问题:

◎ 明确动机。

◎ 列出已有的条件。

◎ 描绘解决思路。

假设有一个胸科医院的自动诊断项目,可以通过如下步骤将对问题的定义具体化。

◎ 动机:由于专家级医生资源紧缺,同时为了减少医生疲劳产生的误诊,需要开发一套自动为病人诊断疾病的系统。

◎ 已有条件:医疗研究机构积累了大量各种病人的病理特征。对于来医院诊断的病人,可以通过胸片、验血等检验手段获得病人较全面的病理特征。

◎ 解决思路:用历史病人特征建立疾病适配模型,用“疾病模型+病人病理特征”预测病人可能的疾病。

思考:假设有一个医院导航智能机器人项目,又该如何定义问题呢?

1.2.2 收集数据

现在可以开始收集和整理建立模型所需要的数据了。数据采集与清理工作比较琐碎,虽然不是机器学习学科研究的重点,但由于每个项目有自己的数据特点,缺乏统一的算法,经常是项目中需要花费大量人力与时间的阶段。一般通过数据采集、数据预处理、数据转换三个步骤完成本阶段。

1.数据采集(Data Selection)

需要根据数据的不同形式和所在物理媒介的不同而展开。从数据形式上看,数据可能是文本、数字、声音、图像等。从物理媒介上看,数据可能来自机构内部、互联网或实时采集等。当前已经有诸多开源的或商业机构提供的不同数据源的便捷访问软件包,如图1-5所示为商业智能软件公司“微策略”提供的常用数据源。

图1-5 商业智能软件公司“微策略”提供的常用数据源

本步骤的目的除了要使学习系统能够快速读取不同数据源的信息,还定义了这些数据源中的哪些数据是学习所需、哪些数据需要从学习系统中排除。对于胸科诊断来说,病人职业、血样指标、胸片诊断等都是必要信息;而像病人星座、政治面貌等一般可认为与疾病无关,可以从学习系统中排除。

提示:有些读者可能认为无用数据加入分析也无妨,其实在回归统计理论中,无用变量会影响方差估计,其他学习模型中也会由于数据的有限性使无效数据成为一种噪声。

2.数据预处理(Data Preprocessing)

所谓的数据预处理是机器学习和数据挖掘中的必要步骤,通常包含数据清理、格式化等。对于胸科诊断,包括以下内容。

◎ 清理:排除特征不完全的案例。比如某些历史病例丢失了病人体重、血样等重要信息,无法成为有效案例。

◎ 格式化:机器学习模型需要以数字作为输入,所以需要将其他形式的信息转换为数字,有时还可以在这里先进行排序处理。比如在本例中,将胸片中的有无骨折、气腹等诊断转换为布尔/数字特征。

3.数据转换(Data Transformation)

在这里需要对已有的数据进行编辑、合并或拆分,使其可以直接作为机器学习模型的输入。比如在胸科诊断中,用病人的身高+体重合成体重指数表示肥胖程度,将生日与发病日期合成得到发病年龄指标等。

1.2.3 比较算法与模型

因为机器学习是对未知知识的探索,通常在本阶段需要探索不同模型、调试各种超参数以获得最优模型。而衡量不同模型的优劣需要有一个客观标准,这就是所谓的评估技术。

本阶段是真正的分析与学习阶段,其目的是利用已经准备好的数据进行已定义问题的学习。这里先明确几个需要在机器学习领域反复用到的概念。

◎ 模型(Model):在机器学习中用来表征已知的历史数据集。每种算法、参数会产生不同的模型。模型被直接用于学习后的预测和分类应用。

◎ 训练(Training):也称适配(Fitting),是指根据数据集计算出模型的过程。

◎ 预测(Predict):用新的案例特征在模型上应用,以产生对新数据的判断。

◎ 评估(Evaluation):检验模型效果的手段,本章最后一节会进行更详细的描述。

如图1-6所示是模型、训练、预测之间的关系。其中的关键点是,机器学习在预测时使用的是模型,而不是直接使用历史数据。这是区别于传统的查找和人工智能算法的根本所在。本书的主要内容就是描述基于不同算法的模型原理与实践。

图1-6 模型、训练、预测之间的关系

在反复训练时,经常需要调节所谓超参数(Hyperparameter),它是在机器学习模型训练之前人为设定的参数,通常需要根据项目和算法经验进行调整。本书后续章节将对每个算法所涉及的重要超参数进行解析。

1.2.4 应用模型

数据收集与生成模型工作通常需要大量的存储与计算资源,同时现代机器趋势也越来越倾向于分布式的预测能力。通常在完成第三阶段的训练与模型选择后,需要将模型部署到正式的生产环境中或迁移到移动设备上。

与收集数据阶段类似,本阶段也是在不同学习领域差别较大的阶段,但不是本书的主要内容,只在最后一章略作探讨。