gpt4 book ai didi

machine-learning - 深度学习不平衡的数据集

转载 作者:行者123 更新时间:2023-11-30 08:30:44 25 4
gpt4 key购买 nike

我有两个数据集,如下所示:

DATASET 1
Training (Class 0: 8982, Class 1: 380)
Testing (Class 0: 574, Class 1: 12)

DATASET 2
Training (Class 0: 8982, Class 1: 380)
Testing (Class 0: 574, Class 1: 8)

我正在尝试在 Tensorflow 中构建深度前馈神经网络。我得到的准确率在 90 年代,AUC 分数在 80 年代。当然,数据集严重不平衡,因此这些指标毫无用处。我的重点是获得良好的召回值,我不想对 1 类进行过度采样。我尝试过模型的复杂性,但没有成功,最好的模型只能正确预测 25% 的正类。

我的问题是,考虑到这些数据集的分布,在没有获取更多数据的情况下构建模型是否是徒劳的举动(我无法获取更多数据),或者有一种方法可以处理这么多数据不平衡。

谢谢!

最佳答案

问题

我可以使用tensorflow来学习比例约为30:1的不平衡分类

回答

是的,我有。具体来说,Tensorflow 提供了输入权重矩阵的能力。看一下tf.losses.sigmoid_cross_entropy,有一个权重参数。您可以输入形状与 Y 匹配的矩阵,并为 Y 的每个值提供训练示例应具有的相对权重。

找到正确权重的一种方法是开始不同的平衡并运行训练,然后查看您的混淆矩阵以及每个类别的精度与准确度的对比。一旦你让两个类具有大致相同的精度与准确率,那么它们就达到了平衡。

实现示例

这是一个示例实现,它将 Y 转换为权重矩阵,对我来说效果非常好

def weightMatrix( matrix , most=0.9 ) :
b = np.maximum( np.minimum( most , matrix.mean(0) ) , 1. - most )
a = 1./( b * 2. )
weights = a * ( matrix + ( 1 - matrix ) * b / ( 1 - b ) )
return weights

most 参数表示要考虑的最大分数差异。 0.9 等于 .1:.9 = 1:9 ,其中 0.5 等于 1:1。低于 0.5 的值不起作用。

关于machine-learning - 深度学习不平衡的数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44596894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com