找到最佳功能集来分隔2个已知数据组

时间:2015-08-21 08:41:06

标签: machine-learning svm

我需要一些观点来了解我所做的事情是好还是错,或者是否有更好的方法。

我有10 000个元素。对于他们每个我都有500个功能。

我希望测量两组这些元素之间的可分性。 (我已经知道我不试图找到它们的那两组) 现在我正在使用svm。我训练了2000个这些元素的svm,然后我看看当我测试8000个其他元素时得分有多好。

现在我想现在哪些功能可以最大化这种分离。

我的第一种方法是用svm测试每个特征组合,并遵循svm给出的分数。如果得分良好,则这些特征与分离这两组数据相关。 但这需要太多时间。 500!可能性。

第二种方法是删除一个功能并查看分数受影响的程度。如果分数变化很大,那么这个特征是相关的。这更快,但我不确定它是否正确。当有500个特征删除时,只有一个特征不会改变很多最终分数。

这是一种正确的方法吗?

4 个答案:

答案 0 :(得分:2)

您是否尝试过任何其他方法?也许你可以尝试决策树或随机森林,它会根据熵增益给出你最好的功能。我可以假设所有功能都是相互独立的。如果没有,请删除它们。

另外,对于支持向量,您可以尝试查看本文:

http://axon.cs.byu.edu/Dan/778/papers/Feature%20Selection/guyon2.pdf

但它更多地基于线性SVM。

答案 1 :(得分:2)

您可以对功能进行统计分析,以获得哪些术语最能将数据分开的指示。我喜欢信息增益,但还有其他信息。

我发现这篇论文(Fabrizio Sebastiani,机器学习在自动文本分类,ACM计算调查,第34卷,第1期,第1-47页,2002年)是一个很好的理论处理文本分类,包括功能从简单(术语频率)到复杂(信息理论)的各种方法减少。

  

这些函数试图捕捉到ci最佳术语的直觉   在一组正面和负面的例子中分布最为不同的   CI。但是,对这一原则的解释因不同的功能而异。例如,在实验科学中,使用χ2来测量观察结果与根据初始假设所预期的结果的差异(即,是独立的)(较低的值表示较低的依赖性)。在DR中,我们测量独立的tk和ci是多少。因此,具有χ2(tk,ci)的最低值的项tk最独立于ci;因为我们对不是的术语感兴趣,所以我们选择χ2(tk,ci)最高的术语。

这些技巧可帮助您选择在将培训文档分成给定类时最有用的术语;对您的问题具有最高预测价值的条款。信息增益最高的功能可能最好地分离您的数据。

我成功地使用信息增益来减少功能,并发现本文(基于熵的文本分类选项Largeron,Christine和Moulin,Christophe和Géry,Mathias - SAC - Pages 924-928 2011)非常很好的实用指南。

这里作者提出了一个基于熵的特征选择的简单公式,它对于在代码中的实现很有用:

  

给定术语tj和类别ck,ECCD(tj,ck)可以是   从列联表中计算出来。设A为数字   包含tj的类别中的文件; B,数量   包含tj的其他类别的文​​件; C,   ck的文件数量不包含tj和D,   这样做的其他类别的文​​件数量   不包含tj(N = A + B + C + D):

enter image description here

使用此列联表,可以通过以下方式估算信息增益:

enter image description here

这种方法易于实现,并提供非常好的信息 - 理论功能减少。

您也不需要使用单一技术;你可以结合它们。 Term-Frequency很简单,但也很有效。我将信息增益方法与术语频率相结合,成功地进行了特征选择。您应该试验一下您的数据,看看哪种技术或技术最有效。

答案 2 :(得分:1)

如果您希望单个功能区分数据,请使用决策树,然后查看根节点。

SVM by design查看所有功能的组合。

答案 3 :(得分:1)

您是否考虑过Linear Discriminant Analysis(LDA)?

LDA旨在发现最大化可分离性的线性特征组合。该算法的工作原理是将数据投影到类中方差最小且类之间的方差最大的空间中。

您可以使用它来减少分类所需的维数,并将其用作线性分类器。

然而,使用这种技术,您将失去原有的功能及其含义,您可能希望避免这种情况。

如果您需要更多详细信息,我发现this article是一个很好的介绍。