Пример нейронной сети для классификации многомерных объектов на два набора - PullRequest
6 голосов
/ 29 сентября 2010

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

Все примеры классификации, которые я нашел, являются двумерными.Вот некоторые из них:

Я пытаюсь отличить редкие события от ряда входов, которые обычно стабильны. Особенности - это пары ключ-значение, где значение обычно может быть дискретизировано как небольшое число.Доступные данные о тренировках для первой категории огромны, но только с несколькими наборами тренировок для второй категории, если это имеет значение.

Пример тренировочного комплекта

Категория A

[2, 1, 0, 1, 4, 3] -> A  
[1, 1, 2, 3, 3, 0] -> A
[0, 0, 1, 3, 2, 0] -> A

Категория B

[0, 4, 4, 4, 4, 3] -> B

Пример классификации

[1, 3, 4, 4, 4, 0] -> ??? (probably B)

Оценка достоверности, например.«85% уверенности в B» было бы полезно для определения порога для редкого события.

Является ли нейронная сеть лучшим решением, и есть ли какие-либо библиотеки .NET с этой встроенной функцией?

1 Ответ

2 голосов
/ 29 сентября 2010

На самом деле все эти техники машинного обучения имеют свои плюсы и минусы. При использовании NN (однослойного персептрона), вам необходимо учитывать, достаточно ли у вас данных для тренировки. Технически говоря, вы должны быть в состоянии покрыть все ячейки внутри измерений, чтобы иметь хороший результат.

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

Существует около 5-6 классификаторов для повышения +/- и, честно говоря, похоже, что тип классификатора в большинстве случаев выбирается субъективно. С другой стороны, некоторые люди используют несколько классификаторов и сравнивают результат.

С OpenCV так просто подключить другой классификатор, что вы на правильном пути. Я использовал OpenCV в C ++ с NN-классификаторами для моего проекта, и результат был очень хорошим:

http://www.springerlink.com/content/j0615767m36m0614/

...