盲特征工程

数据挖掘 机器学习 分类 特征工程 特征提取
2022-02-01 20:54:31

我收到了一个用于分析的数据集,其中包含约 100 个带有匿名列名(等)的数字列,并要求进行二进制分类。我使用 SVM 得到的分类算法具有良好的准确度(> 95%),但除了标准缩放、空值替换等之外,我无法在特征工程或特征生成方面做很多事情,因为我没有直觉关于列。X1X2X3

是否有关于如何进行某种自动特征生成的标准逻辑,即各种列的一些简单数学组合以创建新的有用特征?这种事情是否有线性或基于树的模型的数学基础?或者只有当人们基于列名有直觉时,特征工程才真正有意义......

2个回答

我认为你的问题有多个答案。让我们从一个为此目的创建的名为featuretools的工具开始。你可以在优秀的文档中阅读更多关于它的信息,但只是为了给你一个直觉,考虑一个交易级别的数据集,也就是说,你有一行新交易,然后你想根据客户进行预测级别,您将创建一系列基于事务的功能,例如:

  • 交易值的平均值、最大值、最小值、总和、标准值
  • 交易数量
  • 购买的独特产品数量
  • ...

该工具将根据实体集和数据集之间的关系自动执行所有这些任务。

现在,考虑一下您的情况,您可能会使用scikit-learn 中的PolynomialFeatures来生成比其他方法更自动化的交互和多项式特征。

话虽如此,根据您的分数,在实际应用程序中,使用这些方法,或者尝试使用更多功能来提高性能,都是压倒性的并且没有用处。我们使用 kaggle 作为我们的标准训练,我认为它非常好,但业务也需要解释,如果他们可以信任它,他们会对预测性较差的算法感到满意。

在生成更多特征之前,我认为值得考虑的另一个相关问题是确定哪些列对分类任务很重要,即改进目标变量的预测。

一种常见的方法是依赖特征重要性分数,但这样做的一个缺点是分数仅在训练模型后可用。为了在训练之前猜测哪些特征可以改善目标变量的预测,我们可以计算特征和目标之间的相关性。请注意,相关计算仅适用于数字特征。为了测量分类特征和数字目标之间的关系,我们需要其他测量,称为关联您可以在这篇不错的文章中找到更多信息