我对神经网络非常陌生。我有一个数据集,其中包含1600万条记录,其中只有70K标记为1,其余为0(即使通过设置一些特殊限制,总数也不会少于2.5M条记录,其中58K标记为1,并且限制不是完全合乎逻辑)。是否有特殊做法来处理此类数据?
现在,如果我只编写一个始终返回0的函数,则精度为99.56%!神经网络是一个合适的选择吗?如果不是,我该怎么办?如果是,该如何处理?
tnx
答案 0 :(得分:0)
您可以尝试分别给两个类别的标记为1的样本或小型批次样本赋予较高的权重,以使网络显示的两个类别的样本数量相同。
对于第一种方法,诸如Keras之类的框架提供了为每个类包括权重因子的选项:
class_weights = {
0: 1.0,
1: 43.0,
}
model.fit(X, y, ..., class_weight=class_weights)
scikit-learn有一种自动计算类权重的方法,如this comment on Kaggle
在这种情况下,精度不是衡量网络性能的好方法。精度,第1类的召回率或类似的度量标准可能会更好地理解模型的性能。