4

我正在尝试一些文档分类任务,到目前为止,SVM 在 TF*IDF 特征向量上运行良好。我想合并一些不基于词频的新特性(例如文档长度),看看这些新特性是否有助于分类性能。我有以下问题:

  1. 我可以简单地将新特征与旧的基于频率的特征连接起来,并在这个异构特征空间上训练一个 SVM 吗?
  2. 如果不是,多核学习是通过在每个子特征空间上训练一个核并使用线性插值组合它们来实现它的方法吗?(我们仍然没有在 scikit-learn 中实现 MKL,对吧?)
  3. 还是我应该转向能够很好地处理异构特征的替代学习器,例如 MaxEnt 和决策树?

提前感谢您的友好建议!

4

2 回答 2

3

使用 SVM 很可能使用任意特征和特征组合。要记住的一件事是你应该标准化你的特性,这只是意味着它们都应该在相同的规模上。这将防止特征空间的意外加权。

如果这不能产生可接受的结果,您可以查看卷积核,它提供了一个框架,用于将不同特征空间中的核组合成一个核。但是,如果这是必要的,我会感到惊讶。

于 2013-02-04T10:45:02.367 回答
2

1)我可以简单地将新特征与旧的基于频率的特征连接起来,并在这个异构特征空间上训练一个 SVM 吗?

既然你用scikit-learn:是的,你可以,你可以用FeatureUnion它来为你做这件事。

2)如果不是,多核学习是通过在每个子特征空间上训练一个核并使用线性插值组合它们来实现它的方法吗?(我们仍然没有在 scikit-learn 中实现 MKL,对吧?)

线性 SVM 是该任务的标准模型。内核方法对于现实世界的文本分类来说太慢了(除了可能使用LaSVM之类的训练算法,但这在 scikit-learn 中没有实现)。

3) 还是我应该转向能够很好地处理异构特征的替代学习器,例如 MaxEnt 和决策树?

SVM 与 MaxEnt/logistic 回归一样处理异构特征。在这两种情况下,您确实必须输入缩放数据,例如使用MinMaxScaler. 请注意,scikit-learnTfidfTransformer默认会生成归一化向量,因此您无需缩放其输出,只需缩放其他功能即可。

于 2013-02-05T17:45:05.433 回答