有没有用于特征工程的工具?

数据挖掘 特征选择 特征提取 特征构造
2021-09-27 21:50:16

具体来说,我正在寻找的是具有某些功能的工具,这些功能特定于特征工程。我希望能够轻松地平滑、可视化、填充空白等。类似于 MS Excel 的东西,但它以 R 作为基础语言而不是 VB。

4个回答

非常有趣的问题(+1)。虽然我不知道目前有任何软件工具可以为特征工程提供全面的功能,但在这方面肯定有很多选择。目前,据我所知,特征工程在很大程度上仍然是一个费力手动的过程(即,请参阅这篇博文)。谈到特征工程主题领域, Jason Brownlee 撰写的这篇出色的文章对该主题进行了相当全面的概述。

O'Reilly Media Inc. 的首席数据科学家兼数据内容策略总监 Ben Lorica 写了一篇非常好的文章,描述了最先进的方法、方法、工具和初创公司(截至 2014 年 6 月)自动化(或者,正如他所说,精简)特征工程的领域

我简要浏览了Ben 提到的一些初创公司, Skytree的产品确实看起来令人印象深刻,尤其是在这个问题的主题方面。话虽如此,他们的一些说法对我来说听起来真的很可疑(即,“与开源选项相比,Skytree 将机器学习方法的速度提高了 150 倍”)。继续谈论商业数据科学和机器学习产品,我不得不提到微软的解决方案,特别是他们的Azure 机器学习工作室这个基于 Web 的产品非常强大和优雅,并提供了一些特征工程功能 (FEF)。有关一些简单 FEF 的示例,请参阅这个不错的视频

回到这个问题,我认为自动化特征工程最简单的方法是使用相应的IDE由于您(我也是)对作为数据科学后端的 R 语言感兴趣,因此我建议除了 RStudio 之外,还检查另一个类似的开源 IDE,称为RKWardRKWard 与 RStudio 的优势之一是它支持为 IDE编写插件,从而使数据科学家能够自动化特征工程并简化他们基于 R 的数据分析。

最后,在特征工程解决方案的另一面,我们可以找到一些研究项目其中最值得注意的两个似乎是斯坦福大学的哥伦布项目,在相应的研究论文中进行了详细描述,以及洗脑,在本文中进行了描述。

Featuretools是最近发布的用于自动化特征工程的 python 库。它基于一种名为Deep Feature Synthesis的算法,最初于 2015 年在 MIT 开发,并在 Kaggle 上的公共数据科学竞赛中进行了测试。

以下是它如何融入常见的数据科学过程。

在此处输入图像描述

该库的目的不仅是帮助专家更快地构建更好的机器学习模型,而且使数据科学过程对试图学习的人来说不那么令人生畏。如果您有事件驱动或关系数据,我强烈建议您检查一下!

免责声明:我是该项目的开发人员之一。

特征工程是机器学习的核心,相当费时费力。在自动化特征工程方面已经进行了各种尝试,希望能将人类从循环中解脱出来。针对分类问题执行此操作的一种具体实现是auto-sklearn它在后台使用称为SMAC的优化程序来选择适当的一组变换和算法(和算法参数)。

请注意,Trifacta 提供了一个非常易于使用的数据转换工具。它具有高度直观的 GUI,允许设置转换/特征工程图。还有一个免费试用版可用于解决合理规模的问题。

Scikit-learn最近发布了新的转换器,可以处理特征工程的许多方面。例如:

  1. SimpleImputer您可以使用( http://scikit-learn.org/stable/modules/generated/sklearn.impute.SimpleImputer.html )执行多种缺失数据插补技术,包括数值和分类变量中的平均值、中值和任意值插补.

  2. 您可以使用多个估计器进行多元插补,例如贝叶斯、随机森林和其他(相当于 R 的 MICE、Amelia 和 MissForest)与IterativeImputerhttps://scikit-learn.org/stable/modules/generated/sklearn.impute.IterativeImputer .html#sklearn.impute.IterativeImputer )

  3. 您可以使用OneHotEncoder()来自 Scikit-learn的分类热编码

  4. 您可以使用LabelEncoder.

  5. 您可以使用PowerTransformer( http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.PowerTransformer.html )进行 Yeo-Johnson 变量转换

  6. 您可以使用KBinsDiscretiserhttps://scikit-learn.org/stable/auto_examples/preprocessing/plot_discretization.html)进行离散化

Scikit-learn 中可能还有其他特征工程转换器,开发人员会定期更新库。

作为众所周知的 Scikit-learn 库的替代方案,最近发布了一个名为feature-engine的新开源库。使用功能引擎,您可以:

  1. 在数值和分类变量中做均值、中值、任意、尾端和随机插补
  2. 做各种类型的分类编码,包括热、整数、序数、均值编码和证据权重。
  3. 进行各种变量转换,包括 log、reciprocal、exp 和 box cox
  4. 各种类型的离散化,包括等频率、等距离和基于树的
  5. 异常值处理。

github repo 和文档中的更多详细信息(https://feature-engine.readthedocs.io/en/latest/

免责声明:我创建了功能引擎并将其开源。

另一个开源 python 包允许不同类型的分类变量编码:https ://contrib.scikit-learn.org/categorical-encoding/

最后,Feature tools是一个很好的交易数据开源库。