2

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

4

2 回答 2

5

如果您使用线性内核,那么可以 - 只需计算权重向量:

w = SUM_i y_i alpha_i sv_i

在哪里:

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

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

一旦你有w,这是1 x dd的数据维度(词袋中的词数/tfidf表示)的维度,只需选择具有高绝对值的维度(无论是正的还是负的),以找到最重要的特征(字)。

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

于 2013-12-29T23:27:55.940 回答
3

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

您可以查看这篇文章以了解有关功能排名的更多详细信息。

使用 SVM 中的其他内核,特征排名不是那么简单,但仍然可行。您可以在核空间中构造一组正交基向量,并通过核浮雕计算权重。然后可以根据权重的绝对值进行隐式特征排序。最后将数据投影到学习的子空间中。

于 2013-12-30T03:29:03.243 回答