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

Machine learning 不平衡数据集的深度学习,machine-learning,tensorflow,deep-learning,Machine Learning,Tensorflow,Deep Learning,我有两个数据集,如下所示: 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年代获得了准确度,在80年代获得了AUC分数。当然,数据集是严重不

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

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年代获得了准确度,在80年代获得了AUC分数。当然,数据集是严重不平衡的,因此这些指标是无用的。我的重点是获得一个好的回忆值,我不想对第1类进行过采样。我已经玩弄了模型的复杂性,但没有用,最好的模型只正确预测了25%的正类

我的问题是,考虑到这些数据集的分布情况,在没有获得更多数据的情况下构建模型是徒劳的(我无法获得更多数据),还是有一种方法可以处理如此不平衡的数据


谢谢

您可能有兴趣看一看及其答案。它的范围先验地比您的范围更为有限,因为它专门针对分类权重,但它似乎与您的案例非常相关

而且,这绝对不是无关紧要的:它实际上与您的数据不平衡无关。

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

答复 是的,我有。具体而言,Tensorflow提供了输入权重矩阵的能力。看看tf.loss.sigmoid_cross_熵,这里有一个权重参数。您可以输入一个与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

<强>大多数参数表示要考虑的最大分数差异。strong>0.9等于.1:.9=1:9,其中as.5等于1:1。低于.5的值不起作用。

不要回答重复项,而是将其作为重复项关闭。是的——不过,在这种情况下,问题似乎更为广泛,尽管我会指出相同的解决方案。