我想仔细检查一些我不确定的关于分类器学习训练集的概念。当我们为训练数据选择记录时,我们是否每个类别选择相同数量的记录,总和为N还是应该随机选择N个记录(不管是哪个类别)?
直觉上我在考虑前者,但是考虑到先前的阶段概率是否相等而不是真的有用?
答案 0 :(得分:7)
这取决于您的课程的分布,并且只能通过对手头问题的领域知识来做出决定。 您可以提出以下问题:
如果是这样,你应该重新分配这些类。
根据我的经验,重新分配课程没有坏处,但并不总是必要的。
这实际上取决于你的课程的分布。在欺诈或入侵检测的情况下,预测类的分布可小于1%。 在这种情况下,如果希望分类器了解每个类之间的差异,则必须在训练集中均匀分布类。否则,它将生成一个分类器,可以正确地对超过99%的案例进行分类,而无需正确识别欺诈案例,这是创建分类器的重点。
一旦你有一组均匀分布的类,你就可以使用任何技术,比如k-fold来进行实际训练。
需要调整类分布的另一个例子,不一定是每个类的记录数相同,就是从形状中确定字母表的大写字母。
如果您使用英语中常用的字母分布来训练分类器,那么Q
字母几乎不会出现任何情况(如果有的话)。另一方面,字母O
非常普遍。如果您不重新分发类以允许相同数量的Q
和O
,则分类器没有足够的信息来区分Q
。您需要提供足够的信息(即更多Q
s),以便确定Q
和O
确实是不同的字母。
答案 1 :(得分:1)
首选方法是使用K-Fold Cross验证来获取学习和测试数据。
来自维基百科的引用:
K折交叉验证
在K-fold交叉验证中, 原始样本是随机的 分为K个子样本。的 K个子样本,单个子样本 保留作为验证数据 测试模型,剩下的K. - 1个子样本用作训练 数据。交叉验证过程是 然后重复K次(折叠), 使用每个K子样本 只需一次作为验证数据。 然后可以从折叠中得到K. 被平均(或以其他方式组合)到 产生一个估计。该 这种方法的优点是重复 随机的子采样就是这一切 观察用于两者 培训和验证,以及每个 观察用于验证 一次。 10倍交叉验证 常用。
在分层K折交叉验证中, 选择折叠使得 平均响应值约为 所有的折叠相等。如果是 这是一个二分类 意味着每个折叠大致包含 这两种类型的比例相同 班级标签。
您应该始终采用通用方法,以便与其他科学数据具有可比性。
答案 2 :(得分:1)
我构建了贝叶斯分类器的实现,通过检查示例中单词的出现来确定样本是否为NSFW(对工作不安全)。在训练用于NSFW检测的分类器时,我尝试过这样做,以便训练集中的每个类具有相同数量的示例。这并没有成功,因为我曾计划过,其中一个课程的每个例子比其他课程有更多的单词。
由于我根据这些词计算了NSFW的可能性,我发现根据实际大小(以MB为单位)来平衡类的工作。我尝试了两种方法的10交叉折叠验证(通过示例数量和类的大小进行平衡),并发现通过数据大小进行平衡效果很好。