我们如何确定要传递到featuretools中的深层特征合成的基元列表?
答案 0 :(得分:2)
有两种方法可以解决这个问题
当数据集很大时,DFS可能需要很长时间才能在个人计算机上运行。对于我们添加的每个原语,该原语将应用于所有有效关系中的所有有效列。
在这种情况下,更有效地添加基元是有帮助的。当每个附加基元为最终计算增加显着的时间时,检查基元是否正在创建有意义且重要的特征尤为重要。
在构建时,我们大致遵循这些步骤
您可以在predict-remaining-useful-life演示中看到此内容的痕迹。我们只在每个笔记本中显示3个基元,这些基元在几次迭代后被发现。通过该演示的第二个笔记本,我们将来自tsfresh的'last'
的3个原语'complexity'
之一进行交易,以生成302个特征。 'complexity'
基元为我们的最终模型创建了5个最重要的特征中的3个,这比我们的原始模型更准确。
此方法可以节省在完整数据集上使用不必要的基元进行计算的成本。缺点是结果特别主观。在每个级别,您都在选择您喜欢的基元和功能。这导致个人偏见和轶事证据限制了最终模型的成功。为了避免这种情况,我们需要使用更多的计算资源。
当计算时间允许时,另一种方法是从一个大的特征矩阵开始并从中开始工作。在这个范例中,我们将包括我们想要的每一个原语。从那里,我们会:
您可以在predict-next-purchase演示中查看此方法的结果。在那里,我们使用默认基元集为具有12列的数据帧生成161个特征。从这些功能中,我们选择我们最喜欢的20与完整数据集一起使用。
这需要更多时间,但允许对特征空间进行更多编程和可重复的探索。由于最终结果中的特征数量如此之多,因此更加强调特征选择方法,而在选择基元时则需要更少的关注。
最后,请注意找到要传递给Featuretools的最佳基元列表是从一个非常困难的问题中删除的一步 - “选择要素的最佳方式是什么?”通过深度特征合成,一组聚合和 transform 原语将确定性地生成一组特征。如果您要求这些功能的最佳子集,您可以根据您的要求获得不同的答案。答案将受到限制(在此处没有特别排列):