如何总结关于变量重要性的知识?

机器算法验证 模型选择 模型
2022-04-09 13:21:59

假设我们有 30 个特征(输入),每个特征都可能影响结果(输出)。我们尝试使用从特征到目标的可用(“观察到的”)映射来开发仅使用某些特征的预测模型。每个特征都可以包含在模型的输入中,也可以不包含。这意味着我们总共可以2^30组合使用哪些参数。我想注意模型是固定的,我不会更改模型(广义上),我只是决定使用哪些变量。

现在我们已经考虑了几千种组合,并且对于每种组合,我们都有一个衡量它有多好的度量(当然,我们使用测试集)。例如,我们知道如果我们取变量 1、7、13 和 27,我们会得到一个等于 123.456 的误差(模型的准确性)。如果我们使用变量 3、4、10、11、13、27 和 29。我们得到一个等于 23.456 的错误。

我的问题是:如何将模型性能的知识总结为所用参数的函数?

换句话说,我需要一个描述模型性能的“元模型”。我需要这个,因为我想利用获得的知识更智能地搜索潜在模型的巨大空间。

更具体地说,我有一个从 N 个二进制向量到实数(浮点)值的映射。每个二进制向量表示是否使用了相应的变量,实际输出描述了相应模型的性能。现在我想用这个“元数据”来训练一个“元模型”。但在我开始“元训练”之前,我想决定哪种模型适合训练。该模型应捕获诸如“存储在变量中的信息”之类的概念。例如,我可以想象变量 7 对变量 3 和 5 的组合没有附加信息。或者,我们可以拥有“独立”覆盖目标空间的“正交”变量。

2个回答

如果您对线性模型感兴趣,以下是评论/其他答案中未提及的方向:

xR30是特征向量,你想学习一个线性映射y=wx那映射x到一个值(可以使用逻辑回归将其转换为概率,您可以从中做任何事情)。

我假设获得许多特征/使用所有特征进行预测是有成本的(否则,为什么不使用所有特征)。

你可以做的是规范学习过程L1规范。众所周知L1正则化导致模型更稀疏(即权重向量w里面有很多零),这就是你想要的。

具体来说,您将最小化以下内容:

RegularizedLoss(w,λ)=Loss(w)+λw1,
在哪里Loss(w)是逻辑损失。有一些有效的方法可以做到这一点(例如,vowpal wabbit可以处理L1正则化)。

具体值λ控制准确性和稀疏性之间的权衡,即您愿意为使用较少特征的模型而损失多少准确性。

HTH。

每当我遇到无法定义但可以计算的优化函数问题时,我都会使用一些启发式方法。

由于您搜索的空间很大(但不是很大,30 个特征并不多),我会使用一些遗传算法。这可能很简单,但您的问题的表示可能只是二进制向量,因此标准掩码交叉和位翻转突变可能会产生相当好的结果。

具体到你的问题:你可以用GA本身的形式总结这些知识。您不需要人类可读的知识表示,因此实际知识将被编码在样本表示和评估函数中。

免责声明:这是我的直觉,接近猜测(但在启发式优化方面有一些经验)。我无法向你展示任何支持这个想法的论文,但我很确定你会在这方面找到一些东西。