Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 412
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Мои решения сначала основывались на OpenNN (C++).
Теперь же набив шишек я перешел на замечательный проект Keras (Python).
В основном я занимаюсь глубоким обучением прогнозирования проблем классификации.
Значит мы занимаемся одной областью МО. Keras хороший пакет, тем более, что он портирован на R.
Только я не понял вопрос в чем?
Удачи
Значит мы занимаемся одной областью МО. Keras хороший пакет, тем более, что он портирован на R.
Только я не понял вопрос в чем?
Удачи
вот это уже интересно.. значит нужно будет доп тесты провести, может быть и нет в этой рнн никакого смысла, как думалось до этого
Единственный плюс это подбор весов в оптимизаторе одновременно с другими параметрами системы
я сейчас пытаюсь выяснить насколько хорошо она считает внутри диапазона известных данных. Таблицу умножения например.
Обновление.
Дополнительные эксперименты после изменения советника показали следующие результаты, в сравнении с обычным MLP 3-5-1.
Для проверок использовались разные формулы:
//double func(double d1,double d2,double d3 ){return d1*d2;} //ошибка 0-2% , т.к. умножение заложено в формулы. 2% получается т.к. генетический оптимизатор не всегда останавливается не на идеальном решении. Но есть и абсолютно точное решение с ошибкой = 0.
В итоге можно сделать вывод, что обычный MLP имеет ошибку в 2-3 раза меньше, чем RNN Решетова. Возможно, часть этой ошибки возникает из за того, что генетический оптимизатор терминала МТ5 останавливается не на идеальном решении.//double func(double d1,double d2,double d3 ){return d1*d2*d3;}// ошибка 0-2% умножение заложено в формулы, на MLP 1%
//double func(double d1,double d2,double d3 ){return MathSin(d1);}// ошибка 2-6%, на MLP 0,1%
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathSin(d2)*MathSin(d3);}// ошибка 2%, на MLP 1%
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathSin(d2)*MathSqrt(d3);}// ошибка 3-4%, на MLP 1%
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathPow(d2,.33)*MathSqrt(d3);}// ошибка 8-4%, на MLP 1.5%
//double func(double d1,double d2,double d3 ){return MathPow(d1,2)*MathPow(d2,.33)*MathSqrt(d3);}// ошибка 8-4%, на MLP 1.5%
я сейчас пытаюсь выяснить насколько хорошо она считает внутри диапазона известных данных. Таблицу умножения например.
Обновление.
Дополнительные эксперименты после изменения советника показали следующие результаты, в сравнении с обычным MLP 3-5-1.
Для проверок использовались разные формулы:
//double func(double d1,double d2,double d3 ){return d1*d2;} //ошибка 0-2% , т.к. умножение заложено в формулы. 2% получается т.к. генетический оптимизатор не всегда останавливается не на идеальном решении. Но есть и абсолютно точное решение с ошибкой = 0.
В итоге можно сделать вывод, что обычный MLP имеет ошибку в 2-3 раза меньше, чем RNN Решетова. Возможно, часть этой ошибки возникает из за того, что генетический оптимизатор терминала МТ5 останавливается не на идеальном решении.//double func(double d1,double d2,double d3 ){return d1*d2*d3;}// ошибка 0-2% умножение заложено в формулы, на MLP 1%
//double func(double d1,double d2,double d3 ){return MathSin(d1);}// ошибка 2-6%, на MLP 0,1%
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathSin(d2)*MathSin(d3);}// ошибка 2%, на MLP 1%
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathSin(d2)*MathSqrt(d3);}// ошибка 3-4%, на MLP 1%
//double func(double d1,double d2,double d3 ){return MathSin(d1)*MathPow(d2,.33)*MathSqrt(d3);}// ошибка 8-4%, на MLP 1.5%
//double func(double d1,double d2,double d3 ){return MathPow(d1,2)*MathPow(d2,.33)*MathSqrt(d3);}// ошибка 8-4%, на MLP 1.5%
Да, интересные результаты, возможно полным перебором было бы поточнее
Да, интересные результаты, возможно полным перебором было бы поточнее
было бы, но через несколько недель или месяцев... 8 подбираемых коэффициентов с шагом в 1% 1008= 10000000000000000 итераций, да и терминал сам переключается на генетику, при таком количестве.
Подскажите, классифицирующий МЛП из алглиб я так понял требует как минимум 2 выхода, как с этим работать? нигде ни справки, ни описания.. жесть )
Подскажите, классифицирующий МЛП из алглиб я так понял требует как минимум 2 выхода, как с этим работать? нигде ни справки, ни описания.. жесть )
Да 2, из справки http://alglib.sources.ru/dataanalysis/neuralnetworks.php
Особым случаем являются нейронные сети с линейным выходным слоем и SOFTMAX-нормализацией выходов. Они используются для задач классификации, в которых выходы сети должны быть неотрицательны и их сумма должна быть строго равна единице, что позволяет использовать их, как вероятности отнесения входного вектора к одному из классов (в предельном случае выходы обученной сети сходятся к этим вероятностям). Число выходов такой сети всегда не менее двух (ограничение, диктуемое элементарной логикой).
Да, из справки http://alglib.sources.ru/dataanalysis/neuralnetworks.php
Особым случаем являются нейронные сети с линейным выходным слоем и SOFTMAX-нормализацией выходов. Они используются для задач классификации, в которых выходы сети должны быть неотрицательны и их сумма должна быть строго равна единице, что позволяет использовать их, как вероятности отнесения входного вектора к одному из классов (в предельном случае выходы обученной сети сходятся к этим вероятностям). Число выходов такой сети всегда не менее двух (ограничение, диктуемое элементарной логикой).
А, ну то есть мы подаем вероятность того или иного исхода, например вероятность на покупку 0.9, тогда на продажу 0.1, один массив будет служить буфером для вероятностей на покупку, другой на продажу, заполняем их этими значениями, и после обучения в них и будет скидывать по отдельности вероятности на покупку и на продажу, правильно понимаю?
А, ну то есть мы подаем вероятность того или иного исхода, например вероятность на покупку 0.9, тогда на продажу 0.1, один массив будет служить буфером для вероятностей на покупку, другой на продажу, и после обучения в них и будет скидывать по отдельности вероятности, правильно понимаю?
И того, что я читал, - у меня сложилось такое же мнение.
Хотя не знаю в чем его преимущество.. имея 1 выход, тоже получим вероятности - около 0 (или -1) Buy, а около 1 Sell. (Или наоборот, смотря как обучите).
Может он полезен, если 3 или больше выходов? Ведь 1 выход сложно будет использовать.... для 3 или 4 задач (хотя тоже можно использовать 0, 0.5 и 1 как классы Buy, ждем, Sell)
И того, что я читал, - у меня сложилось такое же мнение.
Хотя не знаю в чем его преимущество.. имея 1 выход, тоже получим вероятности - около 0 (или -1) Buy, а около 1 Sell. (Или наоборот, смотря как обучите).
Может он полезен, если 3 или больше выходов? Тогда 1 выход сложно будет использовать.... для 3 или 4 задач (хотя тоже можно использовать 0, 0.5 и 1 как классы Buy, ждем, Sell)
ну да, наверное они так сделали что бы можно было больше 2-х классов иметь.. тога это уже больше кластеризация наверное будет и можно юзать другие методы типа k-means :)