2012-05-20 5 views
7

Я должен выбрать между SVM и нейронными сетями для некоторого приложения обработки изображений. Классификатор должен быть достаточно быстрым для приложений в режиме реального времени, и важна точность. Поскольку это медицинское приложение, важно, чтобы классификатор имел низкую частоту отказа.SVM против MLP (нейронная сеть): по сравнению с производительностью и точностью предсказания

Какой из них лучше выбрать?

+1

Umm. Ни один из них не является быстрым по сравнению с базовыми классификаторами, такими как KNN. Насколько велики ваши векторы объектов, какой язык вы используете, сколько у вас данных по обучению? Кроме того, вы не очень четко понимаете, хотите ли вы онлайн-обучение или нет. – Junuxx

+3

KNN не быстрее. Правильно. Но это ленивый классификатор, а это означает, что его фаза прогнозирования очень медленная. – alfa

+0

Взгляните на [ELM] (http://stats.stackexchange.com/questions/81499/are-bias-weights-essential-in-the-output-layer-if-one-wants-a-universal-functio) –

ответ

23

Пара оговорок:

производительности классификатор ML может относиться к любому (я) производительности самого классификатора; или (ii) производительность этапа предиката: скорость выполнения алгоритма построения модели. В частности, в этом случае ответ совершенно другой, в зависимости от того, какая из двух предназначена для OP, поэтому я буду отвечать отдельно.

second, by Neural Network, я предполагаю, что вы имеете в виду наиболее распространенную реализацию - то есть персептрон с обратной связью с обратной связью, направленный назад.

Training Time (скорость выполнения модели строитель)

Для SVM по сравнению с NN: SVMs гораздо медленнее. Для этого есть прямая причина: тренировка SVM требует решения связанной лагранжевой двойной (а не первичной) задачи. Это квадратичная проблема оптимизации, в которой число переменных очень велико - то есть число экземпляров обучения («длина» вашей матрицы данных).

На практике, два фактора, если они присутствуют в вашем сценарии, может свести на нет этого преимущества:

  • Н.Н. обучения тривиален распараллелить (через карту уменьшение); распараллеливание обучения SVM не является тривиальным, но это также не невозможно - в течение последних восьми лет или около того, нескольких реализаций были опубликованы и доказали свою работу (https://bibliographie.uni-tuebingen.de/xmlui/bitstream/handle/10900/49015/pdf/tech_21.pdf)

  • проблемы классификации мульт-класс SVMs является два классификаторы классов. Они могут быть адаптированы для задач с несколькими классами, но это не так просто, потому что SVM используют функции прямого решения. (Отличным источником для модификации SVM для многоклассовых задач является S. Abe, Поддержка векторных машин для классификации шаблонов, Springer, 2005). Эта модификация может уничтожить любое преимущество в производительности, которое имеет у SVM более NN: например, если ваши данные имеют более двух классов, и вы выбрали настройку SVM с использованием последовательной классификационной классификации (aka one-many-many) в какие данные подаются в первый классификатор СВМ, которые классифицируют данные , либо класс I, либо другие; если класс другой, то , точка данных подается на второй классификатор, который классифицирует его класс II или другой и т. д.

Прогнозирование производительности (скорость выполнения модели)

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

Прогнозирование точности

К «интенсивность отказов» я предполагаю, что вы имеете в виду скорость ошибки, а не отказ классификаторе в использовании продукции. Если последнее, то очень мало различий между SVM и NN - обе модели, как правило, численно устойчивы.

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

Отличное разрешение SVM по сравнению с NN хорошо документировано в scientific literature. Верно, что такое сравнение зависит от данных, конфигурации и выбора параметров двух моделей. Фактически, это сравнение было настолько широко изучено - пожалуй, все мыслимое пространство параметров - и результаты настолько последовательны, что даже существование нескольких исключений (хотя я не знаю никого) в непрактичных обстоятельствах не должно мешают выводу, что SVM превосходят NN.

Почему SVM превосходит NN?

Эти две модели основаны на принципиально разных стратегиях выживания.

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

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

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

  • Выбор ядра

  • выбора параметров ядра

  • выбора величины запаса параметр

+2

Как NN обучает проблеме MapReduce? –

+0

@FredFoo отображает карту на узлы скрытого слоя и сводится к выводам (или более глубоким узлам) – Dodgie

+1

Это очень интересный пост для чтения в 2017 году. Когда Deep Learning находится на пике. SVM не превосходят NN в настоящее время во многих задачах, особенно когда размерность высока. –