文本分类 - 如何查找对决策影响最大的功能

时间:2013-12-29 22:47:34

标签: machine-learning nlp svm sentiment-analysis text-classification

使用SVMlightLIBSVM将短语分类为正面或负面(情感分析)时,有没有办法确定哪些是影响算法决策的最有影响力的单词?例如,发现单词"good"有助于将短语确定为正面等等。

2 个答案:

答案 0 :(得分:5)

如果你使用线性内核然后是 - 只需计算权重向量:

w = SUM_i y_i alpha_i sv_i

其中:

  • sv - 支持向量
  • alpha - 使用SVMlight找到的系数
  • y - 对应的班级(+1或-1)

(在某些实现中alpha已经乘以y_i,因此它们是正/负)

一旦你有w,其维度为1 x d,其中d是你的数据维度(单词包中的单词数/ tfidf表示),只需选择高维度绝对值(无论是正面还是负面),以便找到最重要的特征(单词)。

如果您使用某些内核(如RBF),那么答案是否定的,没有直接的方法来取出最重要的功能,因为分类过程是以完全不同的方式执行的。

答案 1 :(得分:3)

正如@lejlot所提到的,使用SVM中的线性内核,其中一个特征排名策略基于模型中权重的绝对值。另一种简单有效的策略是基于F-score。它分别考虑每个特征,因此不能揭示特征之间的相互信息。您还可以通过删除该功能并观察分类性能来确定功能的重要性。

有关功能排名的更多详细信息,您可以看到此article

使用SVM中的其他内核,功能排名不是那么简单,但仍然是feasible。您可以在内核空间中构造一组正交基矢量,并通过内核浮雕计算权重。然后可以基于权重的绝对值来完成隐式特征排序。最后,数据被投射到学习的子空间中。