您使用的数据以及如何使用数据,很可能会决定您预测建模问题的成功程度。
数据和问题的框架可能是您项目中影响力最大的方面。
选择错误的数据或错误的问题框架可能导致模型性能不佳,或者更糟糕的是,导致模型无法收敛。
无法通过分析来计算要使用什么数据或如何使用它们,但可以通过反复试验的过程来发现如何最好地利用您拥有的数据。
在这篇文章中,您将发现如何在机器学习项目中使用您的数据获得最大价值。
阅读本文后,你将了解:
- 探索预测建模问题的不同框架的重要性。
- 需要为您的输入数据开发一套“视图”,并系统地测试每一个视图。
- 特征选择、工程和准备是创建更多问题视图的方法。
启动您的项目,阅读我的新书《机器学习数据准备》,其中包括分步教程和所有示例的Python源代码文件。
让我们开始吧。

如何充分利用你的机器学习数据
照片由 Jean-Marc Bolfing 拍摄,保留部分权利。
概述
本文分为 8 部分;它们是
- 问题构建
- 收集更多数据
- 研究您的数据
- 训练数据样本量
- 特征选择
- 特征工程
- 数据准备
- 更进一步
1. 问题框架
集思广益,构思预测建模问题的多种方法。
问题的框架是指
- 输入
- 输出
- 问题类型
例如
- 您可以使用更多或更少的数据作为模型的输入吗?
- 您能预测其他东西吗?
- 您能否将问题更改为回归/分类/序列等?
您越有创造力,越好。
从其他项目、论文和领域本身汲取灵感。
集思广益。写下所有想法,即使它们很疯狂。
我有一些框架可以帮助您集思广益,了解如何进行构思。
在这篇文章中,我稍微谈了谈如何更改问题类型。
想开始学习数据准备吗?
立即参加我为期7天的免费电子邮件速成课程(附示例代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
2. 收集更多数据
收集比您需要的数据更多,即使是与所预测结果有间接关系的数据。
我们无法知道需要多少数据。
数据是在模型开发过程中花费的货币。它是项目赖以生存的氧气。每次使用一些数据,可用于其他任务的数据就会减少。
您需要将数据用于诸如
- 模型训练。
- 模型评估。
- 模型调优。
- 模型验证。
此外,项目是新的。没有人做过您特定的项目,也没有对您的特定数据进行建模。您还不知道哪些特征有用。您可能有想法,但您不知道。收集所有这些特征,让它们在现阶段都可用。
3. 研究您的数据
使用您能想到的所有数据可视化方法,从各个角度审视您的数据。
- 查看原始数据很有帮助。您会注意到一些事情。
- 查看汇总统计信息也很有帮助。同样,您会注意到一些事情。
- 数据可视化是这两种学习方式的美妙结合。您会注意到更多的事情。
花大量时间查看您的原始数据和汇总统计信息。然后最后再进行可视化,因为它们可能需要更多时间来准备。
使用您能想到的所有数据可视化方法,并从书籍和论文中获取有关您数据的见解。
- 查看图表。
- 保存图表。
- 标注图表。
- 将图表展示给领域专家。
您正在寻求对数据更多的见解。可以帮助您更好地选择、工程和准备用于建模的数据的想法。这将有所回报。
4. 训练数据样本量
对您的数据样本进行敏感性分析,以了解您实际上需要多少(或多少)数据。
您没有所有观测值。如果您有,您就不需要对新数据进行预测了。
相反,您使用的是数据样本。因此,关于拟合模型需要多少数据,这是一个悬而未决的问题。
不要认为越多越好。测试一下。
- 设计实验,查看模型技能如何随着样本量的变化而变化。
- 使用统计数据来了解趋势和倾向如何随着样本量的变化而变化。
没有这些知识,您将无法充分了解您的测试框架,也就无法明智地评论模型技能。
在这篇文章中了解更多关于样本量的信息。
5. 特征选择
创建输入特征的许多不同视图,并测试每一个视图。
您不知道哪些变量在您的预测建模问题中有帮助或最有帮助。
- 您可以猜测。
- 您可以听取领域专家的建议。
- 您甚至可以使用特征选择方法的建议。
但它们都只是猜测。
每一组建议的输入特征都是对您问题的一个“视图”。一个关于哪些特征可能对建模和预测输出变量有用。
集思广益,计算并收集尽可能多的输入数据视图。
设计实验,仔细测试和比较每个视图。使用数据来告知您哪些特征和哪些视图最具预测性。
有关特征选择的更多信息,请参阅此文。
6. 特征工程
使用特征工程为您的预测建模问题创建额外的特征和视图。
有时您已经获得了所有可用的数据,但给定的特征或一组特征所包含的知识过于密集,以至于机器学习方法无法学习并映射到输出变量。
示例包括
- 日期/时间。
- 交易。
- 描述。
将这些数据分解为更简单的附加组件特征,例如计数、标志和其他元素。
尽量简化建模过程。
有关特征工程的更多信息,请参阅文章。
7. 数据准备
尽可能多地预处理数据,以满足算法的期望并超越。
数据预处理,如特征选择和特征工程,会为您的输入特征创建额外的视图。
某些算法对预处理有偏好,例如
- 归一化的输入特征。
- 标准化的输入特征。
- 使输入特征平稳。
根据这些期望准备数据,但还要更进一步。
应用您能想到的所有数据预处理方法。不断为您的问题创建新的视图,并使用一个或一套模型进行测试,以了解哪种方法最有效。
您的目标是发现数据上最能暴露映射问题未知底层结构到学习算法的视图。
8. 更进一步
您总可以更进一步。
通常还有更多数据可以收集,更多视图可以创建。
集思广益。
一旦您觉得走到了尽头,一个简单的胜利就是开始研究由您建模问题的不同视图创建的模型集合。
这很简单而且非常有效,特别是如果这些视图暴露了底层映射问题的不同结构(例如,模型具有不相关的误差)。
进一步阅读
如果您想深入了解,本节提供了更多关于该主题的资源。
- 为什么应用机器学习很难
- 将应用机器学习作为一个搜索问题的简明介绍
- 如何定义你的机器学习问题
- 机器学习性能改进速查表
- 机器学习需要多少训练数据?
- 特征选择简介
- 探索特征工程,如何进行特征工程以及如何精通它
总结
在这篇文章中,您了解了可用于在预测建模问题中充分利用您的数据的技术。
具体来说,你学到了:
- 探索预测建模问题的不同框架的重要性。
- 需要为您的输入数据开发一套“视图”,并系统地测试每一个视图。
- 特征选择、工程和准备是创建更多问题视图的方法。
您是否有更多关于如何充分利用您的数据的想法?
您通常在项目上做什么?
在下面的评论中告诉我。
你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
谢谢 Jason,这篇很棒的文章!
我也想补充以下几点:
– 数据清洗:处理缺失值、损坏记录等。
– 异常值检测与处理
– 选择合适的方法来检测异常值,
– 如果您能确定异常值是错误的,就删除它们。
– 如果没有理由删除异常值,则用虚拟变量标记它们。
祝好,
Elie
一如既往,一篇精彩简洁的文章,直击主题核心。
对我来说,“您能否将问题更改为回归/分类/序列等?”是关键——有时回归模型非常糟糕,而逻辑回归可以很好地解决问题。
我也同意 Elie 的观点——这些可以成就或毁掉一个模型。我见过模型因为糟糕的输入数据(如货币字段中的巨大值(10^30 等))而无法收敛。
谢谢 Alain!
是的,我同意。问题框架通常是项目中影响最大的方面。而且经常被忽视。