Марат
Марат личный блог
13 ноября 2019, 09:32

Пространные рассуждения о ML

 Если вы посмотрите на выступление какого то гуру 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, когда лучше попроще.


15 Комментариев
  • sortarray sortarray
    13 ноября 2019, 09:57
    фигасе цитата, как говаривал эфиоп «мороз»©
  • Replikant_mih
    13 ноября 2019, 10:55
    Почему все вообще упоминают результаты на train — это вообще внутренняя инфа, на тесте-то не всегда цифры репрезентатианы — из-за подгонки и т.д., а трейн то вообще «внутренний» показатель.


    И мне кажется что не надо воспринимать ML как волшебную пилюлю, как все или ничего. Можно использовать ML не вместо, а вместе с прочими подходами.
  • Les Paul
    13 ноября 2019, 11:12
    «то высокий шанс увидеть мекающее и бекающее существо»
    это не всегда так, но есть очень простое объяснение, которое наблюдается постоянно — людям, которым есть что сказать, очень претит объяснять сложные вещи на пальцах тем, кто даже базовые термины не понимает :)
    а еще презентацию надо нарисовать, в тайминг уложится, все это очень затратно и… бессмыслено ;)

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

    ну и как следствие, получается что-то вроде этого
    «ML новая область и многим фишкам применяемым там, нет какого то четкого математического обоснования»

    • SergeyJu
      13 ноября 2019, 12:08
      Les Paul, вопрос опыта. Углубленный математик (программист, физик) имеет до некоторого возраста малый опыт написания документов, публичных выступлений, вообще гуманитарного аспекта деятельности (исключения возможны). Поэтому мэкают и бэкают. 
      С возрастом преподавательская деятельность и организация деятельности подчиненых заставляет их привести в порядок свои коммуникативные навыки. Но в это время они уже не кодеры. 
      • Les Paul
        13 ноября 2019, 12:31
        SergeyJu, так и я об этом, у молодых дарований нет мотивации к развитию коммуникативных навыков. :)
  • Simix
    13 ноября 2019, 11:29
    Новое это хорошо забытое старое.
    Подросло новое поколение, которым тоже стало интересно.
    Назвали всё новыми модными словами, прикольно должно быть :)
    • VladMih
      13 ноября 2019, 11:36
      Simix, да, уж…
    • SergeyJu
      13 ноября 2019, 12:09
      Simix, прогресс в ML идет очень быстро. Наш круг деятельности на обочине этого прогресса. Да и прорывы, если они есть, не становятся достоянием ширнармасс в силу высокой ценности для тех, кто эти прорывы сделал. 
  • MS
    13 ноября 2019, 12:16
    Стабильности не было вроде как в «Москва слезам не верит».
    Ну, и максимальный набор данных, конечно же, наиболее верный для выводов.
  • Adam Kazimirovich
    13 ноября 2019, 14:40
    Фраза такая есть, но только из другого фильма:
  • Kot_Begemot
    13 ноября 2019, 16:12
    Бустинг надо регулиризовать и стрэпить. В RF это делается само сабой.

    А то, что бустинг есть продолжение форестинга… это что-то странное...

    Принципиально бустинг — обычная декомпозиция, как фурье или ARIMA, а форест это нифига не декомпозиция, это… да по сути это простая модель много раз построенная на рекомбинированных данных, чтобы не было оверфитинга. То есть бустинг — много моделек, нелинейно усиливающих друг друга, а  форестинг — одна. Хотя в лесу, якобы, деревьев много — но все они что-то одинаковые... 

  • Сергей Михеев
    23 ноября 2019, 21:26
    «ML новая область и многим фишкам применяемым там, нет какого то четкого математического обоснования. »
    ML уже далеко не новая область, она просто стала популярна в последнее время в виду существенно роста вычислительных мощностей (раньше на обучение модели могли уходить месяцы на суперкомпьютерах, а сейчас минуты на средненьком ПК, а так же доступности для широких масс высокоуровневых, например того же TensorFlow.
    Что касается четкого математического обоснование, то с этим все в порядке. Другой вопрос, чтобы его осознать, нужно быть не меньше чем кандидатом математических наук.
    Но есть достаточно доступные курсы, которые дают общее понимание математического аппарата, который лежит в основе, например вот этот: https://www.coursera.org/learn/machine-learning/home/welcome
  • Replikant_mih
    24 сентября 2020, 18:18

    >>«Для модельки с одними параметрами, порог в 55% будет самое то, для другой лучшим будет 57,5%. Я не говорю о гиперпараметрах в самих модельках.»

     

    О да, для меня это целое направление анализа. Смотрю как распределяется вероятность… получить вероятность от модели, мат. ожидание этого распределение и как выглядит — это в том числе использую и для оценки качества модели и для определения порогов, но пока не все мне ещё ясно, думаю, для меня там ещё остались резервы для роста.

  • Replikant_mih
    24 сентября 2020, 18:21

     >>«Если сравнить xgboost с RF то увидим одно очень неприятное явление, xgboost рулит на test, но когда приходится показывать себя в боевых условиях то говоря словами Леонова в фильме Афоня: «стабильности нет»»

     

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

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн