如何处理机器学习中的相关特征

数据挖掘 机器学习 分类 特征工程 相关性 模型选择
2022-01-28 20:57:59

我正在做一个分类项目,其中一些特性是相互关联的,但我不确定如何处理它们。

我会这样简化我的项目:

  • 有不同的工作,并且有多个人在从事这些工作。
  • 这些人适合他们的工作。
  • 替换某人只能产生负面影响或没有影响。

我有一个person1可以用person2代替一份工作,目标是预测它是否有负面影响。

每个人都有自己的属性,例如:体重、年龄、身高、智商、..
工作也有属性,例如:manualJob、本地化、温度、..

当我列出我的功能时,我有类似的东西:
(Person1 = P1,Person2 = P2,并且数据已经标准化)

     P1_weight   P2_weight   P1_IQ    P2_IQ    manualJob   tempJob   neg_impact 
0       0.25       0.50      0.25     0.25        1        0.25       1 
1       0.75       0.25      0.50     0.25        0        0.50       0  
2       0.50       0.75      0.75     0.50        1        0.25       1  
... 

为了预测 neg_impact特征,我们想要捕获的P1_weight && P2 权重特征(以及 IQs 特征之间)之间应该存在高度交互

1.现在 P1_weight 和 P2_weight 之间的变化很重要,但是像 RandomForest 这样的经典模型是否可以捕捉这两个特征之间的联系?其他主题属性相同(P1_IQ && P2_IQ、P1_height && P2_height,..)

2.恐怕如果我将 P1_weight 和 P2_weight 之间的差异缩小为单个特征作为 diff (P1_weight - P2_weight),我会丢失一些信息。例如,P1_weight 可能与“manualJob”功能相关,如果我删除 P1_weight,此信息会丢失吗?

3.我在想,也许我可以用非折叠预测预处理那些链接的特征,并将这些预测作为原始特征的其余特征(manualJob、tempJob、..)的输入。这是个好主意吗 ?哪种模型更适合预处理来捕获这些链接特征的相关性?

注意:我的集合仅包含 ~1000 个元素

1个回答
  1. RandomForest 算法可以通过在 p1 上通过某个条件拆分上节点和通过 p2 上的另一个条件拆分下节点来捕获这种交互,如果这种情况发生在同一分支下(p2 在 p1 的路径上),则会捕获您期望的链接)。但是,捕获此类信息的能力取决于整个模型的结构(深度和树的数量)以及您使用的标签数量。
  2. 从耦合特征中提取第三个特征来明确表达它们之间的联系是一种常见的做法,例如,变化的比率或乘积。为了不丢失您建议的重要信息(因为可以通过减去 0.9-0.8 和 0.2-0.1 得出 0.1 的差异),您可以在模型中添加除原始特征之一之外的第三个特征。
  3. 我不确定我是否理解 out-of-fold 的含义,但无论如何请注意,使用标签两次(一次用于特征预处理,一次用于训练)可能会导致您过度拟合模型,因为标签泄漏到特征预处理步骤。可以提前探索您的特征,并与标签分开,以了解链接、子类别、缺失值、测量相关性等。

2 最后一点:

  • 在相关性和交互性的含义之间可能存在混淆。
  • 您可以考虑使用线性统计建模来满足您的需求和数据点的数量。这些模型能够捕获交互,并且通过它们的输出,您可以了解相关性的重要性并用它们的特征重要性来解释它们。-- 如果你这样做,你也可以考虑尝试GLMM,看看是否有工作效应,即不同工作之间的相互作用存在差异。