You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

朴素贝叶斯文本分类器样本失衡导致分类结果不符合预期问题

这个问题确实是朴素贝叶斯分类器在类别不平衡+无特征匹配场景下的典型坑——它本质是靠「概率最大化」选类别,当没有特征给它提供额外判断依据时,就会直接偏向先验概率更高的CLASS2。这里有几个实用的解决思路,你可以根据自己的业务场景挑合适的:

可行的解决办法

1. 把「NOTIDENTIFIED」当作正式类别加入分类体系

你可以给分类器新增一个NOTIDENTIFIED类,重新定义先验和似然规则:

  • 先验概率调整:比如给NOTIDENTIFIED设一个合理的先验值(比如参考CLASS1的占比,设为3/19,把总"样本数"视为原18个加1个虚拟的未知样本;或者根据业务中未知情况的预期频率来定),CLASS1和CLASS2的先验则对应调整为3/19和15/19,确保三类先验总和为1。
  • 似然规则设定:规定只要文本里没有匹配到CLASS1或CLASS2的任何特征词,NOTIDENTIFIED类的似然就设为1(远高于其他类);一旦有特征词匹配到已知类,NOTIDENTIFIED的似然就设为极低值。这样无特征匹配时,它的后验概率会是最高的,自然被选中。

2. 给分类结果加一层阈值判断逻辑

不用改分类器核心,只在输出前加个判断环节:

  • 简单版:先提取文本的特征词,如果特征词集合是空的(完全没匹配到两类的特征),直接返回NOTIDENTIFIED。
  • 进阶版:计算CLASS1和CLASS2的后验概率,如果这两个概率和它们的先验概率完全一致(说明特征没提供任何新信息),或者两者的概率差在你设定的阈值内,就返回NOTIDENTIFIED;否则正常返回概率更高的类别。

3. 在分类过程中加入特征匹配检查

直接修改朴素贝叶斯的计算逻辑,提前识别无特征场景:

  • 在计算每个类的似然之前,先检查待分类文本有没有至少一个特征词出现在该类的特征词库中。
  • 如果两类的特征词库都没匹配到任何文本特征,直接返回NOTIDENTIFIED;要是有一类或两类匹配到了,再正常计算后验概率选类别。

这个办法最贴合你的需求,因为它直接在分类流程里捕捉到「无特征匹配」的情况,而不是靠事后概率对比来补救。

内容的提问来源于stack exchange,提问作者user9477964

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:36:37