Ответ 1
АлгоритмkNN не нуждается в большой настройке, в отличие от нейронных сетей, поэтому вы можете легко получить хорошую производительность, но многослойный персептрон может превзойти kNN. В настоящее время я считаю, что лучший результат достигается с помощью глубокого обучения, вы должны, например, взглянуть на сверточную нейронную сеть.
Из Википедии:
CNN состоит из одного или нескольких сверточных слоев с полностью (совпадающие с типичными искусственными нейронными сети) сверху. Он также использует привязанные веса и объединительные слои. Эта архитектура позволяет CNN использовать двумерную структуру входные данные. По сравнению с другими глубокими архитектурами, сверточными нейронные сети начинают демонстрировать превосходные результаты в обоих изображениях и речи. Их также можно обучить стандартным обратное распространение. CNN легче тренировать, чем другие регулярные, глубокие, нейронных сетей с обратной связью и имеют гораздо меньше параметров для что делает их привлекательной архитектурой для использования.
Говоря о вашем MLP, существует множество алгоритмов для поиска лучших параметров, например, для поиска сетки или оптимизации роя. Мне нравится использовать генетический алгоритм для настройки параметров NN, он довольно прост и обеспечивает хорошую производительность.
Я рекомендую вам JGap, хорошую генетическую структуру алгоритма в java, которая может быть использована из коробки:)
Вот презентация генетического алгоритма JGAP, которая была бы лучше, чем любая из моих презентаций:
Генетические алгоритмы (GA) - это алгоритмы поиска, которые работают через процесс естественного отбора. Они начинаются с образца набора потенциальные решения, которые затем эволюционируют к набору более оптимальных решения. В наборе выборки бедные решения, как правило, умирают в то время как лучшие решения сопрягаются и распространяют их выгодные черты, тем самым вводя больше решений в набор, который может похвастаться больший потенциал (общий размер набора остается постоянным, для каждого нового добавлено решение, старый удаляется). Небольшая случайная мутация помогает гарантируют, что набор не застаивается и просто заполняется многочисленными копии того же решения.
В общем, генетические алгоритмы имеют тенденцию работать лучше, чем традиционные алгоритмы оптимизации, поскольку они с меньшей вероятностью будут сбиты с пути локальными оптимумами. Это связано с тем, что они не используют одноточечный правила перехода для перехода от одного экземпляра в решении пространство другому. Вместо этого GA использует весь набор решения, распределенные по всему пространству решений, все из которых экспериментируя с многими потенциальными оптимумами.
Однако, чтобы генетические алгоритмы работали эффективно, несколько критерии должны быть выполнены:
Должно быть относительно легко оценить, как "хорошее" потенциальное решение относится к другим потенциальным решениям.
Должно быть возможно разбить потенциальное решение на отдельные части которые могут варьироваться независимо. Эти части становятся "генами" в генетический алгоритм.
Наконец, генетические алгоритмы лучше всего подходят для ситуаций, когда "хорошего" ответа будет достаточно, даже если это не самый лучший ответ.