Если вы посмотрите на выступление какого то гуру ML или разработчика софта под это дело, то высокий шанс увидеть мекающее и бекающее существо, рассуждающее в духе «ну мы точно не знаем как это работает, но эмпирически мы получили что вот если взять куриную косточку смешать ее с пеплом единорога и трижды ударить в бубен, то результат получится очень даже ничего...». ML новая область и многим фишкам применяемым там, нет какого то четкого математического обоснования.
Я само собой тоже шаманю, бью в бубны. Например-стоил ли взять максимально большой набор данных для train или лучше брать последние как наиболее актуальные. Или например работа с фичами-допустим посчитал я модельку для первых 2 лет, оказалось что так и так наиболее актуальны из них 10. Стоит ли в следующий train брать только их, или стоит опять брать полный набор фичей. Как насчет порога вероятности? Для модельки с одними параметрами, порог в 55% будет самое то, для другой лучшим будет 57,5%. Я не говорю о гиперпараметрах в самих модельках. То есть если прикинуть все возможные комбинации, то мы получим сотни если не тысячи вариантов, и сразу возникает вопрос о подгонке. Впору забить на все эти ML и вернуться к старомы доброму надра… ию в WealthhLab.
Вот например берем те же данные, но решает задачу прогнозирования в xgboost которая считается развитием RF. Опять не паримся по поводу гиперпараметров (хотя они конечно очень важны), а просто смотрим что у ней на train, что на test, а что на out.
Сразу бросается в глаза, что показатели accuracy у ней гораздо выше, если в предыдущем примере RF показывал на train что то вроде 60%-65%, то xgboost легко выбивает под 70% (если усложнить можно нарисовать и 99%). Но при выборе условия на out для входа в сделку порога в 55%, мы получаем много много сделок (что похвально) с весьма низкими значениями средней профитности (что понятно иначе чем пачалькой не назвать).
2011<br />count 2112.00
mean -0.01
2012<br />count 211.00
mean 0.72
2013<br />count 928.00
mean 0.18
2014<br />count 1182.00
mean 0.33
2015<br />count 341.00
mean 0.86
2016<br />count 172.00
mean 0.83
2017<br />count 458.00
mean 0.22
2018<br />count 87.00
mean 0.23
Ну что такое средний профит в 0,23%? Половину сожрет комиссия, половину проскальзывание. Зато в некоторые годы сделок очевидно слишком много, впору повышать порог входа. Вопрос как об этом знать заранее?! Ну допустим на основе accuracy на test периоде-начинаю бить в бубны, что в ML называют словом «эвристика». Когда нет четкого обоснования data scientists прикрывают свою голую жопу этим словом. Вот входы с порогом в 57,5%:
2011<br />count 1340.00
mean 0.02
2012<br />count 79.00
mean 0.88
2013<br />count 505.00
mean 0.24
2014<br />count 655.00
mean 0.49
2015<br />count 143.00
mean 1.02
2016<br />count 35.00
mean 0.72
2017<br />count 148.00
mean 0.31
2018<br />count 23.00
mean 0.61
Если сравнить xgboost с RF то увидим одно очень неприятное явление, xgboost рулит на test, но когда приходится показывать себя в боевых условиях то говоря словами Леонова в фильме Афоня: «стабильности нет». Глядя по годам — то мало сделок, то много, то приличная средняя доходность то так себе. Классический пример overfittinga, когда лучше попроще.
И мне кажется что не надо воспринимать ML как волшебную пилюлю, как все или ничего. Можно использовать ML не вместо, а вместе с прочими подходами.
это не всегда так, но есть очень простое объяснение, которое наблюдается постоянно — людям, которым есть что сказать, очень претит объяснять сложные вещи на пальцах тем, кто даже базовые термины не понимает :)
а еще презентацию надо нарисовать, в тайминг уложится, все это очень затратно и… бессмыслено ;)
по этому на сцену зачастую попадают либо те, кто не особо понимает, но умеет красиво говорить, либо те, кто как собака Павлова, все понимает, но сказать не может.
ну и как следствие, получается что-то вроде этого
«ML новая область и многим фишкам применяемым там, нет какого то четкого математического обоснования»
С возрастом преподавательская деятельность и организация деятельности подчиненых заставляет их привести в порядок свои коммуникативные навыки. Но в это время они уже не кодеры.
Подросло новое поколение, которым тоже стало интересно.
Назвали всё новыми модными словами, прикольно должно быть :)
Ну, и максимальный набор данных, конечно же, наиболее верный для выводов.
А то, что бустинг есть продолжение форестинга… это что-то странное...
Принципиально бустинг — обычная декомпозиция, как фурье или ARIMA, а форест это нифига не декомпозиция, это… да по сути это простая модель много раз построенная на рекомбинированных данных, чтобы не было оверфитинга. То есть бустинг — много моделек, нелинейно усиливающих друг друга, а форестинг — одна. Хотя в лесу, якобы, деревьев много — но все они что-то одинаковые...
ML уже далеко не новая область, она просто стала популярна в последнее время в виду существенно роста вычислительных мощностей (раньше на обучение модели могли уходить месяцы на суперкомпьютерах, а сейчас минуты на средненьком ПК, а так же доступности для широких масс высокоуровневых, например того же TensorFlow.
Что касается четкого математического обоснование, то с этим все в порядке. Другой вопрос, чтобы его осознать, нужно быть не меньше чем кандидатом математических наук.
Но есть достаточно доступные курсы, которые дают общее понимание математического аппарата, который лежит в основе, например вот этот: https://www.coursera.org/learn/machine-learning/home/welcome
>>«Для модельки с одними параметрами, порог в 55% будет самое то, для другой лучшим будет 57,5%. Я не говорю о гиперпараметрах в самих модельках.»
О да, для меня это целое направление анализа. Смотрю как распределяется вероятность… получить вероятность от модели, мат. ожидание этого распределение и как выглядит — это в том числе использую и для оценки качества модели и для определения порогов, но пока не все мне ещё ясно, думаю, для меня там ещё остались резервы для роста.
>>«Если сравнить xgboost с RF то увидим одно очень неприятное явление, xgboost рулит на test, но когда приходится показывать себя в боевых условиях то говоря словами Леонова в фильме Афоня: «стабильности нет»»
Щас допиливаю бэктестер, который из папочки подгружает заботливо сложенные туда пайплайны с обученными моделями, далее мерджит по времени, а дальше уже можно тестировать разные варианты, ну и вообще смотреть как на OSS себя ведет и т.д., замерять уже более трейдерские метрики и т.д.