machine-learning - 我的朴素贝叶斯训练数据是否需要成比例?

标签 machine-learning classification bayesian training-data naivebayes

我将使用垃圾邮件分类作为示例。规范的方法是对电子邮件的随机样本进行手工分类,并使用它们来训练 NB 分类器。

太好了,现在假设我添加了一堆我知道不是垃圾邮件的存档电子邮件。这是否会扭曲我的分类器结果,因为现在垃圾邮件:非垃圾邮件的比例不再具有代表性?我可以想到发生这种情况的两种方式:

  • 这些功能变得过于非垃圾邮件。
  • 该算法在分类中隐式使用概率(垃圾邮件)(就像概率(医疗状况)会因医疗状况的稀有性而贬值一样,即使测试结果呈阳性。

一般来说,训练数据越多越好,所以如果不破坏算法,我想添加它。

最佳答案

可以对所有数据进行训练,而不必担心比例问题。也就是说,正如您所观察到的,扭曲比例会扭曲概率并导致不良结果。如果您有 20% 的垃圾邮件流,并针对 99% 的垃圾邮件和 1% 的好电子邮件(火腿)训练垃圾邮件过滤器,那么您最终会得到一个超激进的过滤器。

常见的方法分为两步:

  1. 通过运行具有代表性的数据样本来为过滤器播种(例如,垃圾邮件过滤器场景中的 1,000 封电子邮件)。
  2. 当过滤器遇到其他数据时,仅在过滤器出错时才更新权重。这称为“错误训练”。

如果您遵循这种方法,您的过滤器就不会因突然爆发的垃圾邮件而感到困惑,这些垃圾邮件恰好包含“喇叭”一词以及真正的垃圾邮件词。它只会在必要时进行调整,但在错误时会尽快 catch 。这是防止大多数垃圾邮件发送者现在采用的“贝叶斯中毒”方法的一种方法。他们可能会用大量垃圾来扰乱他们的信息,但他们只有这么多的方式来描述他们的产品或服务,而这些词语永远都是垃圾邮件。

关于machine-learning - 我的朴素贝叶斯训练数据是否需要成比例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33398883/

相关文章:

python - 在 Tensorflow 对象检测 API 中获取类别和概率

machine-learning - 贝叶斯学习中的缺失值

machine-learning - 聚类标签的无偏预测

machine-learning - 线性堆叠层等于多元线性回归吗?

python - 参数中的 RandomForest 分类器对象

python - 为什么在 python 中获取 sklearn 中的顶级预测结果不同?

r - 在 rstan 中转换变量(贝叶斯分析)

python-3.x - 并非所有点都在 Scikit-Optimize 中的空间误差范围内

python - scikit 学习 : Problems creating customized CountVectorizer and ChiSquare

java - 如何训练 libsvm 格式的图像(像素)数据以用于 Java 识别