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


9

我想使用深度模型来计算每个输入功能的重要性。

但是我只发现了一篇有关使用深度学习进行深度选择的文章。它们在第一个隐藏层之前插入直接连接到每个要素的节点层。

我听说深度信任网络(DBN)也可以用于此类工作。但是我认为DBN仅提供PCA等功能的抽象(类),因此尽管它可以有效地减小尺寸,但我想知道是否有可能计算每个功能的重要性(权重)。

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

Answers:


10

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

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

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

针对评论:

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

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

  • 如果两个输入相关,则有关一个输入的信息将给出有关另一个的信息。如果仅使用一个相关的输入,那么一个模型可以很好地训练,因此您希望分析发现一个输入无用。如果您只删除了其中一个输入,则就像第一个要点一样,预测准确性将大大降低,这表明它很重要。但是,添加噪音不会导致此问题。


2
休,我很熟悉删除功能。用噪声替换功能有什么好处?
DaL

@Dan我并不是说该功能应完全由噪声取代,而应添加一些噪声。如果要素的均值非零或与其他变量相关联,则删除要素会使重要的要素显得很重要。我已经编辑了答案以进行解释。

感谢您的评论。但是实际上我有许多功能集(输入),其中许多是相关的。在这种情况下,也许计算时间将接近n!因为我需要考虑组合。因此,我想应用基于深度学习的模型,该模型可以考虑复杂的特征组合。
z991 '16

在多变量线性回归中,@ z991对于不完全相关的变量可能会出现相同的问题。通常,我们一次引入一个变量,或者一次使用所有变量,然后一次移除一个变量。无法简单地计算出最佳组合。如果线性回归尚未解决,您将找不到NN的解决方案。您可以采用相同的方法,一次删除一个变量,避免使用n!计算。

1
@巨大感谢您的评论。我同意你的看法。但是我真正想知道的是如何通过深度学习或神经网络来计算每个功能的重要性。由于他们使用多个特征提取(隐藏层),因此我很难分析特征的重要性。可以计算每个特征的整体权重,但这似乎非常复杂且耗时。链接的纸使用了单个线性层,我认为这是一个好主意。我想知道其他更好的方法来分析网络上功能的重要性。
z991

2

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

他们使用辍学来对要素进行排名。

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.