我正在尝试一些文档分类任务,SVM到目前为止在TF * IDF特征向量上运行良好 . 我想要结合一些不是基于术语频率的新功能(例如文档长度),看看这些新功能是否有助于分类性能 . 我有以下问题:
-
我可以简单地将新功能与旧的基于频率的功能连接起来,并在此 heterogeneous 功能空间上训练SVM吗?
-
如果没有,是通过在每个子特征空间上训练内核并使用线性插值组合它来实现它的方法吗? (我们仍然没有在scikit-learn中实现MKL,对吧?)
-
还是我应该转向能够很好地处理异构功能的替代学习者,例如MaxEnt和决策树?
提前感谢您的善意建议!
2 回答
由于您使用
scikit-learn
标记了这个:是的,您可以,并且可以使用FeatureUnion为您执行此操作 .线性SVM是此任务的标准模型 . 内核方法对于真实世界的文本分类来说太慢了(除了像LaSVM这样的训练算法,但是在scikit-learn中没有实现) .
SVM处理异构特征以及MaxEnt /逻辑回归 . 在这两种情况下,您都必须输入缩放数据,例如与MinMaxScaler . 请注意,scikit-learn的
TfidfTransformer
默认生成标准化向量,因此您无需缩放其输出,只需缩放其他要素 .使用SVM可以使用任意特征和特征组合 . 要记住的一件事是你应该standardise your features,这意味着他们都应该在同一规模上 . 这将防止对特征空间的意外加权 .
如果这不能产生可接受的结果,您可以查看convolution kernels,它提供了将不同特征空间中的内核组合到单个内核中的框架 . 但是,如果有必要,我会感到惊讶 .