我正在处理一个具有二进制不平衡目标的dataset的典型案例(事件3%,非事件97%)。我的想法是应用某种抽样(过/下、击等)。来解决这个问题。
正如我所看到的,正确的方法是只对火车组进行抽样,以便有更接近实际的测试性能。此外,我想使用CV进行超参数调整。所以,按顺序排列的任务是
我的疑问是:既然前者是基于抽样数据,而后者不是抽样数据,那么如何才能将CV性能与测试进行比较呢?
一个想法是跳过4,只对“培训”部分进行示例,但是在这种情况下,我如何比较“培训”和“验证”呢?
编辑:添加目标比率+输入错误。
发布于 2022-08-27 07:00:22
第一个问题是为什么你需要使用击打?如果数据集足够大,则不平衡的数据集对于统计分类器或机器学习方法不会带来重大问题。如果您有一个不平衡的数据集,则通常通过将所有内容分配给多数类来获得最佳精度。如果这是不可接受的,这表明,在某种意义上,少数群体阶级比多数人阶级更为“重要”(即,将少数群体阶级模式错误地归类为属于多数群体阶级的成本应该比属于多数群体阶级的人高)。换句话说,准确性不是正确的性能度量,您需要查看预期损失(实际上是根据错误分类成本加权的准确性)。因此,与其使用SMOTE,不如看看是否能够计算出错误分类的实际成本,并将其合并到分类器中(通过改变概率分类器的阈值概率,或者通过在培训标准中不平等地加权正负模式)。大多数情况下,“班级不平衡问题”只是“成本敏感的学习问题”的伪装。
请注意,SMOTE最初是在非常原始的分类器系统中开发的,例如单决策树或开膛手,如果简单地重放少数例子,就会出现过度拟合的情况。合成例子的产生是为了“模糊”少数人的例子,因此它们更难过份。现代分类器系统具有避免过度拟合(如正则化)的有效手段,因此,对于现代方法来说,SMOTE生成合成示例的奇怪方式是否是一个好主意是值得怀疑的。
如果您正在调优超参数以优化操作性能,那么交叉验证中的“测试”折叠应该代表操作条件,因此如果您的原始数据集代表操作条件,则不应该对它们应用SMOTE或重采样。
发布于 2019-11-04 17:38:16
I believe, the sequence for combination of CV and SMOTE should be as below.
1. Perform the 5 fold-CV ( Loop through for each fold )
2. Training Sample and Testing Sample ( for each fold )
3. Smote Training Samples
4. Train the model on the "training"
5. Prediction ( test samples )
6. Evaluate performances on test
Repeat for next fold
https://datascience.stackexchange.com/questions/62645
复制相似问题