
1.1.4 构建机器学习应用的步骤
机器学习有很多任务场景,为了简要说明机器学习的大体应用方法与步骤,这里以较为常见的手写识别任务为例。
根据Tom M.Mitchell对机器学习的定义,手写识别任务的T、P、E分别为:
❑ 任务T:训练出高准确率的手写识别模型;
❑ 性能P:分类的准确率、召回率等;
❑ 训练经验E:带标签的手写图片。
首先介绍一系列关键概念。
❑ 特征:特征是事物某些突出性质的表现,即区分事物的关键,当需要对事物进行分类或者识别时,我们会根据事物的特征去区分,并依次建立一个模型。对于单个事物而言,可能有多个特征存在。而对于一组事物,某个特征项会有不同取值分布。
❑ 标签:对于特征而言,标签表示这个事物是什么,例如通过某个人的言行举止、穿着打扮可以大体判定其具有某种性格或者某种社会地位。这种性格或者社会地位就是标签。机器学习的任务就是针对新输入的数据,根据其特征来确定其标签。
❑ 数据切分:根据本章定义,机器学习有训练的过程,在这个过程中应用了训练经验E,而训练经验E则来源于原始数据。一般来说,原始数据分为三个部分,即训练集、验证集和测试集,其分配比例分别为70%、20%和10%。训练集用以训练模型,验证集用以调优模型参数,而在经过训练集和验证集的训练之后,开发者获得了一系列模型,此时测试集用以选择模型。在数据切分时,一定要注意抽样方法的选择,务必保证三个数据集的数据分布大体一致。
❑ 交叉验证与网格调参:大多数时候,应考虑数据切分产生的数据分布不均的影响。在训练模型时往往用交叉验证的方式,同时会使用网格调参去寻找最优参数。交叉验证指将数据分为K份,进行K次训练,每次训练抽取其中的K-1份数据作为训练集,其余一份作为验证集,训练时通常使用网格调参,于是便可以得到K个模型。在K个模型中,选择在验证集上表现最佳的一个模型即可。网格调参是指对于需要调整的参数,每个参数设置一组预设值。每组预设值根据不同的取值组合成繁多的取值组合。如同设置一个高维的网络,每个组合都是其中的一个交叉点,在每个组合数据上验证模型的性能,并获得最佳的组合。
❑ 模型评价:简而言之就是评价模型的性能,如前所述,需要通过模型评价选择出最优秀的模型。对于分类和回归问题来说,存在不同的模型评价指标,将在后续章节进行详细介绍。
那么对于一个手写识别任务来说,机器学习的应用步骤如下所述:
❑ 数据预处理:手写数据的图片就是其数据特征,0, …,9的数字为其标签。首先需要将图片转换为数值特征,此步骤称为数据预处理。手写识别图片为灰度图且只有一个通道,那么每张图片就可以抽选特征成为一个数组,例如将图片转换为180×180维的由 [0,1]组成的一组数据,然后再让模型去学习。
❑ 数据切分:将数据按照7/2/1的比例切分成训练集、验证集和测试集。此处需要注意的是,为了不让数据的分布产生差别,三个数据集中的每一个都包含所有的标签类别,需要采用分层抽样技术。
❑ 选择模型(一组泛函):对于分类来说,有很多模型类型可以使用。每种模型代表一组泛函,学习的目的就是搜索泛函中性能优异的函数。针对分类问题,可用的函数族有很多,例如逻辑回归、决策树、支持向量机以及神经网络等。
❑ 选择目标函数:根据所选模型的不同,应选择相应的目标函数以及优化方法。合适的目标函数与优化方法搜索出的模型参数可以使模型达到最优的性能。例如,对于逻辑回归,可用的目标函数为交叉熵;对于决策树,在分裂时目标函数为熵或者基尼系数;而对于AdaBoost模型,则选取对数损失函数。
❑ 根据目标函数选择相应的优化方法:最常用的优化方法是梯度下降法、牛顿法等。需要目标函数有较好的性质才能找到其最优解。
❑ 根据评价函数计算性能,并优化模型参数:通过选取合适的模型-目标函数-优化方法,模型在这个流程中学习到了参数。此时,模型已经可以执行预测工作。
❑ 了解模型性能:对于分类问题有很多模型评价指标,例如查准率、查全率、F1值、AUC值、PR曲线等。若计算得出的模型性能并非十分优秀,那么就要重新进行参数搜索。
❑ 最终获得模型。
这里提供了一张Checklist(检查表)。
注记1.1:Checklist
❑ 宏观审视问题,问题的转化(有监督、无监督或者分类回归);
❑ 获取数据;
❑ 探索数据;
❑ 发现数据的潜在规律模式,为开始训练模型做好准备;
❑ 训练尽可能多的模型并列举出性能最好的几个;
❑ 调优模型并将模型融合;
❑ 预测并展示结果;
❑ 部署、监测并维护系统。