情况:
我想知道当我的训练数据在两个标签之间的标签分配不平衡时如何最佳地使用TensorFlow。例如,假设MNIST教程已简化为仅区分1和0,其中可供我们使用的所有图像均为1或0。当我们每种图像的大约50%都需要训练和测试时,可以使用提供的TensorFlow教程轻松进行训练。但是,如果数据中90%的图像为0,而只有10%的图像为1,该怎么办?我观察到在这种情况下,TensorFlow例行地将我的整个测试集预测为0,达到了毫无意义的90%的准确性。
我成功使用的一种策略是随机选择要均匀分配0和1的批次进行训练。这种方法可确保我仍然可以使用我的所有训练数据并获得不错的结果,准确性不到90%,但是分类器更加有用。由于在这种情况下精度对我来说是没有用的,因此我选择的度量标准通常是ROC曲线下的面积(AUROC),这会导致结果大大高于0.50。
问题:
(1)我描述的策略是否是接受的或最佳的数据不平衡训练方法,还是有一种可能更好的方法?
(2)由于准确性度量标准在数据不平衡的情况下不那么有用,是否有另一个度量标准可以通过更改成本函数来最大化?我当然可以计算AUROC的后期训练,但是我可以以最大化AUROC的方式进行训练吗?
(3)我还可以对成本函数进行其他更改以改善不平衡数据的结果吗?当前,我正在使用TensorFlow教程中给出的默认建议:
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred, y))
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)
我听说可以通过增加对较小标签类进行错误分类的成本来实现,但是我不确定如何执行此操作。
(1)可以运用您的策略。我也在处理不平衡数据,我尝试先使用下采样和上采样方法使训练集均匀分布。或使用集成方法来训练具有均匀分布子集的每个分类器。
(2)我还没有任何方法可以最大化AUROC。我的想法是,AUROC是基于真实的肯定和错误的肯定率,这不能说明它在每个实例上的工作情况。因此,它不一定会最大化分离类的能力。
(3)关于通过类实例的比率对成本进行加权,它类似于Tensor流中类不平衡二进制分类器的损失函数和答案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句