Обсуждение статьи "Практическое использование нейросетей Кохонена в алгоритмическом трейдинге (Часть I). Инструментарий"

 

Опубликована статья Практическое использование нейросетей Кохонена в алгоритмическом трейдинге (Часть I). Инструментарий:

Данная статья развивает идею использования сетей Кохонена в МетаТрейдер 5, освещавшуюся в нескольких предыдущих материалах. Исправленные и усовршенствованные классы предоставляют инструментарий для решения прикладных задач.

В унаследованных исходных кодах не используется нормализация входных данных, однако она очень важна для случаев, когда разные компоненты (признаки) входных векторов имеют разный диапазон значений. А это именно так и в результатах оптимизации советников, и при сведении воедино показателей различных индикаторов. Что касается результатов оптимизации, то в них величины с общей прибылью, исчисляемые в десятках тысяч, соседствуют, например, с долями единицы коэффициента Шарпа или однозначными величинами фактора восстановления.

Обучать сеть Кохонена на таких "разномасштабных" данных нельзя, так как сеть фактически будет учитывать только большие компоненты и практически игнорировать малые. Это можно наглядно увидеть на следующем изображении, полученном с помощью программы, которую мы поэтапно рассмотрим в рамках данной статьи и приложим в конце. В программе имеется возможность генерировать случайные входные вектора, в которых три компоненты определены соответственно в диапазонах [0, 1000], [0, 1] и [-1, +1]. Специальный входной параметр UseNormalization позволяет включать и отключать нормализацию.

Посмотрим на финальную структуру сети Кохонена в трех плоскостях, соответствующих трем размерностям векторов.  Сначала результат обучения сети без нормализации.

Результат обучения сети Кохонена без нормализации входных данных

Результат обучения сети Кохонена без нормализации входных данных

А теперь — с нормализацией.

Результат обучения сети Кохонена с нормализацией входных данных

Результат обучения сети Кохонена с нормализацией входных данных

Автор: Stanislav Korotky

 
В дальнейшем для задачи выбора оптимальных параметров эксперта будем использовать CSOMDisplay, а для прогнозирования — CSOM.

К сожалению, полностью забыл тему. Прочтение статей по ссылкам понимания не дало.


Допустим, есть три входных параметра, которые оптимизировали. Кохонен сделал кластеризацию и визуализировал. В чем удобство поиска оптимальных параметров?

По прогнозированию совсем не понял. Если возможно, тоже в двух словах идею.

 

В будущем хотелось бы увидеть такой практический пример.


Вводим какой-нибудь дополнительный входной параметр в советник. И оцениваем его зависимость от других.

 

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

хотя бы в теории понять как это можно эффективно использовать. На ум приходит только разделение временного ряда на несколько "состояний"

 
fxsaber:

Допустим, есть три входных параметра, которые оптимизировали. Кохонен сделал кластеризацию и визуализировал. В чем удобство поиска оптимальных параметров?

По прогнозированию совсем не понял. Если возможно, тоже в двух словах идею.

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

 
fxsaber:

Вводим какой-нибудь дополнительный входной параметр в советник. И оцениваем его зависимость от других.

Кохонен позволяет это сделать визуально - в виде карты. Если речь об одной цифре - то это к другим методам.

 
Maxim Dmitrievsky:

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

хотя бы в теории понять как это можно эффективно использовать. На ум приходит только разделение временного ряда на несколько "состояний"

Может быть во второй части найдутся кое-какие ответы. При сохранении закона распределения данных устойчивость должна быть. Для контроля обобщающей способности предлагается выбирать размер карты и/или продолжительность обучения с помощью валидационной выборки.

Некоторые примеры использования - во второй части.

 
Stanislav Korotky:

Может быть во второй части найдутся кое-какие ответы. При сохранении закона распределения данных устойчивость должна быть. Для контроля обобщающей способности предлагается выбирать размер карты и/или продолжительность обучения с помощью валидационной выборки.

Некоторые примеры использования - во второй части.

да, пардон, не увидел сразу что есть уже метод останова через валидационную выборку. Тогда подождем примеров, интересно :)

 
Уточнение/дополнение: по состоянию на текущий момент версия ALGLIB, портированная на MQL5, уже предоставляет аггломеративную иерархическую кластеризацию - см. ClusterizerRunAHC в файле MQL5/Include/Math/Alglib/dataanalysis.mqh.
Причина обращения: