关于监督学习中特征列的“修改”

数据挖掘 机器学习 特征选择 监督学习 特征工程
2022-03-05 05:32:45

我有一个包含如下列的训练集: 我想知道我是否应该将视为单独的功能(因为是从其他功能派生的)?我还发现删除作为一个功能会增加我的略微!)。x1,x2,x3,x4,x3/x4x3x4x3/x4x3/x4x3k-fold neg-loss score

潜在的问题是我怎么知道娱乐甚至 ...(你明白了)作为另一个功能列会/不会增加我的分数?1/x1x1/x2x4x34/x1

是否有任何方法/算法可以知道哪些“修改”功能会增加我的分数?

3个回答

我认为您所说的称为复合特征,它非常重要,因为有时它会捕获某些特征之间的交互,这些交互在独立考虑每个列向量(或列)时并不明显。

您的问题的答案是,它可能会或可能不会,如果不查看数据,真的无法知道,例如,如果我们有一个由以下特征组成的数据集您可以创建许多由这些变量之间的数学运算组成的数据集,就像您在问题中提到的那样。x1,x2,x3,x4

现在是关于为什么有人想要这样做的原因。考虑一个有监督的学习场景,您尝试将名义特征相对于其他一些特征进行分类。这是一个纯粹的假设示例,但假设我们正在预测基于面部特征(网格中的绝对鼻子位置、左眼位置等)不同类别的肤色。虽然您可能会获得较低的误差,但可能值得考虑复合特征,例如右眼位置 - 左眼位置,这可以为我们提供比其绝对位置更多的信息。34

要回答后一个问题,没有任何真正的算法可以做到这一点,因为它们是基于数据的特征组合,任何这样做都必须是试错机制。因为潜在的数据相似性可能不明显可见。您可以解决此问题的一种方法是在您的基本数据处理阶段,考虑数据之间实际可能的关系,或者至少,您认为它们是什么。

我基本上同意关于特征工程的说法,并且只是为了为您提供更多材料,这篇文章对特征工程的不同阶段进行了很好的分析,其中包含许多链接和对论文和具体挑战的引用。我认为值得一试。

此外,在某种程度上,您可以使用内核方法自动执行寻找“好的”复合特征的任务。您可以使用许多库(例如在sklearn中)中实现的一些标准内核方法作为特征提取器,并将这些更高级别的特征作为输入提供给随机森林模型,该模型在训练时固有地使用特征重要性。然后只保留这些高维特征中信息量最大的,由训​​练模型评分,作为原始数据旁边的复合特征。

如果你是从信息论的角度考虑,给出x3补充没有信息。x4x3/x4

但是,在我们匆忙下结论之前,必须记住还有更多方面。

第一个是表示概念的能力。让我们考虑一下您的特征是x3并且x4概念是的情况x3/x4唯一的问题是我强迫你使用决策树作为模型。你怎么能代表它?请注意,即使我允许您选择任何树,表示也会很糟糕。

第二个问题是没有预先给出概念,因此算法应该搜索它。大多数监督学习算法实际上是在寻找概念和特征之间的相关性。像这样的关系1/x通常会导致它们出现问题,因为行为在 x 中不是线性的。

因此,如果您对不添加信息但便于表示或搜索的功能有想法,添加它们可能会有所帮助。

你是对的,问我应该在哪里停下来?可能有不同的特征组合会导致更好的模型。不幸的是,我们对此没有很好的解决方案。

考虑构建良好特征的问题,比如说减少模型大小的特征。我们可以将自己限制在可以用树表示的特征上。然而,为数据集构建一棵小树是一个NP 完全问题,这意味着我们没有有效的算法。

不仅如此,您还可以声称给定一个特征构建问题,您可以减少对它的分类(例如,构建一个代表概念的特征)。因此,特征构建与分类一样难。