Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 368

 
elibrarius:
Думаю СанСаныч имел в виду, чтобы не мучился с написанием своих кодов, а пользовался готовыми функциями из R

Дело не только в кодах. Готовый код - это реализация некоторых идей.

Смотрим

gafs - выбор предикторов генетическим алгоритмом
и заключительная модель основана на подмножестве предиктора, которое присоединено с оптимальным числом поколений, определенных ресемплированием


rfe - обратный выбор предикторов

реализует обратный выбор предикторов, основанный на ранжировании значимости предиктора.

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

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

safs - - имитируемая устойчивость выбора предикторов (отжиг предикторов)

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


При этом всегда помним: "Мусор на входе - мусор на выходе".

 
СанСаныч Фоменко:

Дело не только в кодах. Готовый код - это реализация некоторых идей.

Смотрим

gafs - выбор предикторов генетическим алгоритмом
и заключительная модель основана на подмножестве предиктора, которое присоединено с оптимальным числом поколений, определенных ресемплированием


rfe - обратный выбор предикторов

реализует обратный выбор предикторов, основанный на ранжировании значимости предиктора.

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

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

safs - - имитируемая устойчивость выбора предикторов (отжиг предикторов)

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


При этом всегда помним: "Мусор на входе - мусор на выходе".

Интересные идеи. Такое самому не написать...

Я сделал отсев по корреляции. Для начала.
Отсортировал предикторы по сумарной корреляции, потом иду от менее коррелируемых, и удаляю коррелируемые с ней. Затем повторяю это с оставшимися предикторами.

Pearson Corr M
1.00,0.97,0.86,0.88,0.84,0.80,
0.97,1.00,0.92,0.84,0.79,0.75,
0.86,0.92,1.00,0.73,0.67,0.63,
0.88,0.84,0.73,1.00,0.99,0.98,
0.84,0.79,0.67,0.99,1.00,1.00,
0.80,0.75,0.63,0.98,1.00,1.00,
Corr + Kfull - сумма столбцов
5.35,5.26,4.80,5.42,5.30,5.16,

Kfull sorted
4.80(2),5.16(5),5.26(1),5.30(4),5.35(0),5.42(3),
Inputs to delete: 1,3,4,
Inputs to keep: 0,2,5,

 
СанСаныч Фоменко:

Дело не только в кодах. Готовый код - это реализация некоторых идей.

Смотрим

gafs - выбор предикторов генетическим алгоритмом
и заключительная модель основана на подмножестве предиктора, которое присоединено с оптимальным числом поколений, определенных ресемплированием


rfe - обратный выбор предикторов

реализует обратный выбор предикторов, основанный на ранжировании значимости предиктора.

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

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

safs - - имитируемая устойчивость выбора предикторов (отжиг предикторов)

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


При этом всегда помним: "Мусор на входе - мусор на выходе".

Интересные идеи, такое конечно не написать самому, да и не придумать саму идею)

Остается вопрос, нужны ли такие сложные идеи для целей трейдинга. Я пока попробую с удаления высоко-коррелируемых, если результат будет неприемлим, то придется на R переходить
 
elibrarius:

Интересные идеи, такое конечно не написать самому, да и не придумать саму идею)

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

Вы зажаты алглибом в том смысле, что он крайне не удобен при исследовательской работе. R интерпретатор и что-либо попробовать - раз плюнуть.

Удаление высоко-коррелированных предикторов - (мультиколлиниарных) - обязательный  этап.

Корреляция между предиктором и целевой - конечно интересно. Могу подбросить идею для этого вида корреляции. Строить линейную регрессию  (бывают более изощренные) и выбрасывать те предикторы, которые имеют НЕ значащие коэффициенты. У меня ничего из этого не вышло. Может у Вас получится.

Но отбор предикторов - это обязательный этап в МО

 

В статье https://www.mql5.com/ru/articles/497 предлагалось менять крутизну ф-и активации в зависимости от числа входов.

В Algli и в R - крутизна стандартна или она само-оптимизируется в зависимости от числа входов? Или про то что внутри этих черных ящиков почти никто не знает?

Нейронные сети - от теории к практике
Нейронные сети - от теории к практике
  • 2012.10.06
  • Dmitriy Parfenovich
  • www.mql5.com
В наше время, наверное, каждый трейдер слышал о нейронных сетях и знает, как это круто. В представлении большинства те, которые в них разбираются, это какие-то чуть ли не сверхчеловеки. В этой статье я постараюсь рассказать, как устроена нейросеть, что с ней можно делать и покажу практические примеры её использования.
 
elibrarius:

В статье https://www.mql5.com/ru/articles/497 предлагалось менять крутизну ф-и активации в зависимости от числа входов.

