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

 
Alexey Burnakov:
Юрий, спасибо. Я подумаю.

Вопрос правда есть у нас. Как вы предикторы отобрали?

Я никак их не отбираю. Этим занимается VMR. XXI век уже более 16 лет как наступил и всю черновую работу должны выполнять автоматические системы, а не люди.

Yury Reshetov:

... Если более конкретно, то VMR сокращает гиперпространство, редуцируя некоторые признаки.

Есть даже конкретный пример, когда VMR автоматом редуцирует один из предикторов. См. Прогнозируем банкротства

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

Прогнозируем банкротства - Векторная машина Решетова
  • sites.google.com
Авторы: Myoung-Jong Kim, Ingoo Han опубликовали статью под названием: «The discovery of experts decision rules from qualitative bankruptcy data using genetic algorithms». Судя по оригинальной авторской статье, выборка предназначалась для генетических алгоритмов, т. к. предполагалось, что для других алгоритмов она не по зубам. Однако, вынужден...
 
Надо попробовать ваш алгоритм в деле. Я слабо себе представляю, почему он может так замечательно работать.
 
Yury Reshetov:

Я никак их не отбираю. Этим занимается VMR. XXI век уже более 16 лет как наступил и всю черновую работу должны выполнять автоматические системы, а не люди.


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

Почему я так утверждаю?

Для меня имеется простой и для трейдинга базовый тест.

Учим модель. Проверяем ее на выборке, которая по времени находится вне выборки обучения, и сравниваю ошибки. Во-первых, ошибки не могут быть около 50% - это вообще модель не обучаемая. Рассматриваем ошибки менее 40%. Если на выборке обучения и валидации эти ошибки примерно равны, то модель не переобучена. Если эти ошибки существенно разные, а могут расходиться в разы, особенно если при обучении ошибка менее 10%, то модель переобучена. ПРИЧИНОЙ ПЕРЕОБУЧЕННОСТИ является наличие шумовых предикторов, которые алгоритм обучения модели НЕ ОТБРАСЫВАЕТ.

До сих пор мне не попадались наборы предикторов, среди которых бы отсутствовал шум. И с этим шумом не справлялись все алгоритмы отбора предикторов, не справлялись идеи огрубления (регуляризации) моделей!  

 

Так что Ваше мнение ошибочно, а учитывая получение переобученных моделей, опасно на реале, который всегда "вне выборки". 

 
Alexey Burnakov:

Предлагаю задачу номер один. Позже выложу ее решение. СанСаныч ее уже видел, прошу не говорить ответ.

 

Введение: для построения алгоритма торговли необходимо знать, какие факторы будут положены в основу предсказания цены, или тренда, или направления открытия сделки. Отбор таких факторов непростая задача, и она бесконечносложная.

 

Во вложении архив с искуственным набором данных формата csv, который сделал я.

 Данные содержат 20 переменных с префиксом input_, и одну крайнуюю правую переменную output.

 

Переменная output зависит от некоторого поднабора переменных input (поднабор может содержать от 1 до 20 inputs).

Задача: с помощью любых методов (машинного обучения) отобрать переменные input, с помощью которых можно определить состояние переменной output на существующих данных.

Ещё какие нибудь задачи будут с бинарной классификацией? А то я пришёл к шапочному разбору, когда уже выложили и результаты и метод генерации выборки.

Хотелось бы поучаствовать и заодно испытать новую версию моего бинарного классификатора.

 
IvannaSvon:
Юрий, ответьте пожалуйста на личное сообщение.

Скрипт в аттаче.

Датасет был взят с EURUSD H1

Файлы:
 
Yury Reshetov:

Ещё какие нибудь задачи будут с бинарной классификацией? А то я пришёл к шапочному разбору, когда уже выложили и результаты и метод генерации выборки.

Хотелось бы поучаствовать и заодно испытать новую версию моего бинарного классификатора.

Задачи всегда есть :)

