如何选择朴素贝叶斯分类器的训练数据

goh*_*goh 5 classification machine-learning

我想仔细检查一些我不确定的关于分类器学习训练集的概念.当我们为训练数据选择记录时,我们是否每个类别选择相同数量的记录,总和为N还是应该随机选择N个记录(不管是哪个类别)?

我直觉地想到了前者,但是考虑到先前的阶段概率是平等的并且不是真的有用吗?

Dan*_*nas 7

这取决于您的课程的分布,并且只能通过领域问题的领域知识来做出决定.您可以提出以下问题:

  • 是否有两个非常相似的类,学习者是否有足够的信息来区分它们?
  • 每个班级的先验概率有很大差异吗?

如果是这样,您应该重新分发类.

根据我的经验,重新分配课程没有任何害处,但并不总是必要的.

这实际上取决于你的课程的分布.在欺诈或入侵检测的情况下,预测类的分布可小于1%.在这种情况下,如果希望分类器了解每个类之间的差异,则必须在训练集中均匀分布类.否则,它将生成一个分类器,可以正确地对超过99%的案例进行分类,而无需正确识别欺诈案例,这是创建分类器的重点.

一旦你有一组均匀分布的类,你可以使用任何技术,如k-fold,来执行实际的训练.

另一个需要调整类分布的例子,但不一定是每个类别的记录,是从形状中确定字母表的大写字母的情况.

如果你采用英语中常用的字母分布来训练分类器,那么几乎没有任何案例(如果有的话)Q.另一方面,这封信O非常普遍.如果不重新分配类以允许相同数量的Q's O' 和's',则分类器没有足够的信息来区分a Q.你需要提供足够的信息(即更多Qs),以便它可以确定Q并且O确实是不同的字母.


fyr*_*fyr 1

首选方法是使用 K-Fold 交叉验证来获取学习和测试数据。

\n\n

引用自维基百科:

\n\n
\n

K折交叉验证

\n\n

在 K 折交叉验证中,原始样本被随机划分为 K 个子样本。在 K 个子样本中,保留单个子样本作为测试模型的验证数据,其余 K\n \xe2\x88\x92 1 个子样本作为训练数据。然后将交叉验证过程重复 K 次(折叠),将 K 个子样本中的每一个都用作验证数据一次。然后可以对折叠的 K 个结果进行平均(或以其他方式组合)以产生单个估计。与重复随机子采样相比,此方法的优点是所有观测值都用于训练和验证,并且每个观测值仅用于验证一次。通常使用 10 倍交叉验证。

\n\n

在分层 K 重交叉验证中,选择折叠以使所有折叠中的平均响应值近似相等。在二分分类的情况下,这意味着每个折叠包含大致相同比例的两种类型的类标签。

\n
\n\n

您应该始终采用通用方法,以便获得与其他科学数据可比较的结果。

\n