我的朴素贝叶斯训练数据需要成比例吗?

我将使用垃圾邮件分类作为例子。传统的方法是手动分类一组随机抽取的邮件,并使用这些邮件来训练朴素贝叶斯分类器。

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

  • 特征变得过于偏向非垃圾邮件。
  • 算法在分类时隐式地使用了概率(垃圾邮件)(就像即使测试结果是阳性,医学状况的罕见性也会使概率(医学状况)降低一样)。

一般来说,更多的训练数据比少的更好,所以如果不破坏算法的话,我想添加这些数据。


回答:

可以使用所有数据进行训练,而无需担心比例问题。话虽如此,正如你所观察到的,扭曲比例会扭曲概率,导致不良结果。如果你的垃圾邮件流量为20%,但你用99%的垃圾邮件和1%的好邮件(非垃圾邮件)来训练垃圾邮件过滤器,你最终会得到一个过于激进的过滤器。

解决这个问题的一个常见方法是分两步进行:

  1. 通过让过滤器处理一组具有代表性的数据样本来初始化它(例如,在垃圾邮件过滤器场景中使用1,000封邮件)。
  2. 当过滤器遇到更多数据时,只有在过滤器判断错误时才更新权重。这被称为“错误训练”。

如果你遵循这种方法,你的过滤器不会被突然涌入的垃圾邮件所迷惑,这些垃圾邮件可能刚好包含了“trumpet”这样的词语以及真正属于垃圾邮件的词语。它只会在必要时进行调整,但当它判断错误时,会根据需要尽快调整。这是防止大多数垃圾邮件发送者现在采用的“贝叶斯毒化”方法的一种方式。他们可以在邮件中塞满大量垃圾,但他们描述其产品或服务的方式是有限的,这些词语总是与垃圾邮件相关。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注