我正在尝试使用神经网络进行分类(我正在使用tensorflow)。 不幸的是,我的神经网络训练的准确率达到了42%。 我有4个类,我尝试对数据进行分类。 不幸的是,我的数据集并不均衡,这意味着:
我使用的优化器是AdamOptimizer,成本函数是tf.nn.softmax_cross_entropy_with_logits。
我想知道我的训练是否陷入42%的原因是因为我的数据集不均衡,或者因为数据的性质是非常随机的,并且确实没有找到模式
目前我的NN包括:
我尝试改变网络的这种结构,但结果总是一样的。 我也尝试了支持向量分类,结果几乎相同,变化很小。
其他人遇到过类似的问题吗? 有人可以提供一些提示,以解决这个问题吗?
谢谢, 杰拉德
答案 0 :(得分:1)
我将假设您已经检查过双倍,三倍和四倍的数据,以确保输入的数据符合您的预期。
这个问题非常开放,甚至是一个研究课题。但是有些事情可以提供帮助。
在更好的培训方面,人们使用不平衡数据集训练神经网络有两种常规方式。
话虽这么说,如果你的学习率很好,神经网络通常最终会(只是坐在那里几个小时后)跳出来只预测一个班级,但是他们仍然很难用一个严重偏斜的数据集结束。 / p>
如果您想知道数据中是否有 模式可以确定,有一种简单的方法可以做到。
通过从所有类中随机选择元素来创建新数据集,使得所有类都具有偶数(即,如果有类别4的700个示例,则通过从每个类中随机选择700个示例来构建数据集)
然后,您可以在此新数据集上使用所有技术。
虽然,this paper表明,即使使用随机标签,它也应该能够找到一些它理解的模式。
答案 1 :(得分:0)
首先,您应该检查您的模型是否过度拟合或过度拟合,这两种情况都可能导致精度不高。检查训练集和开发集的准确性,如果训练集的准确度远远高于开发/测试集,则模型可能过度,如果训练集的准确性与开发/测试集上的精度一样低,那么它可能是不合适的。
对于过度精细化,更多数据或更简单的学习结构可能会起作用,同时使您的结构更复杂,更长的训练时间可以解决不足之处问题