如何标准化 SVM 的 tf-idf 向量?

Posted

技术标签:

【中文标题】如何标准化 SVM 的 tf-idf 向量?【英文标题】:How to normalize tf-idf vectors for SVMs? 【发布时间】:2013-08-16 01:42:35 【问题描述】:

我将Support Vector Machines 用于document classification。我为每个文档设置的特征是一个tf-idf 向量。我有 M 个文档,每个 tf-idf 向量的大小为 N。 给出 M * N 矩阵。

M 的大小只有 10 个文档,tf-idf 向量是 1000 个词向量。所以我的特征远大于文档数量。每个单词也出现在 2 个或 3 个文档中。当我对每个特征( word )进行归一化时,即 [0,1] 中的列归一化与

val_feature_j_row_i = ( val_feature_j_row_i - min_feature_j ) / ( max_feature_j - min_feature_j)

当然,它要么给我 0,要么给我 1。

这给了我不好的结果。我正在使用libsvm,rbf function C = 0.0312,gamma = 0.007815

有什么建议吗?

我应该包含更多文件吗?或其他函数,如 sigmoid 或更好的归一化方法?

【问题讨论】:

【参考方案1】:

要考虑和纠正的事情清单很长,所以首先我会推荐一些机器学习阅读,然后再尝试面对问题本身。有几十本很棒的书(例如,Haykin 的“神经网络和学习机器”)以及在线课程,它们将帮助您学习这些基础知识,例如此处列出的那些:http://www.class-central.com/search?q=machine+learning。

回到问题本身:

10 行文件大小不一,以获得任何重要结果和/或对问题的见解, 没有通用的数据预处理方法,您必须通过大量测试和数据分析对其进行分析, SVM 是参数模型,您不能使用单个 Cgamma 值并期望任何合理的结果。您必须检查其中的数十个才能获得“在哪里搜索”的线索。最简单的方法就是所谓的grid search, 1000 个特征是很多维度,这表明使用内核,这意味着无限维特征空间是相当...冗余的 - 首先分析更简单的特征会是一个更好的主意,它有更小的机会过拟合(线性或低次多项式) 如果“每个单词出现在 2 个或 3 个文档中”,那么 tf*idf 最后是一个不错的选择吗?这可能是值得怀疑的,除非您的实际意思是 20-30% 的文档

最后为什么简单的特征会被压缩

当然,它要么给我 0,要么给我 1。

它应该产生 [0,1] 区间的值,而不仅仅是它的限制。因此,如果是这种情况,您的实现中可能存在一些错误。

【讨论】:

因为特征只存在于 2 个文档中(大部分),要么是最小值或最大值,要么大部分为 0 或 1。 好吧,“大部分”和“总是”是有区别的。在您所说的2 or 3 的问题中,由于文档中给定术语的数量只是一个规范化因素idf,它应该导致许多值介于 0 和 1 之间,除非一个术语也最多出现一次特定文档,那么为该数据选择 tf*idf 似乎是错误的。

以上是关于如何标准化 SVM 的 tf-idf 向量?的主要内容,如果未能解决你的问题,请参考以下文章

SVM - 我可以标准化 W 向量吗?

支持向量机SVM—分类

SVM如何计算文档分类中测试文档的tf-df?

将多个功能与 svm 相​​结合

支持向量机

标准化 SVM 的特征值