机器学习项目完整的工作流程

一. 准备工作

1. 定义问题,收集数据集

2. 确定衡量成功的指标

  • 对于平衡分类问题(每个类别的可能性相同),精度和ROC是常用的指标。
  • 对于类别不平衡 问题,你可以使用准确率和召回率。
  • 对于排序问题或多标签分类,你可以使用平均准确率均值。
  • 自定义衡量成功的指标也很常见。

通过衡量成功的指标指引你选择损失函数,即模型要优化什么。

损失函数需要在只有小批量数据时即可计算(理想情况 下,只有一个数据点时,损失函数应该也是可计算的),而且还必须是可微的(否则无法用反向 传播来训练网络)。

衡量成功的指标和损失函数都是用来评估一个模型好坏的一个标准。指标常用来作为结果来评估。损失函数常用来在模型训练过程中来评估,因为损失函数是可微的,所以可以通过反向传播来训练。

3. 确定评估方法

  • 留出验证集。数据量很大时可以采用这种方法。
  • K 折交叉验证。如果留出验证的样本量太少,无法保证可靠性,那么应该选择这种方法。
  • 重复的 K 折验证。如果可用的数据很少,同时模型评估又需要非常准确,那么应该使用这种方法。

二. 特征工程

4. 数据预处理

  1. 收集数据

  2. 导入数据

  3. 合并数据、缺失值清洗等

5. 特征表示

要将数据集中的数据特征表示成计算机能够理解的数值形式。常用的表示方法是局部表示和分布式表示。

6. 传统的特征学习(表示学习)

特征选择

常用的特征:

  • 从数据集中选择合适的特征;
  • 自行设计特征:由多个特征合成的一个新特征(例如:长度*宽度=面积,面积作为新特征);
  • 多项式特征:一个特征经过运算,如x: x2,x1/2

特征抽取

好的特征可以极大提高分类器的性能. 因此,要取得好的预测效果,需要将样本的原始特征向量 𝒙 转换到更有效的特征向量 𝜙(𝒙),这个过程叫做特征抽取.

7. 特征缩放、标准化

  • 面对多维特征问题的时候,在对代价函数使用梯度下降算法前要对特征进行一些处理。保证这些特征都具有相近的尺度,这将帮助梯度下降算法更快地收敛。

  • 归一化和标准化是常用的两个特征缩放的方法

    归一化:通过最大值最小值把数据压缩到[0,1] 区间上;

    \[x^{}=\frac{x-min(x)}{max(x)-min(x)} \]

    标准化:减去均值后再除以标准差,将数据范围。将数据变成均值为0,方差为1的高斯分布。标准化不会限定值到某个特定的范围,这对某些算法可能构成问题(比如,神经网络常需要输入值得范围是0到1)。但是,标准化受到异常值的影响很小。

    \[x^{}=\frac{x-\mu}{\sigma} \]

三. 开发模型

8. 开发比基准更好的模型

开发一个小型模型,它能够打败纯随机的基准(dumb baseline)。

9. 开发过拟合的模型

请记住,机器学习中无处不在的对立是优化和泛化的对立,理想的模型是刚好在欠拟合和过拟合的界线上,在容量不足和容量过大的界线上。 为了找到这条界线,你必须穿过它。

要搞清楚你需要多大的模型,就必须开发一个过拟合的模型,这很简单。

  1. 添加更多的层;
  2. 让每一层变得更大;
  3. 训练更多的轮次。

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

10. 模型正则化与调节超参数

这一步是最费时间的:你将不断地调节模型、训练、在验证数据上评估(这里不是测试数据)、 再次调节模型,然后重复这一过程,直到模型达到最佳性能。你应该尝试以下几项:

  • 添加 dropout。
  • 尝试不同的架构:增加或减少层数。
  • 添加 L1 和 / 或 L2 正则化。
  • 尝试不同的超参数(比如每层的单元个数或优化器的学习率),以找到最佳配置。
  • ‰(可选)反复做特征工程:添加新特征或删除没有信息量的特征。

四. 模型评估

11. 最后

一旦开发出令人满意的模型配置,你就可以在所有可用数据(训练数据 + 验证数据)上训练最终的生产模型,然后在测试集上最后评估一次。

如果测试集上的性能比验证集上差很多,那么这可能意味着你的验证流程不可靠,或者你在调节模型参数时在验证数据上出现了过拟合。 在这种情况下,你可能需要换用更加可靠的评估方法,比如重复的 K 折验证。

posted @ 2020-04-10 19:48  z1xiang  阅读(797)  评论(0编辑  收藏  举报