0

我正在使用支持向量机进行文档分类。我为每个文档设置的特征是一个tf-idf向量。我有 M 个文档,每个 tf-idf 向量的大小为 N。给出 M * N 矩阵。

M 的大小只有 10 个文档,tf-idf 向量是 1000 个词向量。所以我的特征远大于文档数量。每个单词也出现在 2 个或 3 个文档中。当我对每个特征(单词)进行归一化时,即 [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 函数C = 0.0312, gamma = 0.007815

有什么建议吗?

我应该包括更多文件吗?或其他功能,如 sigmoid 或更好的归一化方法?

4

1 回答 1

2

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

回到问题本身:

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

最后为什么简单的功能会被压缩

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

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

于 2013-08-14T09:57:07.830 回答