нейронная сеть с преимущественно нулевой целью - PullRequest
0 голосов
/ 22 апреля 2019

Я очень новичок в нейронных сетях.У меня есть набор данных, который содержит 16M записей, в которых только 70K помечены как 1, а остальные равны 0 (даже при установке некоторых специальных ограничений общая сумма будет не менее 2,5M записей, в которых 58K помечена как 1, и ограничение невполне логично также).Есть ли какая-то особая практика для работы с такими данными?

Теперь, если я просто напишу функцию, которая всегда будет возвращать 0, точность будет 99,56%!Является ли нейронная сеть подходящим вариантом вообще?Если нет, то какова моя альтернатива, и если да, как с этим бороться?

tnx

1 Ответ

1 голос
/ 22 апреля 2019

Можно попытаться придать больший вес образцам, помеченным как 1, или пробным мини-пакетам из обоих классов по отдельности, чтобы в сети отображалось одинаковое количество примеров из обоих классов.

Для первого метода - каркасынапример, Keras дают возможность включить весовой коэффициент для каждого класса:

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

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

scikit-learn имеет метод автоматического вычисления весов классов, как показано в в этом комментарии к Kaggle

Точность не является хорошим способом измерения производительности сети в этом случае.Точность, напомним, для класса 1 или аналогичных мер может дать лучшее понимание производительности модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...