Machine learning 使用朴素贝叶斯预测分类并处理不在训练集中的特征/单词

Machine learning 使用朴素贝叶斯预测分类并处理不在训练集中的特征/单词,machine-learning,nlp,bayesian,supervised-learning,text-classification,Machine Learning,Nlp,Bayesian,Supervised Learning,Text Classification,用朴素贝叶斯算法研究垃圾邮件与非垃圾邮件的文本分类问题 问题如下: 如果在一组单词中,你看到了一个模型根本没有看到的新单词wordX(因此你甚至没有估计它的拉普拉斯平滑概率),你如何对文档进行预测 通常的做法是忽略wordX,尽管它出现在当前文本中,因为它没有与之相关的可能性?也就是说,我知道有时候拉普拉斯平滑法被用来解决这个问题,但是如果这个词是全新的呢 我想到的一些解决方案: 1) 在评估分类时忽略这个词(最简单,但有时是错误的…?,但是,如果训练集足够大,这可能是最好的做法,因为我认为如果

用朴素贝叶斯算法研究垃圾邮件与非垃圾邮件的文本分类问题

问题如下:

如果在一组单词中,你看到了一个模型根本没有看到的新单词wordX(因此你甚至没有估计它的拉普拉斯平滑概率),你如何对文档进行预测

通常的做法是忽略wordX,尽管它出现在当前文本中,因为它没有与之相关的可能性?也就是说,我知道有时候拉普拉斯平滑法被用来解决这个问题,但是如果这个词是全新的呢

我想到的一些解决方案:

1) 在评估分类时忽略这个词(最简单,但有时是错误的…?,但是,如果训练集足够大,这可能是最好的做法,因为我认为如果你有1百万或2000万的数据,那么假设你的特征和内容被选得足够好是合理的)

2) 将该词添加到您的模型中,并完全更改您的模型,因为词汇发生了变化,所以概率必须在任何地方都发生变化(但这确实存在问题,因为这可能意味着您必须频繁更新模型,特别是如果您的分析文档

我对此做了一些研究,阅读了Dan Jurafsky NLP和NB的一些幻灯片,观看了coursera上的一些视频,浏览了一些研究论文,但我没有找到有用的东西。我觉得这个问题一点也不新鲜,应该有一些东西(启发性的…?)存在。如果没有,知道这一点也太棒了

希望这是一个对社区有用的帖子,并提前表示感谢

PS:为了让这个问题更明确一点,我看到的一个解决方案是,假设我们在垃圾邮件中看到一个未知的新词wordX,那么对于这个词,我们可以做1/count(垃圾邮件)+词汇+1,这样做的问题是,那么,这是否意味着我们改变了词汇的大小,现在,我们分类的每个新文档都有一个新的特征和词汇?这段视频似乎试图解决这个问题,但我不确定这是一件好事还是2,也许我误解了:


从实用的角度(请记住,这并不是您所要求的全部),我建议使用以下框架:

  • 使用初始训练集训练模型,并开始使用它进行分类

  • 每当出现一个新词(与当前模型相关)时,请使用一些平滑方法对其进行解释。e、 如问题所述,拉普拉斯平滑可能是一个良好的开端

  • 使用新数据(通常是原始列车集之外的数据)定期重新训练模型,以考虑问题域中的变化,例如新术语。这可以按预设的时间间隔进行,例如每月一次;在遇到一些未知单词后,或以在线方式,即在每个输入文档之后

  • 此重新培训步骤可以手动完成,例如收集所有包含未知术语的文档,手动标记这些文档,然后重新培训;或者使用半监督学习方法,例如,自动将得分最高的垃圾邮件/非垃圾邮件文档添加到相应的模型中

    这将确保您的模型保持更新并考虑新的术语-通过不时地将它们添加到模型中,甚至在此之前考虑它们(简单地忽略它们通常不是一个好主意)