В архиве два файла - train.csv и test.csv. Последняя колонка в файлах это требуемый результат бинарной классификации. Нужно использовать файл train.csv для обучения модели, затем применить модель на test.csv. Уже известными целевыми результатами для test.csv пользоваться заранее нельзя, они нужны только для финальной проверки. Данные взяты с eurusd d1, класс 0 или 1 - падение или рост цены за следующий бар. Если модель правильно предскажет результат для test.csv хотябы в 6 случаев из 10, то уже можно пробовать торговать ей на Форексе, в принципе сливать не будет, но и большого профита ждать тоже не стоит. Если правильно предскажет уже в 7 случаев из 10 (и выше) - это верный путь к граалю, останется опробовать обучение и тест модели на других годах и месяцах, и если везде будет также - то очень отлично.

Я учёл прошлые ошибки, теперь файлы основаны на дельте баров, а не на сырых значениях. И всё нормализовано по строкам учитывая однотипные предикторы в строке, а не по колонкам. 

Сам я пробую использовать генетику для перебора вариантов предикторов. На наборе предикторов обучаю модель главных компонент с двумя кросс-валидациями, возвращаю ошибку классификации как фитнесс значение для генетики. Когда генетика упрётся в свой предел - беру финальный набор предикторов, обучаю на них нейронку с опять двумя кроссвалидациями. Финальная ошибка предсказания на тестовых данных где-то 40%. На этом начинаются плохие новости - в зависимости от параметров нейронки (количество внутренних весов, количество итераций между кросс-валидациями) зависит итоговая ошибка, она рандомно гуляет в пределах 30%-50%. Я когда-то радовался тому что получил всего 30%, но как оказалось я это не могу контролировать, и просто получаю в среднем 40%. 
Логичный вопрос зачем посередине нужна модель главных компонент? Просто у неё нету параметров обучения, подал данные, получил модель, посчитал ошибку кроссвалидации на тестовых данных. Если использовать сразу нейронку для определения фитнесс функции генетики, то очень сильно растёт время обучения, плюс неясно какие использовать параметры обучения самой нейронной сети.

 

Ещё я портировал VMR модель Юрия на R, в приложении. Взял свои данные с шумовыми предикторами, получил ошибку на тренировочных данных 30%, и ошибку на тестовых данных 60%, то есть чуда не произошло, модель переобучилась. Хотя возможно косяки при переносе кода, если кто увидит какие-то несоответствия пожалуйста дайте знать. При обучении модели у меня не хватило памяти на большую ядерную машину, использовал среднюю (параметр kernelTrickMode <- 2). По миллиону итераций на каждую колонку я ждать не мог, использовал 10000 (iterPerColumn <- 10000).

Файлы:
 
Dr.Trader:

Задачи всегда есть :)

В архиве два файла - train.csv и test.csv.

К сожалению, у меня не распаковывается RAR архив. ИМХО лучше паковать всё в ZIP. Т.к. распаковщики для ZIP форматов есть на всех платформах. К тому же, многие пользователи не используют RAR.



Dr.Trader:
Ещё я портировал VMR модель Юрия на R, в приложении. Взял свои данные с шумовыми предикторами, получил ошибку на тренировочных данных 30%, и ошибку на тестовых данных 60%, то есть чуда не произошло, модель переобучилась. Хотя возможно косяки при переносе кода, если кто увидит какие-то несоответствия пожалуйста дайте знать

Посмотрю обязательно. Хотя я недостаточно хорошо знаю R.

Порт осуществлялся вручную или через какой нибудь автомат?

 
Может быть еще кто-нибудь  попробует метода главных компонент для отбраковки шума, но предикторах имеющих тысячи наблюдений, а не так как у Dr.Trader?
 
Dr.Trader:


См.личку.
 
СанСаныч Фоменко:
Может быть еще кто-нибудь  попробует метода главных компонент для отбраковки шума, но предикторах имеющих тысячи наблюдений, а не так как у Dr.Trader?

А почему бы как раз вам и не попробовать???

пс. я пробовал уже достаточно давно, ничего интересного не получил

 

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

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