忽略测试数据上缺失单词特征的方法

Posted

技术标签:

【中文标题】忽略测试数据上缺失单词特征的方法【英文标题】:Methods to ignore missing word features on test data 【发布时间】:2013-07-18 22:38:58 【问题描述】:

我正在处理一个文本分类问题,我遇到了一些特征缺失值的问题。

我正在从标记的训练数据中计算单词的类别概率。

例如;

让单词 foo 属于 A 类 100 次,属于 B 类 200 次。在这种情况下,我发现类概率向量为 [0.33,0.67] ,并将其与单词本身一起提供给分类器。

问题是,在测试集中,有一些词在训练数据中没有出现过,所以它们没有概率向量。

我可以为这个问题做些什么?

我尝试为缺失值给出所有单词的平均类概率向量,但它并没有提高准确性。

有没有办法让分类器在评估过程中忽略某些特征,只针对特定实例而没有给出特征的价值?

问候

【问题讨论】:

【参考方案1】:

有很多方法可以做到这一点

为您拥有的所有功能子集创建和训练分类器。您可以使用与主分类器训练相同的数据在子集上训练分类器。

对于每个样本,只需查看它具有的特征并使用更适合他的分类器。不要试图用那些分类器做一些提升。

只需为无法分类的样本创建一个特殊类。或者您的实验结果太差,功能如此之少。

有时人类也无法成功地对样本进行分类。在许多情况下,无法分类的样本应该被忽略。问题不在于分类器,而在于输入,或者可以通过上下文来解释。

作为 nlp 的观点,许多单词在许多应用程序中具有非常相似的含义/用法。因此,您可以使用词干/词形还原来创建单词类。

您还可以使用语法更正、同义词、翻译(这个词是否来自世界的另一个地方?)。

如果这个问题对您来说足够重要,那么您将以前面 3 点的组合结束。

【讨论】:

以上是关于忽略测试数据上缺失单词特征的方法的主要内容,如果未能解决你的问题,请参考以下文章

R语言:用R语言填补缺失的数据

详解支持向量机-SVC真实数据案例:预测明天是否会下雨-填补缺失值和编码菜菜的sklearn课堂笔记

处理 SVM 中的缺失属性

如何处理 Matlab 中 Kruskal-Wallis 测试中的缺失值?

在训练和测试数据上拟合 CountVectorizer,以免遗漏任何单词

风控建模流程