首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何决定将哪些原语用于DFS?

如何决定将哪些原语用于DFS?
EN

Stack Overflow用户
提问于 2018-05-25 18:44:12
回答 1查看 498关注 0票数 0

我们如何确定要传递到featuretools中的深度特征合成的基元列表?

EN

回答 1

Stack Overflow用户

发布于 2018-06-16 06:57:10

有两种主要的方法可以做到这一点

  1. 如果您在计算上受到限制,请从几个基元开始,然后构建最终的基元集。
  2. 如果数据集很小(相对于所讨论的计算机),我们可以选择许多基元开始,然后依靠超参数优化和特征选择来修剪生成的特征矩阵。

积聚

当数据集很大时,DFS可能需要很长时间才能在个人计算机上运行。对于我们添加的每个基元,该基元将应用于所有有效关系中的所有有效列。

在这种情况下,比起其他方式,更仔细地添加原语是很有帮助的。特别重要的是,当每个额外的基元为最终计算增加了显着的时间量时,检查基元是否正在创建有意义和重要的功能。

在构建时,我们大致遵循以下步骤

  1. 仅对实体集的一小部分使用DFS,以便您可以查看结果并检查生成的要素以确保它们有意义,并且正在计算您认为它们是合理的,并且正在计算您所希望的任何特定要素正在对模型进行验证,并对验证集上具有更多行的要素矩阵进行评分要查看哪些要素看起来很有希望,哪些不适合添加和移除图元,请重复

您可以在predict-remaining-useful-life演示中看到这方面的痕迹。我们只在几次迭代后发现的每个笔记本中显示了3个基元。在演示的第二个笔记本中,我们用我们的3个原语'last'中的一个来交换tsfresh'complexity' )来生成302个特征。'complexity'原语为我们的最终模型创建了5个最重要的特征中的3个,这比我们的原始模型更准确。

这种方法节省了在整个数据集上使用不必要的基元进行计算的成本。缺点是,结果是特别主观的。在每个级别上,您都在选择您喜欢的原语和特性。这导致了个人偏见和轶事证据限制了你最终模型的成功。为了避免这种情况,我们需要使用更多的计算资源。

变大和修剪

在计算时间允许的情况下,另一种方法是从一个大的特征矩阵开始,然后在此基础上工作。在这个范例中,我们将包含我们想要的每一个原语。从那里开始,我们将:

使用许多primitives

  • Test构建完整的特征矩阵各种特征选择的结果algorithms

  • Visually检查特别好的和特别差的特征以确保没有任何错误

  • 添加基于primitives

  • Test的自定义基元

您可以在predict-next-purchase演示中看到此方法的结果。在这里,我们使用默认原语集为具有12列的数据帧生成161个特征。从这些特征中,我们选择我们最喜欢的20个来使用完整的数据集。

这需要更多的时间,但允许对特征空间进行更具程序性和可重复性的探索。由于最终结果中的特征数量如此之多,因此更多地强调特征选择方法,而在选择基元时需要更少的关注。

最后,请注意,找到要传递给Featuretools的原语的最佳列表是一个非常困难的问题--“选择功能的最佳方式是什么?”通过深入的特征合成,一组聚合和转换原语将确定地生成一组特征。如果你问这些特性的最佳子集,你会得到不同的答案,这取决于你问的是谁。答案将受到以下条件的限制(此处没有列出特定的顺序):

  • 用于选择的算法,
  • 希望获得特征的可解释性,以及
  • 您正在尝试优化的度量和模型。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50527392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档