找到最好的特征集来分离 2 组已知数据
Find the best set of features to separate 2 known group of data
我需要一些观点来了解我所做的是好还是错,或者是否有更好的方法。
我有 10 000 个元素。对于他们每个人,我都有 500 个特征。
我想测量两组元素之间的可分离性。 (我已经知道那 2 组我不试图找到它们)
现在我正在使用支持向量机。我在这些元素的 2000 个上训练 svm,然后我在测试其他 8000 个元素时看看分数有多好。
现在我想知道哪些特征最大化了这种分离。
我的第一个方法是用 svm 测试每个特征组合,并遵循 svm 给出的分数。如果分数很好,这些特征与分离这两组数据相关。
但这需要太多时间。 500!可能性。
第二种方法是删除一项功能并查看对分数的影响程度。如果分数变化很大,则该功能是相关的。这样更快,但我不确定它是否正确。当有 500 个特征时,只删除一个特征不会改变最终得分。
这样做正确吗?
如果您希望单个特征来区分您的数据,请使用决策树,并查看根节点。
SVM 的设计着眼于所有 特征的组合。
你试过其他方法吗?也许你可以尝试决策树或随机森林,它会根据熵增益给出你最好的特征。我可以假设所有功能都是相互独立的吗?如果没有,请也删除它们。
还有Support vectors,可以试试看这篇论文:
http://axon.cs.byu.edu/Dan/778/papers/Feature%20Selection/guyon2.pdf
但是更多的是基于线性SVM。
您可以对特征进行统计分析,以了解哪些术语最能区分数据。我喜欢信息增益,但还有其他的。
我发现这篇论文(Fabrizio Sebastiani,自动文本分类中的机器学习,ACM Computing Surveys,第 34 卷,第 1 期,第 1-47 页,2002 年)是对文本分类的很好的理论处理,包括通过从简单的(词频)到复杂的(信息理论)的各种方法进行特征缩减。
These functions try to capture the intuition that the best terms for ci are the
ones distributed most differently in the sets of positive and negative examples of
ci. However, interpretations of this principle vary across different functions. For instance, in the experimental sciences χ2 is used to measure how the results of an observation differ (i.e., are independent) from the results expected according to an initial hypothesis (lower values indicate lower dependence). In DR we measure how independent tk and ci are. The terms tk with the lowest value for χ2(tk, ci) are thus the most independent from ci; since we are interested in the terms which are not, we select the terms for which χ2(tk, ci) is highest.
这些技术可帮助您选择最有用的术语,将训练文档分成给定的 类;对您的问题具有最高预测值的术语。具有最高信息增益的特征可能最能分离您的数据。
我已成功使用信息增益进行特征缩减,并发现这篇论文(用于文本分类的基于熵的特征选择 Largeron、Christine 和 Moulin、Christophe 和 Géry、Mathias - SAC - 第 924-928 页 2011)是很好的实用指南。
在这里,作者提出了一个基于熵的特征选择的简单公式,这对在代码中实现很有用:
Given a term tj and a category ck, ECCD(tj , ck) can be
computed from a contingency table. Let A be the number
of documents in the category containing tj ; B, the number
of documents in the other categories containing tj ; C, the
number of documents of ck which do not contain tj and D,
the number of documents in the other categories which do
not contain tj (with N = A + B + C + D):
使用这种偶然性 table,信息增益可以通过以下方式估算:
这种方法易于实施,并提供非常好的信息论特征缩减。
你也不需要使用单一的技术;你可以把它们结合起来。 Term-Frequency 很简单,但也很有效。我将信息增益方法与词频相结合,成功地进行了特征选择。您应该对您的数据进行试验,以查看哪种或哪些技术最有效。
你有没有想过Linear Discriminant Analysis(LDA)?
LDA旨在发现最大化可分离性的特征的线性组合。该算法的工作原理是将数据投影到 space 中,其中 类 内的方差最小,类 之间的方差最大。
您可以使用它减少分类所需的维数,也可以将它用作线性分类器。
然而,使用这种技术你会失去原始特征及其意义,你可能想避免这种情况。
如果您想了解更多详细信息,我发现 this article 是一个很好的介绍。
我需要一些观点来了解我所做的是好还是错,或者是否有更好的方法。
我有 10 000 个元素。对于他们每个人,我都有 500 个特征。
我想测量两组元素之间的可分离性。 (我已经知道那 2 组我不试图找到它们) 现在我正在使用支持向量机。我在这些元素的 2000 个上训练 svm,然后我在测试其他 8000 个元素时看看分数有多好。
现在我想知道哪些特征最大化了这种分离。
我的第一个方法是用 svm 测试每个特征组合,并遵循 svm 给出的分数。如果分数很好,这些特征与分离这两组数据相关。 但这需要太多时间。 500!可能性。
第二种方法是删除一项功能并查看对分数的影响程度。如果分数变化很大,则该功能是相关的。这样更快,但我不确定它是否正确。当有 500 个特征时,只删除一个特征不会改变最终得分。
这样做正确吗?
如果您希望单个特征来区分您的数据,请使用决策树,并查看根节点。
SVM 的设计着眼于所有 特征的组合。
你试过其他方法吗?也许你可以尝试决策树或随机森林,它会根据熵增益给出你最好的特征。我可以假设所有功能都是相互独立的吗?如果没有,请也删除它们。
还有Support vectors,可以试试看这篇论文:
http://axon.cs.byu.edu/Dan/778/papers/Feature%20Selection/guyon2.pdf
但是更多的是基于线性SVM。
您可以对特征进行统计分析,以了解哪些术语最能区分数据。我喜欢信息增益,但还有其他的。
我发现这篇论文(Fabrizio Sebastiani,自动文本分类中的机器学习,ACM Computing Surveys,第 34 卷,第 1 期,第 1-47 页,2002 年)是对文本分类的很好的理论处理,包括通过从简单的(词频)到复杂的(信息理论)的各种方法进行特征缩减。
These functions try to capture the intuition that the best terms for ci are the ones distributed most differently in the sets of positive and negative examples of ci. However, interpretations of this principle vary across different functions. For instance, in the experimental sciences χ2 is used to measure how the results of an observation differ (i.e., are independent) from the results expected according to an initial hypothesis (lower values indicate lower dependence). In DR we measure how independent tk and ci are. The terms tk with the lowest value for χ2(tk, ci) are thus the most independent from ci; since we are interested in the terms which are not, we select the terms for which χ2(tk, ci) is highest.
这些技术可帮助您选择最有用的术语,将训练文档分成给定的 类;对您的问题具有最高预测值的术语。具有最高信息增益的特征可能最能分离您的数据。
我已成功使用信息增益进行特征缩减,并发现这篇论文(用于文本分类的基于熵的特征选择 Largeron、Christine 和 Moulin、Christophe 和 Géry、Mathias - SAC - 第 924-928 页 2011)是很好的实用指南。
在这里,作者提出了一个基于熵的特征选择的简单公式,这对在代码中实现很有用:
Given a term tj and a category ck, ECCD(tj , ck) can be computed from a contingency table. Let A be the number of documents in the category containing tj ; B, the number of documents in the other categories containing tj ; C, the number of documents of ck which do not contain tj and D, the number of documents in the other categories which do not contain tj (with N = A + B + C + D):
使用这种偶然性 table,信息增益可以通过以下方式估算:
这种方法易于实施,并提供非常好的信息论特征缩减。
你也不需要使用单一的技术;你可以把它们结合起来。 Term-Frequency 很简单,但也很有效。我将信息增益方法与词频相结合,成功地进行了特征选择。您应该对您的数据进行试验,以查看哪种或哪些技术最有效。
你有没有想过Linear Discriminant Analysis(LDA)?
LDA旨在发现最大化可分离性的特征的线性组合。该算法的工作原理是将数据投影到 space 中,其中 类 内的方差最小,类 之间的方差最大。
您可以使用它减少分类所需的维数,也可以将它用作线性分类器。
然而,使用这种技术你会失去原始特征及其意义,你可能想避免这种情况。
如果您想了解更多详细信息,我发现 this article 是一个很好的介绍。