我正在尝试进行二进制分类,一个类(0)大约是另一个类(1)的三分之一。当我通过常规前馈神经网络运行原始数据时,准确度约为0.78。但是,当我实现class_weights时,精度下降到约0.49。如果没有class_weights,roc曲线似乎也会做得更好。为什么会发生这种情况,我该如何解决?
II已经尝试更改模型,实现正则化和辍学等。但是似乎没有什么改变总体准确性
这是我如何获得体重的方法:
class_weights = class_weight.compute_class_weight('balanced', np.unique(y_train), y_train)
class_weight_dict = dict(enumerate(class_weights))
以下是没有权重的结果:
以下是配重:
我希望使用class_weights可以得到更好的结果,但事实恰恰相反。甚至连大鹏似乎也没有在举重方面做得更好。
答案 0 :(得分:0)
由于班级不平衡,总是选择多数派的非常弱的基线将获得大约75%的准确性。
未经类别加权训练的网络验证曲线似乎表明,它正在选择接近总是选择多数类别的解决方案。从网络上可以看出,它在第一个时期的验证准确性没有太大提高。
我建议您研究混淆矩阵,准确性和召回率指标,以获取有关哪种模型更好的信息。