Libsvm:SVM规范化从0或0.001开始

时间:2013-08-14 04:38:40

标签: machine-learning normalization svm libsvm document-classification

我使用libsvm进行文档分类。

我只在我的项目中使用svm.h和svm.cc。

它的struct svm_problem需要非零的svm_node数组,因此使用稀疏。

我得到一个tf-idf词的向量,让我们在范围[5,10]中说。如果我将其标准化为[0,1],则所有5将变为0.

我应该在将它发送到svm_train时删除这些零吗?

删除这些不会减少信息并导致效果不佳吗?

我应该从0.001而不是0开始标准化吗?

通常,在SVM中,[0,1]中的标准化不会减少信息吗?

1 个答案:

答案 0 :(得分:1)

SVM不是Naive Bayes,功能的值不是计数器,而是多维实值空间中的维度,0与1的信息量完全相同(这也解决了关于删除0的问题)价值观 - 不要这样做)。没有理由将[0.001, 1]的数据标准化为SVM

这里唯一的问题是列式标准化对tf-idf不是一个好主意,因为它会将您的特征退化为tf(对于特定i'维度,tf-idf只是tf中的[0,1]值乘以常量idf,归一化将乘以idf^-1)。我会考虑其中一种替代预处理方法:

  • 规范化每个维度,因此它具有均值0和方差1
  • 通过制作x=C^-1/2*x
  • 去相关,其中C是数据协方差矩阵