数据准备是预测建模项目的重要组成部分。
正确应用数据准备将把原始数据转换成一种表示形式,使学习算法能够最大限度地利用数据并做出熟练的预测。问题在于选择一种转换或一系列转换,从而产生有用的表示形式,这非常具有挑战性。以至于它可能被认为是艺术而非科学。
在本教程中,您将发现可用于为预测建模数据集选择数据准备策略的方法。
完成本教程后,您将了解:
- 数据准备技术可以根据数据集和算法的详细知识进行选择,这是最常见的方法。
- 数据准备技术可以作为建模管道中的另一个超参数进行网格搜索。
- 数据转换可以并行应用于训练数据集,以创建许多提取的特征,然后可以对其应用特征选择并训练模型。
通过我的新书《机器学习数据准备》**启动您的项目**,包括*分步教程*和所有示例的*Python 源代码文件*。
让我们开始吧。

如何为机器学习选择数据准备方法
图片来自 StockPhotosforFree,保留部分权利。
教程概述
本教程分为四个部分;它们是
- 选择数据准备技术的策略
- 方法 1:手动指定数据准备
- 方法 2:网格搜索数据准备方法
- 方法 3:并行应用数据准备方法
选择数据准备技术的策略
机器学习模型的性能仅取决于用于训练它的数据。
这给数据和用于准备数据进行建模的技术带来了沉重的负担。
数据准备是指将原始数据转换为最符合机器学习算法预期或要求的形式的技术。
这是一个挑战,因为我们无法知道原始数据的哪种表示形式将导致预测模型获得良好或最佳性能。
然而,我们通常不知道最佳的预测因子重新表示形式以提高模型性能。相反,预测因子的重新加工更像是一种艺术,需要正确的工具和经验才能找到更好的预测因子表示形式。此外,我们可能需要搜索许多替代的预测因子表示形式才能提高模型性能。
——第 xii 页,《特征工程与选择》,2019 年。
相反,我们必须使用受控实验系统地评估模型上的数据转换,以发现哪些方法效果良好或最佳。
因此,在一个预测建模项目中,我们可以决定使用三种主要策略来为数据集选择数据准备技术或一系列技术;它们是:
- 根据对数据和所选算法的深入了解,手动指定要用于给定算法的数据准备。
- 测试一系列不同的数据转换和转换序列,并发现哪些方法在数据集上对一个或一系列模型效果良好或最佳。
- 并行对数据应用一系列数据转换,以创建大量工程特征,这些特征可以通过特征选择进行缩减并用于训练模型。
让我们依次仔细研究一下这些方法。
想开始学习数据准备吗?
立即参加我为期7天的免费电子邮件速成课程(附示例代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
方法 1:手动指定数据准备
这种方法涉及研究数据和特定算法的要求,并选择数据转换来最好地满足这些要求。
许多从业者认为这是选择数据准备技术的唯一可能方法,因为它通常是教科书中唯一教授或描述的方法。
这种方法可能首先涉及选择一种算法并专门为其准备数据,或者测试一系列算法并确保数据准备方法适用于每种算法。
这种方法需要对您的数据有详细的了解。这可以通过查看每个变量的汇总统计数据、数据分布图,甚至可能通过统计测试来查看数据是否符合已知分布来实现。
这种方法还需要对您将使用的算法有详细的了解。这可以通过查阅描述算法的教科书来实现。
从宏观角度来看,大多数算法的数据要求都是众所周知的。
例如,以下算法可能对您的数值输入变量的尺度和分布以及不相关和冗余变量的存在很敏感
- 线性回归(及扩展)
- 逻辑回归
- 线性判别分析
- 高斯朴素贝叶斯
- 神经网络
- 支持向量机
- k-近邻
以下算法可能对您的数值输入变量的尺度和分布不敏感,并且对不相关和冗余变量具有合理的非敏感性
- 决策树
- AdaBoost
- 装袋决策树
- 随机森林
- 梯度提升
这种方法的优点是,它让您对数据已根据特定算法的预期和要求进行了调整感到一定的信心。这可能会导致良好甚至出色的性能。
缺点是它可能是一个缓慢的过程,需要大量的分析、专业知识和潜在的研究。它还可能导致一种虚假的信心,认为已经取得了良好或最佳结果,并且几乎不可能进一步改进。
有关此数据准备方法的更多信息,请参阅教程
方法 2:网格搜索数据准备方法
这种方法承认算法可能存在期望和要求,并确实确保创建数据集的转换以满足这些要求,尽管它不假定满足这些要求将导致最佳性能。
它为非显而易见和反直觉的解决方案敞开了大门。
这可能是一种“不应该起作用”或“不适合该算法”的数据转换,但却能带来良好或出色的性能。或者,它可能是对被认为“绝对必要”的输入变量没有进行数据转换,但却能带来良好或出色的性能。
这可以通过在管道中设计数据准备技术和/或数据准备技术序列的网格搜索来实现。这可能涉及在单一选定的机器学习算法上或在一系列机器学习算法上评估每个技术。
结果将是大量结果,这些结果将清楚地表明那些数据转换、转换序列和/或与模型结合的转换在数据集上产生了良好或最佳性能。
这些可以直接使用,尽管更有可能为通过调整数据转换和模型超参数以充分利用这些方法以及通过消融研究来确认建模管道的所有元素都有助于熟练预测的进一步研究提供基础。
我自己通常使用这种方法,并将其推荐给希望快速在项目上取得良好结果的初学者或从业者。
这种方法的优点是它总是能提供具有良好相对结果的建模管道建议。最重要的是,它可以在不需要深厚专业知识的情况下,为从业者发现非显而易见和反直觉的解决方案。
缺点是需要一定的编程能力来实现网格搜索,以及评估许多不同数据准备技术和管道所增加的计算成本。
有关此数据准备方法的更多信息,请参阅教程
方法 3:并行应用数据准备方法
与前一种方法类似,这种方法假设算法具有预期和要求,它也允许找到违反这些预期的良好解决方案,尽管它更进一步。
这种方法还承认,对相同数据的多个视角进行模型拟合可能比对单一视角的数据进行模型拟合更有益。
这是通过对原始数据集并行执行多个数据转换,然后将所有转换的结果收集到一个包含数百甚至数千个输入特征的大型数据集中来实现的(例如,scikit-learn 中的 FeatureUnion 类可用于实现此目的)。它允许并行使用从不同转换中找到的良好输入特征。
对于所使用的每个转换,输入特征的数量可能会急剧增加。因此,最好将这种方法与特征选择方法结合起来,以选择与目标变量最相关的特征子集。同样,这可能涉及应用一种、两种或更多不同的特征选择技术,以提供比正常情况更大的有用特征子集。
或者,可以使用降维技术(例如 PCA)处理生成的特征,或者可以直接使用执行自动特征选择的算法(例如 随机森林)来训练生成的特征。
我喜欢将其视为一种显式特征工程方法,我们从原始数据中生成所有能想到的特征,解开数据中的分布和关系。然后选择最相关特征的子集并拟合模型。因为我们显式地使用数据转换将问题的复杂性分解为并行特征,所以它可能允许使用更简单的预测模型,例如带有强惩罚的线性模型,以帮助它忽略不太有用的特征。
这种方法的一个变体是在原始数据集的每个转换上拟合一个不同的模型,并使用集成模型来组合每个模型的预测。
这种通用方法的一个优点是它允许模型利用相同原始数据的多个不同视角或视图,这是上面讨论的其他两种方法所缺乏的特性。这可能允许从数据集中榨取出额外的预测技能。
这种方法的缺点是计算成本增加,以及对特征选择技术和/或用于解释如此大量输入特征的模型进行仔细选择。
有关此数据准备方法的更多信息,请参阅教程
进一步阅读
如果您想深入了解,本节提供了更多关于该主题的资源。
相关教程
书籍
总结
在本教程中,您学习了可用于为预测建模数据集选择数据准备策略的方法。
具体来说,你学到了:
- 数据准备技术可以根据数据集和算法的详细知识进行选择,这是最常见的方法。
- 数据准备技术可以作为建模管道中的另一个超参数进行网格搜索。
- 数据转换可以并行应用于训练数据集,以创建许多提取的特征,然后可以对其应用特征选择并训练模型。
你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
我阅读了您的博客,对理解机器学习课程非常有帮助。
感谢分享博客。
谢谢!
什么是机器学习的最佳数据标注技术?
您所说的数据标注具体指什么?
亲爱的 Jason,
请帮我理解解释性变量和探索性变量之间的区别。
谢谢你的建议。我以前没听过这个短语,你在哪里读到的?