文本分类的特征选择与缩减

cla*_*ius 49 nlp svm feature-extraction sentiment-analysis

我目前正在开发一个项目,一个简单的情绪分析器,这样在不同的情况下会有2个和3个类.我正在使用一个非常丰富独特单词(大约200.000)的语料库.我用袋的词方法用于特征选择和以减少的数量独特特征,进行消除由于一个进行阈值出现频率.在最后一组的功能包括围绕20.000的功能,这实际上是一个90%的下降,但还不够用于测试预测的预期准确性.我正在使用LibSVMSVM-light进行训练和预测(线性RBF内核)以及PythonBash.

到目前为止观察到的最高精度约为75%,我至少需要90%.这是二进制分类的情况.对于多级培训,准确率降至约60%.在这两种情况下我都需要至少90%,并且无法计算如何增加它:通过优化训练参数通过优化特征选择

我读过有关文本分类中特征选择的文章,我发现使用了三种不同的方法,它们之间实际上有明显的相关性.这些方法如下:

  • 词袋的频率逼近(BOW)
  • 信息增益(IG)
  • X ^ 2统计(CHI)

第一种方法已经是我使用的方法,但我非常简单地使用它,需要指导以更好地使用它以获得足够高的准确度.我也缺乏IGCHI实际实施的知识,并寻求任何帮助以这种方式指导我.

非常感谢,如果您需要任何其他信息以获得帮助,请告诉我们.


  • @larsmans:频率阈值:我在寻找示例中出现的唯一单词,这样如果一个单词在不同的示例中频繁出现,它就会作为一个独特的功能包含在功能集中.

  • @TheManWithNoName:首先感谢您努力解释文档分类的一般问题.我检查并试验了你提出的所有方法和其他方法.我发现比例差异(PD)方法最适合于特征选择,其中特征是单一格式和术语存在(TP)用于加权(我不明白为什么你标记了术语 - 频率 - 逆 - 文档频率(TF-) IDF)作为索引方法,我宁愿将其视为一种特征加权方法). 正如您所提到的,预处理也是此任务的一个重要方面.我使用某些类型的字符串消除来细化数据以及形态解析阻止.另请注意,我正在研究土耳其语,与英语相比具有不同的特征.最后,我设法达到〜88%的准确度(F值)为二进制分类和〜84%多类.这些值是我使用的模型成功的坚实证据.这就是我到目前为止所做的.现在正在研究聚类和缩减模型,尝试过LDALSI,然后转向moVMF球形模型(LDA + moVMF),它似乎在具有客观性质的语料库上更好地工作,如新闻语料库.如果您对这些问题有任何信息和指导,我将不胜感激.我需要信息特别是在特征空间方法(LDA,LSI,moVMF等)和聚类方法(k-means,层次等)之间设置接口(面向python,开源).

The*_*ame 36

这可能有点晚了,但......

正如Bee指出并且您已经意识到,如果您在分类之前已经丢失了阶段中的信息,那么使用SVM作为分类器将会被浪费.然而,文本分类的过程需要更多,只需几个阶段,每个阶段对结果有显着影响.因此,在研究更复杂的特征选择测量之前,存在许多更简单的可能性,这些可能性通常需要更低的资源消耗.

在执行令牌/表示形式的单词格式之前,您是否预处理文档?简单地删除停用词或标点符号可以大大提高准确性.

您是否考虑过更改要使用的词袋表示形式,例如单词对或n-gram?您可能会发现您有更多维度,但它们会进一步缩减并包含更多有用信息.

值得注意的是,降维特征选择/特征提取.不同之处在于特征选择以单变量方式减小尺寸,即它在当前出现的情况下单独删除术语而不改变它们,而特征提取(我认为Ben Allison指的是)是多变量的,组合一个或多个单个术语一起产生更高的orthangonal术语(希望)包含更多信息并减少特征空间.

关于您对文档频率的使用,您是仅仅使用包含术语的文档的概率/百分比,还是使用文档中的术语密度?如果第一类只有10个douments并且每个都包含一个术语,那么第一类确实与文档相关联.但是,如果第二类只有10个文档,每个文档每个包含相同的术语一百次,那么显然第二类与该术语的关系比第一类高得多.如果不考虑术语密度,则此信息会丢失,您拥有的类别越少,此损失的影响就越大.在类似的说明中,仅保留具有高频率的术语并不总是谨慎的,因为它们实际上可能不提供任何有用的信息.例如,如果一个术语在每个文档中出现一百次,那么它就被认为是一个噪声术语,虽然它看起来很重要,但在将它保留在您的特征集中没有实际价值.

另外,如何使用带有简单布尔索引的向量空间模型或更复杂的度量(如TF-IDF)来索引数据?考虑到场景中的类别数量较少,更复杂的度量将是有益的,因为它们可以考虑每个类别在整个数据集中的重要性的术语重要性.

我个人会首先尝试一些上述可能性,然后考虑使用(或组合)复杂方程式调整特征选择/提取,如果您需要额外的性能提升.


额外

根据新信息,听起来好像你是在正确的轨道上,84%+准确度(F1或BEP - 精确度和基于多类问题的召回)通常被认为对大多数数据集非常好.可能是您已经成功从数据中获取了所有信息丰富的功能,或者还有一些仍在修剪中.

话虽如此,可以用来预测特定数据集的积极降维程度的预测因素是"异常值计数"分析,该分析使用信息增益在外围特征中的下降来确定信息的可能性.在功能选择期间丢失.您可以在原始数据和/或已处理数据上使用它来估计您应该如何积极地修剪功能(或根据具体情况取消它们).可以在这里找到描述它的论文:

带有异常值的纸张信息

关于将TF-IDF描述为索引方法,你是正确的它是一个特征加权度量,但我认为它主要用作索引过程的一部分(尽管它也可以用于降维).这样做的原因是某些测量更好地针对特征选择/提取,而其他测量更适合于特征在文档向量中的特征加权(即索引数据).这通常是由于尺寸减少措施是基于每个类别确定的,而指数加权措施倾向于更加面向文档以提供优越的矢量表示.

关于LDA,LSI和moVMF,我担心我们对它们提供任何指导的经验太少.不幸的是,我还没有使用土耳其数据集或python语言.


Ben*_*son 5

我建议降维而不是特征选择.考虑奇异值分解,主成分分析,甚至更好地考虑它是​​为词袋表示,Latent Dirichlet Allocation而定制的.这将允许您在概念上保留包含所有单词的表示,但通过利用它们之间的相似性(甚至同义词类型)关系将它们折叠为更少的维度.

所有这些方法都有相当标准的实现,您可以访问和运行 - 如果您让我们知道您正在使用哪种语言,我或其他人将能够指出您正确的方向.