您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 朴素贝叶斯:不平衡测试数据集

5b51 2022/1/14 8:22:20 python 字数 2901 阅读 524 来源 www.jb51.cc/python

我使用scikit学习多项式朴素贝叶斯分类器进行二进制文本分类(分类器告诉我文档是否属于X类).我使用一个平衡的数据集训练我的模型和一个平衡的测试集来测试它,结果是非常有希望的. 这个分类器需要实时运行,并且不断分析随机抛出的文档. 然而,当我在生产中运行我的分类器时,误报的数量非常高,因此我的精度很低.原因很简单:在实时情况下(约90%的时间),分类器遇到更多的负面样本,这与我用于测试和培训的理

概述

这个分类器需要实时运行,并且不断分析随机抛出的文档.

然而,当我在生产中运行我的分类器时,误报的数量非常高,因此我的精度很低.原因很简单:在实时情况下(约90%的时间),分类器遇到更多的负面样本,这与我用于测试和培训的理想平衡数据集不符.

有没有办法我可以在培训期间模拟这个实时的情况,还是有什么可以使用的技巧(包括对文档进行预处理,看看它们是否适合分类器)?

我正在计划使用与实时情况相同比例的不平衡数据集来训练我的分类器,但我恐怕可能会将朴素贝叶偏向负面阶层,并失去对正面课程的回忆.

任何建议是赞赏.

假设您的假阳性率为0.01,您的真阳性率为0.9.这意味着您的假阴性率为0.1,您的真阴性率为0.99.

想像一个理想化的测试场景,您每个类都有100个测试用例.你会得到(预期)1个假阳性和90个真正的阳性.大!精准是你的积极的班上的90 /(90 1)!

现在想象的是比正面更多的负面例子的1000倍.同样的100个正面例子在测试,但现在有1000000个负面例子.你现在得到90个真正的肯定,但是(0.01 * 1000000)= 10000个假阳性.灾害!您的精度现在几乎为零(90 /(90 10000)).

这里的意思是分类器的性能没有改变;假阳性和真实的阳性率保持不变,但平衡发生变化,您的精确度数字因此而下降.

做什么比较难如果您的分数是可分离的,但阈值是错误的,您应该根据后验概率来查看ROC曲线的阈值,并查看是否有某个地方可以获得所需的性能.如果您的分数不可分离,请尝试一堆不同的分类器,并查看是否可以获得一个分类器(逻辑回归几乎是Naive Bayes的替代品;您可能需要尝试一些非线性分类器,然而,像神经网络或非线性SVM一样,您通常可能会遇到描绘非常小类的空间的非线性边界).

为了从平衡测试集中模拟这种效果,您可以简单地将事例计数乘以应急表中的适当乘数(例如,如果您的负面类别为正面大小的10倍,则使测试中的每个负面实例添加10个计数应急表而不是1).

我希望有一些帮助至少能够理解你所面临的问题.

总结

以上是编程之家为你收集整理的python – 朴素贝叶斯:不平衡测试数据集全部内容,希望文章能够帮你解决python – 朴素贝叶斯:不平衡测试数据集所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