Как реализовать факт, связанный с ложноположительным и ложноотрицательным балансом в нейронной сети?

У меня проблема с классификацией "да/нет", когда ложноположительные результаты хуже, чем ложноотрицательные результаты.

Есть ли способ реализовать этот факт в нейронной сети, особенно в MATLAB Neural Network Toolbox?


person liborw    schedule 25.03.2010    source источник


Ответы (2)


Что вам нужно, так это мета-классификатор с учетом затрат (мета-классификатор работает с любым произвольным классификатором, будь то ANN, SVM или любой другой).

Это можно сделать двумя способами:

  • переоценка учебных экземпляров в соответствии с матрицей затрат. Это делается путем повторной выборки данных, чтобы конкретный класс был чрезмерно представлен, поэтому построенная модель более чувствительна к этому конкретному классу, а не к другим классам.
  • прогнозирование класса с минимальной ожидаемой стоимостью ошибочной классификации (а не наиболее вероятного класса). Идея здесь состоит в том, чтобы свести к минимуму общие ожидаемые затраты, чаще совершая дешевые ошибки и реже дорогостоящие ошибки.

Одним из алгоритмов, реализующих первый подход к обучению, является SECOC, который использует коды исправления ошибок; в то время как примером второго подхода является MetaCost, который использует бэггинг улучшить вероятностные оценки классификатора.

person Amro    schedule 26.03.2010

Вы можете использовать пользовательскую функцию стоимости. Вот что я сделал недавно:

cost(true negative) = 0
cost(true positive) = 0
cost(false positive) = infinity
cost(true negative) = L

Это может быть выполнено, например. по этой формуле:

cost(y, t) = (1 - t) log (1 - y) - L * t * (1 - y)

Это подразумевает некоторое получение и реализацию, конечно, и не выходит за рамки набора инструментов Matlab.

person bayer    schedule 26.03.2010