首页 > 解决方案 > 目标大多为零的神经网络

问题描述

我对神经网络很陌生。我有一个包含 16M 记录的数据集,其中只有 70K 标记为 1,其余为 0(即使通过设置一些特殊限制,总数也不会少于 250 万条记录,其中 58K 标记为 1,并且限制不是也完全合乎逻辑)。处理这类数据有什么特殊的做法吗?

现在,如果我只是编写一个始终返回 0 的函数,那么准确率将是 99.56% !神经网络是一个合适的选择吗?如果不是,我的替代方案是什么,如果是,应该如何处理?

tnx

标签: machine-learningneural-network

解决方案


您可以尝试为标记为 1 的样本或分别来自两个类的小批量样本赋予更高的权重,以便向网络显示来自两个类的相同数量的示例。

对于第一种方法,Keras 等框架提供了一个选项,可以为每个类包含一个权重因子:

class_weights = {
    0: 1.0,
    1: 43.0,
}

model.fit(X, y, ..., class_weight=class_weights)

scikit-learn 有一种自动计算类权重的方法,如Kaggle 上的评论所示

在这种情况下,准确性并不是衡量网络性能的好方法。精度、第 1 类的召回率或类似措施可能会更好地理解模型的性能。


推荐阅读