具有高度不平衡数据集网络的基本DNN预测相同的标签

2024-04-19 22:23:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我将尝试在一个高层次上解释我的问题,我希望我能够更好地理解这一切背后的ML。你知道吗

我正在处理从音频文件中提取的聚合特征,因此每个特征向量的大小(1xN)。输出将是一个单一的情绪标签,积极的,中立的,或消极的。我将它们分别映射到2、1、0(设计上标签是离散的,但也许我可以使它连续?)你知道吗

我使用的数据集90%为中性,6%为阴性,4%为阳性,我将它们分为train/dev/test。我用PyTorch编写了一个基本的DNN,并且一直在使用CrossEntropyLoss和SGD(带nesterov momentum)进行训练。我遇到的问题是,网络在只看到约10%的数据后,开始只预测网络标签。类权重收敛为

tensor([[-0.9255],
        [ 1.9352],
        [-1.1473]])

不管你输入什么1xN特征向量。如能就如何解决这一问题提供指导,我将不胜感激。你知道吗

该体系结构可供参考

DNNModel(
  (in_layer): Linear(in_features=89, out_features=1024, bias=True)
  (fcs): Sequential(
    (0): Linear(in_features=1024, out_features=512, bias=True)
    (1): Linear(in_features=512, out_features=256, bias=True)
    (2): Linear(in_features=256, out_features=128, bias=True)
  )
  (out_layer): Sequential(
    (0): SequenceWise (
    Linear(in_features=128, out_features=3, bias=True))
  )
)

def forward(self, x):
    x =  F.relu(self.in_layer(x))
    for fc in self.fcs:
        x = F.relu(fc(x))
    x = self.out_layer(x)
    return x

不确定NN是否真的有意义——是每个隐藏层之间的关系还是偏差?或者别的什么。谢谢!你知道吗

编辑:移到数据科学堆栈交换,因为这在那里更相关。link


Tags: 数据inself网络layertrue标签out
1条回答
网友
1楼 · 发布于 2024-04-19 22:23:54

有各种各样的方法可以解决这个问题问题。你呢可以尝试重新采样数据集。你知道吗

这可以通过两种方式实现:

  1. 您可以在采样下尝试,即删除过度表示类的实例,或者
  2. 您可以尝试过采样,也就是说,添加更多表示不足类的实例。你知道吗

这可能是最简单的方法,但如果你愿意尝试,你可以尝试惩罚模式。你知道吗

在惩罚模型中,我们对模型施加了额外的成本,使其在分类过程中对少数阶级犯错误训练。这个额外的成本或惩罚可以使模型更加关注少数群体同学们。在那里是算法的惩罚版本,如惩罚支持向量机等。你知道吗

有关惩罚支持向量机算法的更多信息,请访问以下链接: [https://stats.stackexchange.com/questions/122095/does-support-vector-machine-handle-imbalanced-dataset][1]

相关问题 更多 >