У меня проблема с классификацией "да/нет", когда ложноположительные результаты хуже, чем ложноотрицательные результаты.
Есть ли способ реализовать этот факт в нейронной сети, особенно в MATLAB Neural Network Toolbox?
У меня проблема с классификацией "да/нет", когда ложноположительные результаты хуже, чем ложноотрицательные результаты.
Есть ли способ реализовать этот факт в нейронной сети, особенно в MATLAB Neural Network Toolbox?
Что вам нужно, так это мета-классификатор с учетом затрат (мета-классификатор работает с любым произвольным классификатором, будь то ANN, SVM или любой другой).
Это можно сделать двумя способами:
Одним из алгоритмов, реализующих первый подход к обучению, является SECOC, который использует коды исправления ошибок; в то время как примером второго подхода является MetaCost, который использует бэггинг улучшить вероятностные оценки классификатора.
Вы можете использовать пользовательскую функцию стоимости. Вот что я сделал недавно:
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.