Machine learning 如何为支持向量机规范化tf idf向量?

Machine learning 如何为支持向量机规范化tf idf向量?,machine-learning,normalization,svm,libsvm,document-classification,Machine Learning,Normalization,Svm,Libsvm,Document Classification,我正在用它。我的每个文档的功能集都是一个向量。我有M个文件,每个tf idf向量大小为N。 给出M*N矩阵 M的大小只有10个文档,tf-idf-vector是1000字的向量。因此,我的功能远大于文档数量。每个单词也出现在2个或3个文档中。当我规范化每个特征(单词)时,即[0,1]中的列规范化 val_feature_j_row_i = ( val_feature_j_row_i - min_feature_j ) / ( max_feature_j - min_feature_j) 它要么

我正在用它。我的每个文档的功能集都是一个向量。我有M个文件,每个tf idf向量大小为N。 给出M*N矩阵

M的大小只有10个文档,tf-idf-vector是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

这给了我糟糕的结果。我正在使用,C=0.0312,gamma=0.007815

有什么建议吗


我应该包括更多的文件吗?或其他函数如乙状或更好的归一化方法?

要考虑和改正的事情的清单是相当长的,所以首先我会推荐一些机器学习阅读之前,试图面对问题本身。有几十本好书(如海金的《神经网络和学习机器》)以及在线课程,它们将帮助你掌握这些基础知识,如以下所列:

回到问题本身:

  • 10个文件的行数从大到小,以获得任何重要结果和/或对问题的见解
  • 没有通用的数据预处理方法,您必须通过大量测试和数据分析对其进行分析
  • 支持向量机是参数化模型,您不能使用单个
    C
    gamma
    值来期望任何合理的结果。你必须检查几十个,甚至得到一个线索“在哪里搜索”。最简单的方法是所谓的
    网格搜索
  • 1000个特征是大量的维度,这表明使用一个内核,这意味着无限维的特征空间是相当。。。冗余-最好先分析更简单的,过拟合的机会更小(线性或低次多项式)
  • 最后,如果“每个单词出现在2或3个文档中”,tf*idf是一个好的选择吗?它可能是满的,除非您实际指的是20-30%的文档
最后,为什么简单功能会被挤压

它要么给我0,当然是1


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

由于功能仅包含在两个文档中(大部分),因此可能是最小值或最大值,或者它们大多是0或1。好的,“大部分”和“始终”之间有区别。在您所述的问题中,由于文档中给定术语的许多外观只是一个标准化因子,它应该会导致许多介于0和1之间的值,除非某个术语在特定文档中最多出现一次,否则该数据的
tf*idf
选择似乎是错误的。