使用深度学习进行特征选择?

机器算法验证 特征选择 深度学习 深度信念网络 受限玻尔兹曼机
2022-03-25 05:53:24

我想使用深度模型计算每个输入特征的重要性。

但是我只找到了一篇关于使用深度学习进行特征选择的论文——深度特征选择他们在第一个隐藏层之前插入一层直接连接到每个特征的节点。

我听说深度信念网络(DBN)也可以用于这种工作。但是我认为,DBN 只提供了像 PCA 这样的特征的抽象(集群),所以虽然它可以有效地降低维度,但我想知道是否可以计算每个特征的重要性(权重)。

是否可以使用 DBN 计算特征重要性?还有其他已知的使用深度学习进行特征选择的方法吗?

3个回答

对于几乎任何预测模型,您可以采用的一种方法是首先训练您的模型并找到其准确性,然后为一个输入添加一些噪声并再次检查准确性。对每个输入重复此操作,并观察噪声如何使预测恶化。如果输入很重要,那么由噪声引起的额外不确定性将是有害的。

请记住将噪声的方差设置为与相关输入的方差成比例。

当然,噪声是随机的,您不希望一个输入由于随机效应而显得不重要。如果您的训练示例很少,请考虑重复计算每个训练示例的准确度变化,每次都添加一个新的噪声。

回应评论:

这种分析也可以通过完全删除一个变量来完成,但与添加噪声相比,这有一些缺点。

  • 假设您的一个输入是恒定的,它就像一个偏差项,因此它在预测中发挥了一些作用,但它不添加任何信息。如果你完全删除了这个输入,那么预测就会变得不那么准确,因为感知器得到了错误的偏差。这使得输入看起来对预测很重要,即使它没有添加任何信息。添加噪音不会导致此问题。如果您已将所有输入标准化为均值为零,那么第一点就不是问题。

  • 如果两个输入相关,则有关一个输入的信息会提供有关另一个输入的信息。如果您只使用一个相关输入,则可以很好地训练模型,因此您希望分析发现一个输入没有帮助。如果您只是删除了一个输入,那么就像第一点一样,预测精度会降低很多,这表明它很重要。但是,添加噪声不会导致此问题。

也许检查这篇论文:https ://arxiv.org/pdf/1712.08645.pdf

他们使用 dropout 对特征进行排名。

...在这项工作中,我们在输入特征层上使用了 Dropout 概念,并优化了相应的特征丢弃率。由于每个特征都是随机删除的,因此我们的方法产生了与特征套袋 (Ho, 1995) 类似的效果,并且比 LASSO 等其他非套袋方法更好地对相关特征进行排名。我们将我们的方法与随机森林 (RF)、LASSO、ElasticNet、边际排名和几种技术进行比较,以得出 DNN 中的重要性,例如深度特征选择和各种启发式...

看看这篇文章: https ://medium.com/@a.mirzaei69/how-to-use-deep-learning-for-feature-selection-python-keras-24a68bef1e33

和这篇论文: https ://arxiv.org/pdf/1903.07045.pdf

他们提出了一个很好的方案来应用深度模型进行特征选择。