购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.6 机器学习工作流程

机器学习的通用流程主要分为四部分:问题建模、特征工程、模型选择、模型融合。

(1)问题建模。

收集问题资料,深入理解问题,然后将问题抽象成机器可预测的问题。明确业务目标和模型预测目标,根据预测目标选择适当的评估指标用于模型评估。

(2)特征工程。

工业界大多数成功应用机器学习的问题,都在特征工程方面做得很好。进行特征工程是为了将特征输入给模型,让模型从数据中学习规律。

(3)模型选择。

众多模型中选择最佳的模型需要对模型有很深入的理解。

(4)模型融合。

充分利用不同模型的差异,进一步优化目标。

下面将介绍一种可用于解决任何机器学习问题的通用模板,这一模板将很多概念串在一起:问题定义、评估、特征工程和解决过拟合。

1.6.1 收集数据集

机器学习中,首先,必须定义所面对的问题。

(1)输入什么数据?要进行什么预测?只有拥有可用的训练数据,才能学习预测某件事情,数据可用性通常是这一阶段的限制因素。

(2)面对的问题是什么类型?是二分类问题、标量回归问题、向量回归问题,还是多分类、多标签等问题?又或者是其他问题,如聚类、强化学习等?确定问题类型有助于选择模型架构、损失函数等。

只有明确了输入、输出及所使用的数据,才能进入下一阶段。注意在这一阶段所做的假设。

(1)假设输出是可以根据输入进行预测的。

(2)假设可用数据包含足够多的信息,足以学习输入和输出之间的关系。

在开发出工作模型之前,这些只是假设,等待验证真假。并非所有问题都可以解决。例如,如果想根据某支股票最近的历史价格来预测其股价走势,那么预测成功的可能性不大,因为历史价格并没有包含很多可用于预测的信息。

需要注意的是,机器学习只能用来记忆训练数据中存在的模式,只能识别出曾经见过的东西。在过去的数据上训练机器学习来预测未来,这里存在一个假设,就是未来的规律与过去相同,但事实往往并非如此。

1.6.2 选择衡量成功的指标

对于平衡分类问题(每个类别的可能性相同),精度和接收者操作特征曲线下的面积是常用的指标。对于类别不平衡的问题,可以使用准确率和召回率。对于排序问题或多标签分类,可以使用平均准确率均值。自定义衡量成功的指标也很常见。

1.6.3 确定评估法

一旦明确了目标,必须确定如何衡量当前的进展。前面介绍了留出验证、K折交叉验证以及重复的K折验证这三种常见的评估方法。

只需选择三者之一即可。大多数情况下,第一种方法足以满足要求。确定要训练什么、要优化什么及评估方法,那么就基本上已经准备好训练模型了。但前提是将数据格式化,使数据可以输入机器学习模型中。

(1)将数据格式化为向量。

(2)向量的取值通常缩放为较小的值,如在[-1,1]区间或[0,1]区间。

(3)如果不同的特征具有不同的取值范围(异常数据),那么应该做数据标准化。

(4)可能需要做特征工程,尤其是对于小数据问题。

准备好输入数据和目标数据的向量后,就可以开始训练模型了。

1.6.4 开发更好的模型

开发更好的模型的目标是获得统计功效。在MNIST数字分类的实例中,任何精度大于0.1的模型都可以说具有统计功效;在IMDB的实例中,任何大于0.5精度的模型都可以说具有统计功效。

要记住1.6.1节所做的两个假设。这两个假设很可能是错误的,这样就需要重新开始。此外,还需要选择三个关键参数来构建第一个工作模型。

①最后一层的激活。它对网络输出进行有效的限制。

②损失函数。它应该匹配要解决的问题的类型。

③优化配置。要使用哪种优化器?学习率是多少?大多数情况下,使用rmsprop及其默认的学习率是稳妥的。

关于损失函数的选择,需要注意,直接优化衡量问题成功的指标不一定总是可行的。有时难以将指标转换为损失函数,因此在分类任务中,常见的做法是优化曲线下的面积(Area Under Curve,ROC AUC)的替代指标,如交叉熵。一般来说,可以认为交叉熵越小,ROC AUC越大。

1.6.5 扩大模型规模

一旦得到了具有统计功效的模型,问题就变成:模型是否足够强大?它是否具有足够多的层和参数来对问题进行建模?例如,只有单个隐藏层且只有两个单元的网络,在MNIST问题上具有统计功效,但并不能很好地解决问题。

要弄清楚需要多大的模型,就必须开发一个过拟合的模型,方法如下。

(1)添加更多的层。

(2)让每一层变得更大。

(3)训练更多的轮次。

要一直监控训练损失和验证损失,以及关心的指标的训练值和验证值。一旦发现模型在验证数据上的性能开始下降,那么就出现了过拟合。

1.6.6 正则化与调节超参数

这一步将是不断地调节模型、训练、在验证数据上评估、再次调节模型,然后重复这一过程,直到模型达到最佳性能。可以进行以下尝试。

(1)尝试不同的架构(增加或减少层数)。

(2)添加L1或L2正则化。

(3)尝试不同的超参数,以找到最佳配置。

(4)添加新特征或删除没有信息量的特征。

一旦开发出令人满意的模型配置,就可以在所有可用数据上训练最终的生产模型,然后在测试集上最后评估一次。如果存在测试集上的性能比验证集上差很多的情况,可能需要换用更加可靠的评估方法,如重复的K折验证。 Qa4Rkjyyqyn7wpG0xGwnFCnYfgq4QpkVnlHub2IzSi27U5Uh/hB22xB3JdS3O0mp

点击中间区域
呼出菜单
上一章
目录
下一章
×