我想仔细检查一下关于分类器学习训练集的一些概念。当我们为我们的训练数据选择记录时,我们是否每班选择相同数量的记录,总计为N或应该随机选择N个记录(不管班级)?如何选择朴素贝叶斯分类器的训练数据
直觉上我想到的是前者,但是认为先前的概率会是平等的,而不是真的有用吗?
我想仔细检查一下关于分类器学习训练集的一些概念。当我们为我们的训练数据选择记录时,我们是否每班选择相同数量的记录,总计为N或应该随机选择N个记录(不管班级)?如何选择朴素贝叶斯分类器的训练数据
直觉上我想到的是前者,但是认为先前的概率会是平等的,而不是真的有用吗?
首选的方法是使用K-fold交叉验证来获取学习和测试数据。维基百科
引用:
K-倍交叉验证
在K-倍交叉验证,在 原始样品是随机分配 成K个子样本。在 K子样本中,一个子样本 保留作为 测试模型的验证数据,而其余的子样本用作训练 数据。交叉验证过程为 ,然后重复K次(折叠), ,每个K子样本使用 恰好一次作为验证数据。 从折叠的K结果然后可以将 平均(或以其他方式组合)至 产生单个估计。这种方法优于 随机子采样的优点是,所有 观测值均用于 训练和验证,并且每个 观测值仅用于验证 一次。通常使用10倍交叉验证 。
在分层K-倍交叉验证, 褶皱被选择为使得所述 平均响应值约为 在所有折缝相等。在 二分类的情况下,这个 意味着每个折叠大致包含类标签的两种类型 的相同比例。
为了与其他科学数据具有可比较的结果,您应该始终采取共同的方法。
这取决于你的课程的分布和决心只能用问题的领域知识在手。 你可以问以下问题:
如果是这样,你应该重新分配类。
根据我的经验,重新分配课程并没有什么坏处,但并不总是必要的。
这真的取决于你的类的分布。在欺诈或入侵检测的情况下,预测分类的分布可能小于1%。 在这种情况下,如果您希望分类器学习每个类之间的差异,您必须在训练集中平均分配类。否则,它将生成一个分类器,该分类器可以正确分类99%以上的案例,而无需正确识别欺诈案例,这就是创建分类器的关键。
一旦您拥有了一组均匀分布的类,您可以使用任何技术(如k-fold)来执行实际的训练。
另一个需要调整类分布但不一定每个记录的记录数相同的例子是从它们的形状中确定字母表的大写字母的情况。
如果您采用英语中常用的字母分布来训练分类器,则几乎不会有任何Q
字母的情况(如果有)。另一方面,字母O
非常常见。如果您不重新分配类别以允许相同数量的Q
和O
,则分类器没有足够的信息来区分Q
。您需要为其提供足够的信息(即更多Q
s),以便确定Q
和O
确实是不同的字母。
我构建了贝叶斯分类器的实现,通过检查示例中单词的出现来确定样本是否为NSFW(不安全)。当为NSFW检测训练分类器时,我已经试过让训练集中的每个类具有相同数量的示例。这并没有像我计划的那样好,因为其中一个班的每个例子都比另一个班有更多的单词。
因为我计算基于这些词的NSFW的可能性,我发现基于它们的实际大小(以MB为单位)平衡了类。我对这两种方法进行了10次交叉验证(通过实例的数量和类的大小进行平衡),并发现通过数据大小进行平衡运行良好。
我读了@fyr提供的k-fold。我很困惑。在我有均匀分布的训练集之后,我提供了哪些训练集以供实际分类使用?我以前是我甚至相信:像C1:90%和C2:10%。 – goh
您可以使用均匀分布的类创建一个全新的数据集。然后,您可以使用这些新数据,并根据需要将其划分为训练,交叉测试和测试。 k-fold是将数据划分为训练和跨界数据的一种常见方式。 –