Как реализовать факт, связанный с ложно положительным или ложно отрицательным балансом в нейронной сети? - PullRequest
6 голосов
/ 26 марта 2010

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

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

Ответы [ 2 ]

7 голосов
/ 26 марта 2010

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

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

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

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

2 голосов
/ 26 марта 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.

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