В Algli и в R - крутизна стандартна или она само-оптимизируется в зависимости от числа входов? Или про то что внутри этих черных ящиков почти никто не знает?


Некоторые нейросетевые библиотеки предлагают пользователю широчайшие возможности по настройке создаваемой нейронной сети, вплоть до установки функции активации отдельных нейронов или добавления/удаления индивидуальных связей. Однако практика показывает, что широкая функциональность часто бывает просто не востребована - есть несколько типовых архитектур, которые нельзя существенно улучшить тонкой настройкой; аналогичная ситуация и с методами обучения нейронных сетей. Наконец, есть ещё одна причина, по которой не следует давать пользователю слишком богатый инструментарий - если нейронная сеть требует тонкой настройки, то подобная настройка не представляет сложности для автора программного пакета, но часто может поставить в тупик конечного пользователя. Отсюда вывод - хороший нейросетевой пакет не должен требовать сложной настройки. В соответствии с этим принципом, пакет ALGLIB старается разрешить автоматически как можно больше вопросов, оставляя пользователю лишь действительно важные решения.

Доступные архитектуры
Пакет ALGLIB позволяет создавать нейронные сети без скрытых слоев, с одним скрытым слоем и с двумя скрытыми слоями. Соединения идут от входного слоя к первому из скрытых (если он есть), затем ко второму, затем - к выходному. "Короткие" соединения от входного слоя к выходному отсутствуют. Скрытые слои имеют одну из стандартных сжимающих функций активации, однако для выходного слоя нейронной сети возможно большее разнообразие. Выходной слой может быть линейным (такие сети используются в задачах аппроксимации), может иметь сжимающую функцию активации (в случае, если выходы сети ограничены определенным диапазоном). Также доступны сети с ограниченной сверху (или снизу) функцией активации. В простейшем случае (граница - ноль) эта функция стремится к x при x стремящемся к +∞, и экспоненциально стремится к нулю при x стремящемся к -∞.
Особым случаем являются нейронные сети с линейным выходным слоем и SOFTMAX-нормализацией выходов. Они используются для задач классификации, в которых выходы сети должны быть неотрицательны и их сумма должна быть строго равна единице, что позволяет использовать их, как вероятности отнесения входного вектора к одному из классов (в предельном случае выходы обученной сети сходятся к этим вероятностям). Число выходов такой сети всегда не менее двух (ограничение, диктуемое элементарной логикой).
Такой набор архитектур, несмотря на свою минималистичность, достаточен для решения большинства практических задач. Отсутствие излишних деталей позволяет концентрироваться на задаче (классификация или аппроксимация), не уделяя излишнего внимания несущественным деталям (например, выбор конкретной функции активации нелинейного слоя обычно мало влияет на результат).

http://alglib.sources.ru/dataanalysis/neuralnetworks.php

 
Читал ране, но это не отвечает на вопрос(
"Скрытые слои имеют одну из стандартных сжимающих функций активации" - какую? Подстраивает ли она свои коэффициенты под число входящих соединений? Про то, что число входов влияет на результат показано было в статье. А то бахнем 100 нейронов в скрытом слое (или даже во входном), а следующие нейроны могут хорошо работать только при 5 входах...
 
elibrarius:
Читал ране, но это не отвечает на вопрос(
"Скрытые слои имеют одну из стандартных сжимающих функций активации" - какую? Подстраивает ли она свои коэффициенты под число входящих соединений? Про то, что число входов влияет на результат показано было в статье. А то бахнем 100 нейронов в скрытом слое (или даже во входном), а следующие нейроны могут хорошо работать только при 5 входах...


это только если в коде порыться или у них спросить.. если там 2 типа сетки, то, наверное сигмоид и еще какая-то на выходе, которая меняется в зависимости от того линейный он или в диапазоне

ну а с подбором архитектуры сетки это дааа... придется помаяться, благо тут хотя бы только 2 скрытых слоя задать можно, уже проще :) Где-то читал, что скрытый слой, в общем случае, должен быть в 2 раза меньше чем входной.. или больше, забыл )

 

Кстати проверил корреляцию trendlinearreg с периодами от 10 до 60 (6 штук) на графике EURUSD М1, к выходу (у меня не зигзиг, но что-то близкое).

-0.00,0.01,0.00,0.01,0.01,-0.01

корреляция от -0.01 до 0.01, т.е. ее вообще нет.

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

 
Maxim Dmitrievsky:


 Где-то читал, что скрытый слой, в общем случае, должен быть в 2 раза меньше чем входной.. или больше, забыл )

Одно из правил "Оптимальное количество нейронов в скрытом слое (# скрытых нейронов) = (# входов + # выходов)/2 , или SQRT(# входов * # выходов) "

А в сети Решетова, которую вы использовали, 2nInputs

Причина обращения: