如何确定响应变量最高的因子水平组合

机器算法验证 分类 方差分析 大车
2022-03-22 09:14:33

我进行了一个包含 5 个分类因素的实验。每个因子有 2 到 8 个级别。我有一个响应变量,它在 0 到 100 的范围内是连续的。总而言之,我已经用 800 种组合进行了全因子实验。每个组合有 10 个样本。总的来说,在 R-speak 中,我有一个 6 列和 8607 行的数据框。

我的目标:确定导致最佳性能的每个因素的水平。例如,我想说“当factor1是“A”级,factor2是“C”级,...,并且factor5是“E”级时,性能通常是最好的。结论:总是使用“A”级“对于因子 1 ....”。

我如何实现这一目标?

我首先想到了 PCA,但这并不完全正确,因为 PCA 找到的组件是因素的组合,但我需要能够说出每个因素的最佳因素水平。我想保持因素不变。

我还想到了方差分析,这可能是我想要的,但我不确定如何使用它的输出。例如,在 R 中,我得到:

> summary(aov(...))
              Df  Sum Sq Mean Sq  F value    Pr(>F)    
preprocess     7  21.430   3.061  180.771 < 2.2e-16 ***
bugData        2   5.276   2.638  155.782 < 2.2e-16 ***
fileData       5   6.462   1.292   76.315 < 2.2e-16 ***
param1         2 255.766 127.883 7551.306 < 2.2e-16 ***
param2         1  15.579  15.579  919.887 < 2.2e-16 ***
Residuals   8589 145.457   0.017                       
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

我不知道如何解释这些结果。是否 param1 的影响最大,因为它的“Sum Sq”最大?我怎么知道什么级别的 param1 最好?

所以,这就是我的想法:对于每个因素,将每个级别的“获胜百分比”与其他级别进行比较。也就是说,在所有其他因素相同的情况下,X 级别“击败”Y 级别的次数。我可以多次比较 X 级和 Y 级,因为还有很多其他因素和这些因素的水平。所以,我改变了其他因素的水平,比较当前因素中的 X 水平和 Y 水平,并跟踪谁赢了。这样做,我最终应该得到类似“对于 factor1,levelX 在 85% 的情况下击败 levelY,因此是更好的选择”。

这种方法有意义吗?它有名字吗?还是有另一种完全可以实现我想要的方法?

非常感谢任何帮助或指示。如果我的答案可以在 R 中实现,我会更喜欢,但我可以适应。我有一台非常强大的机器可以使用(16 个处理器,196G RAM),所以我不太担心解决我的问题的算法的效率。

1个回答

这个问题适用于决策树分析技术。对于连续的结果,软件将简单地将切点放在测量值的中间,因此切点将落在您测量的水平之间,而不是实际水平。分类预测变量适用于这种方法,因为您将看到哪些级别会导致哪些结果。您会在每个终端的末尾看到一个框,其中包含性能平均值等信息。与较高绩效水平相关的分支将基于您的 5 个分类因素,因此,一切顺利,这是查看因素水平与绩效指标之间是否存在任何明确关联的一种相对简单快捷的方法。

决策树的主要缺点是它们往往是逐步的,具有“F-to-enter”计算,因此它们可能会遭受与逐步回归相同的缺点,因为不能保证最佳解决方案。

在此处和此处查看R 示例我只使用了SAS Enterprise MinerAnswerTree,但是一旦您大致了解了树的工作原理,R 代码看起来很容易理解。是对决策树的一个很好的介绍,带有一些漂亮的图像。:)

如果您决定走这条路,您需要熟悉一些问题,基本上这些都是围绕着不使用相同数据来开发模型和测试模型的熟悉问题。您可能会发现有用的一些参考资料在此处此处

更新:决策树用于选择变量的规则我认为是基于解释的方差量:决策树软件将遍历每个可用的变量拆分并选择解释最大方差的变量,例如参见此处因此,用户在拆分时没有输入,除非更改 F-to-enter(例如)标准。

生成的树将有许多分支。您获得的拆分数量将取决于您使用的方法,因为某些方法将拆分数量限制为两个。具有最大均值的终端节点的路径将显示与该大均值相关的因子水平。变量及其值将针对该分支中的每个节点显示。您可以得出结论,这是最佳路径,但请记住对模型进行一些测试(例如交叉验证)。您也可能最终得到两个具有相似方法的节点。需要对树分类进行一些数据可视化以查看它是否有效,例如,具有最大均值的分类也可能具有过大的标准偏差,并且可能无法像仅从均值中显示的那样进行分类。

终端节点也可能没有任何平均顺序,以我的经验,从左到右没有一个很好的节点升序或降序。

玩得开心。:)

更新 2:当跨节点发生这种情况时,树将停止形成分支(节点):

  1. 未包含在拆分中的变量均不符合 F-to-enter 规则(例如,包含它们不符合解释方差的最低要求)和
  2. 对于已输入的变量,没有更多符合 F-to-enter 规则的可用拆分,并且
  3. 对于已输入的变量,所有拆分都发生在分支的较高位置,或者
  4. 如果规定了最大分支数,则在每个节点上都已达到最大值,否则仍可以应用 F-to-enter 规则。

假设您的最大分支数尚未达到,您可以通过这种方式解释您的结果,并注意这些结果是探索性的,而不是确定性的,除非您使用合适的验证方法对其进行了验证

  • 已经输入了解释模型中合理数量的方差的所有变量拆分,因此
  • 任何未输入的变量要么不能解释足够的方差,要么可能与模型中的其他变量相关(无法用逐步模型判断这两种情况中哪一种更正确),以及
  • 同样,当没有发生变量拆分时(例如,当您有两个级别的变量坐在一起时,例如文件数据级别“d”和“e”),拆分将无法解释足够的方差,因此结果可能是不变的的水平发生。因为这是一种逐步的方法,所以结果可能不会产生最佳结果。我建议根据决策树的结果对变量进行分组,然后根据这些组查看性能箱线图。这将清楚地显示决策树是否给了你一个好的结果。

我很高兴该方法似乎奏效了。我希望这些额外的建议能为您的分析提供一条前进的道路。再次,祝你好运!