我试图在WEKA中使用10倍CV来评估分类器的性能。我有32,000条记录分为三个不同的类别," po"," ng"," ne"。 宝:~950 ng:~1200 ne:~30000
如何分割数据集以执行CV?我是否正确地假设对于CV我应该为每个班级记录大致相同的数量,以防止对" ne"类?
答案 0 :(得分:2)
首先,不,你不需要等于没有。您班级中的案例。并非所有数据集都是平衡的。是的,它可能会给出不切实际的答案。数据集中的不平衡是一种常见现象,但处理它的策略很少 - :
1)重新采样数据集
欠采样 - 删除多数类的记录
过采样 - 在少数民族类中添加记录
您可以使用SMOTE算法为您完成。
2)效果指标
像Kappa(或Cohen的kappa)这样的一些指标可以很好地工作,其中分类精度通过数据中的类的不平衡来规范化。
3)成本敏感的分类器 Weka有一个CostSensitiveClassifier,可以包装任何分类器并应用自定义惩罚矩阵进行未命中分类。 但这里面临的挑战是如何确定成本,因为成本应该依赖于域,而不是数据依赖。
如果是交叉验证,我发现此链接很有用。 http://www.marcoaltini.com/blog/dealing-with-imbalanced-data-undersampling-oversampling-and-proper-cross-validation
希望它有所帮助。