首页 > 编程笔记 > Python笔记 阅读:1

机器学习工作流程(新手必看)

机器学习的通用流程主要分为四部分:问题建模、特征工程、模型选择、模型融合:
  1. 问题建模:收集问题资料,深入理解问题,然后将问题抽象成机器可预测的问题。明确业务目标和模型预测目标,根据预测目标选择适当的评估指标用于模型评估;
  2. 特征工程:工业界大多数成功应用机器学习的问题,都在特征工程方面做得很好。进行特征工程是为了将特征输入给模型,让模型从数据中学习规律;
  3. 模型选择:众多模型中选择最佳的模型需要对模型有很深入的理解;
  4. 模型融合:充分利用不同模型的差异,进一步优化目标。

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

收集数据集

机器学习中,首先,必须定义所面对的问题:
只有明确了输入、输出及所使用的数据,才能进入下一阶段。注意在这一阶段所做的假设:
在开发出工作模型之前,这些只是假设,等待验证真假。并非所有问题都可以解决。例如,如果想根据某支股票最近的历史价格来预测其股价走势,那么预测成功的可能性不大,因为历史价格并没有包含很多可用于预测的信息。

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

选择衡量成功的指标

对于平衡分类问题(每个类别的可能性相同),精度和接收者操作特征曲线下的面积是常用的指标。对于类别不平衡的问题,可以使用准确率和召回率。

对于排序问题或多标签分类,可以使用平均准确率均值。自定义衡量成功的指标也很常见。

确定评估法

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

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

开发更好的模型

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

要记住前面所做的两个假设。这两个假设很可能是错误的,这样就需要重新开始。此外,还需要选择三个关键参数来构建第一个工作模型:
关于损失函数的选择,需要注意,直接优化衡量问题成功的指标不一定总是可行的。有时难以将指标转换为损失函数,因此在分类任务中,常见的做法是优化曲线下的面积(Area Under Curve,ROC AUC)的替代指标,如交叉熵。一般来说,可以认为交叉熵越小,ROC AUC 越大。

扩大模型规模

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

要弄清楚需要多大的模型,就必须开发一个过拟合的模型,方法如下:
要一直监控训练损失和验证损失,以及关心的指标的训练值和验证值。一旦发现模型在验证数据上的性能开始下降,那么就出现了过拟合。

正则化与调节超参数

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

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

相关文章