我使用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]中的标准化不会减少信息吗?
答案 0 :(得分:1)
SVM
不是Naive Bayes
,功能的值不是计数器,而是多维实值空间中的维度,0与1的信息量完全相同(这也解决了关于删除0的问题)价值观 - 不要这样做)。没有理由将[0.001, 1]
的数据标准化为SVM
。
这里唯一的问题是列式标准化对tf-idf
不是一个好主意,因为它会将您的特征退化为tf
(对于特定i
'维度,tf-idf
只是tf
中的[0,1]
值乘以常量idf
,归一化将乘以idf^-1
)。我会考虑其中一种替代预处理方法:
x=C^-1/2*x
C
是数据协方差矩阵