#ml #uncertainty #catboost #medicine #blood
Всё-таки иногда попадаются и качественные научные работы ML-тематики. Зацените строгость подхода, всё сделано по лучшим практикам.
"Code for the analysis can be found at https://github.com/oizin/glucose-data-driven-prediction.
Model validation
The dataset is randomly split into a 70% training (13 279 ICU admissions) and 30% test (5682 ICU admissions) sets. Sample splits are performed by ICU admission ID to avoid potential information leakage. We evaluate all models on the test set only after finalization of hyperparameter settings to ensure unbiased assessments of model generalizability. As the algorithms were computationally expensive to train, we perform hyperparameter tuning by randomly splitting the training set into 80% development and 20% validation sets."
Ну разве что до SHAP всё-таки не дотянули. А сама работа меня заинтересовала тем, что там сравнивается мультиквантильная регрессия с "регрессией с неопределённостью" :
We develop 2 ML approaches using the Catboost gradient boosting library.39 These models were chosen as they present alternative approaches to predicting both a point estimate and uncertainty quantification through probabilistic forecasting. The first is a Catboost regression model with dual estimation of the expected outcome and the standard deviation of the prediction distribution, the ‘uncertainty regression’ model.43 This form of estimation can be performed using the class CatBoostRegressor with the argument loss_function=“RMSEWithUncertainty” in the Python version of Catboost 2.4. The second model is a combination of quantile regressions with models for quantiles of 0.025, 0.5, and 0.975, the “quantile regression” model.
Квантили дали вот какое преимущество:
In order to have clinical utility, it is important that the model can detect hyperglycemia and hypoglycemia. Detection of hyperglycemia was only slightly worse than values in the ICU normal blood glucose range. However, similar to previous research, our point estimates were unable to detect hypoglycemia at 2-hour forecasts.35 However, by forecasting an interval, we increase the potential to flag circumstances in which hypoglycemia is a risk, with 41% of hypoglycemic events captured within the prediction intervals.
Если Вы использовали одну из таких функций потерь в работе, буду рад, если поделитесь выводами об их полезности.
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8324237/
Всё-таки иногда попадаются и качественные научные работы ML-тематики. Зацените строгость подхода, всё сделано по лучшим практикам.
"Code for the analysis can be found at https://github.com/oizin/glucose-data-driven-prediction.
Model validation
The dataset is randomly split into a 70% training (13 279 ICU admissions) and 30% test (5682 ICU admissions) sets. Sample splits are performed by ICU admission ID to avoid potential information leakage. We evaluate all models on the test set only after finalization of hyperparameter settings to ensure unbiased assessments of model generalizability. As the algorithms were computationally expensive to train, we perform hyperparameter tuning by randomly splitting the training set into 80% development and 20% validation sets."
Ну разве что до SHAP всё-таки не дотянули. А сама работа меня заинтересовала тем, что там сравнивается мультиквантильная регрессия с "регрессией с неопределённостью" :
We develop 2 ML approaches using the Catboost gradient boosting library.39 These models were chosen as they present alternative approaches to predicting both a point estimate and uncertainty quantification through probabilistic forecasting. The first is a Catboost regression model with dual estimation of the expected outcome and the standard deviation of the prediction distribution, the ‘uncertainty regression’ model.43 This form of estimation can be performed using the class CatBoostRegressor with the argument loss_function=“RMSEWithUncertainty” in the Python version of Catboost 2.4. The second model is a combination of quantile regressions with models for quantiles of 0.025, 0.5, and 0.975, the “quantile regression” model.
Квантили дали вот какое преимущество:
In order to have clinical utility, it is important that the model can detect hyperglycemia and hypoglycemia. Detection of hyperglycemia was only slightly worse than values in the ICU normal blood glucose range. However, similar to previous research, our point estimates were unable to detect hypoglycemia at 2-hour forecasts.35 However, by forecasting an interval, we increase the potential to flag circumstances in which hypoglycemia is a risk, with 41% of hypoglycemic events captured within the prediction intervals.
Если Вы использовали одну из таких функций потерь в работе, буду рад, если поделитесь выводами об их полезности.
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8324237/
GitHub
GitHub - oizin/glucose-data-driven-prediction: Code for paper: Incorporating real-world evidence into the development of patient…
Code for paper: Incorporating real-world evidence into the development of patient blood glucose prediction algorithms for the ICU - GitHub - oizin/glucose-data-driven-prediction: Code for paper: In...
👍1
#ml #catboost #metrics #bugs
Утро прошло в жарких спорах о точности. Нашёл предположительный баг в том, как катбуст считает precision.
https://github.com/catboost/catboost/issues/2422
Утро прошло в жарких спорах о точности. Нашёл предположительный баг в том, как катбуст считает precision.
https://github.com/catboost/catboost/issues/2422
GitHub
Precision calculation error in Early Stopping. Request to add pos_label. · Issue #2422 · catboost/catboost
Problem: catboost version: 1.2 Operating System: Win CPU: + GPU: + Я думаю, в коде catboost вычисляющем precision где-то перепутаны предсказания и истинные значения, поэтому ранняя остановка по точ...
Forwarded from MOEX Derivatives
✅Рекордный объём торгов на Срочном рынке в июне с февраля 2022 года - 7 трлн руб.
✅Рекордное количество активных клиентов на Срочном рынке в июне - 140 тысяч
✅Рекордный среднедневной объём торгов вечными фьючерсами в июне - более 5.7 млрд руб.
✅Рекордный среднедневной объём торгов фьючерсом NASD в июне - более 1.2 млрд руб.
✅28 июня стартовали торги расчётными фьючерсами на золото в рублях (GL). Дневной объем торгов сегодня превысил уже 280 млн рублей.
✅29 июня стартовали торги фьючерсами на акции Совкомфлот (FLOT), Сегежа Групп (SGZH), Белуга Групп (BELU) и ВУШ Холдинг (WUSH).
✅3 июля стартовали торги опционами на валюты Si, Eu, CNY.
✅Рекордное количество активных клиентов на Срочном рынке в июне - 140 тысяч
✅Рекордный среднедневной объём торгов вечными фьючерсами в июне - более 5.7 млрд руб.
✅Рекордный среднедневной объём торгов фьючерсом NASD в июне - более 1.2 млрд руб.
✅28 июня стартовали торги расчётными фьючерсами на золото в рублях (GL). Дневной объем торгов сегодня превысил уже 280 млн рублей.
✅29 июня стартовали торги фьючерсами на акции Совкомфлот (FLOT), Сегежа Групп (SGZH), Белуга Групп (BELU) и ВУШ Холдинг (WUSH).
✅3 июля стартовали торги опционами на валюты Si, Eu, CNY.
#ml #timeseries #transformers
↓ В моей практике был один случай, когда трансформер из торча очень элегантно решал соревнование по предсказанию продаж Сбермаркета. Автор скрипта - Павел Орлов. На сырых данных его решение давало почти такой же по МЛ качеству результат, как мой вдесятеро больший по коду скрипт со сложным FE. В том соревновании я, кстати, с изумлением узнал, что НЕЛЬЗЯ просто так взять и использовать натренированную модельку классификации, если в test пропорции классов отличаются от train. Нельзя. Вы скажете, но как же, ведь на то и обучение, чтобы по признакам научиться угадывать таргет, а вовсе не по какой-то там пропорции примеров в трейне. Нет. При достаточно отличающемся балансе в тест прогнозы будут смещены настолько, что их придётся пересчитывать по спецформуле. Этому, кстати, не учат нигде ни в книгах, ни на курсах. По кр мере, мне не попадалось. Уникальный контент для подписчиков моего блога )
↓ В моей практике был один случай, когда трансформер из торча очень элегантно решал соревнование по предсказанию продаж Сбермаркета. Автор скрипта - Павел Орлов. На сырых данных его решение давало почти такой же по МЛ качеству результат, как мой вдесятеро больший по коду скрипт со сложным FE. В том соревновании я, кстати, с изумлением узнал, что НЕЛЬЗЯ просто так взять и использовать натренированную модельку классификации, если в test пропорции классов отличаются от train. Нельзя. Вы скажете, но как же, ведь на то и обучение, чтобы по признакам научиться угадывать таргет, а вовсе не по какой-то там пропорции примеров в трейне. Нет. При достаточно отличающемся балансе в тест прогнозы будут смещены настолько, что их придётся пересчитывать по спецформуле. Этому, кстати, не учат нигде ни в книгах, ни на курсах. По кр мере, мне не попадалось. Уникальный контент для подписчиков моего блога )
Pastebin
transformer pipeline - Pastebin.com
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
👍1
Forwarded from Машинное обучение от ИЦ "ГЕВИССТА"
Обновлена подписка Сборник статей по ML. Добавлена статья, посвященная проблемам использования трансформеров во временных рядах. Статьи, на которые ссылается автор тыц и тыц.
Boosty.to
Gewissta - Машинное обучение, прогнозное моделирование
ОБО МНЕ Артем Груздев, SSE в Capital One (NY), а также M&A Deals Data Scientist в DBS Bank, ранее - Senior Data Scientist в Citibank (NY), также являюсь исполнительным директором ИЦ «Гевисста». МОИ КНИГИ ПОСТЫ Градиентный бустинг Гайд по LightGBM…
#ml #timeseries #robustness
Используете ли Вы в задачах классификации рядов какие-то метрики робастности предсказаний? Одно дело, скажем, высокая точность или бриер лосс, но интуитивно неприятно, если прогноз на последовательных точках ряда часто меняется, или вероятности резко скачут туда-сюда от точки к точке. Столкнулся с этим на финансовых рядах. Думаю трекать что-то вроде
Сразу опять-таки приходит вопрос, а почему устойчивость прогнозов по изменениям входов вообще никак не учитывается в МЛ? Да, можно посчитать важности признаков, но они по большей части считаются вовсе не небольшим варьированием входов. А ведь эта дополнительная мера качества могла бы помочь сделать выбор, скажем, между 2 коррелированными фичами. Обе имеют примерно одинаковое влияние (или одиночные ML метрики на таргет), но по одной прогнозы скачут сильнее. Тогда оставляем вторую. Может, я просто не знаю, и где-то это уже учитывается?
Используете ли Вы в задачах классификации рядов какие-то метрики робастности предсказаний? Одно дело, скажем, высокая точность или бриер лосс, но интуитивно неприятно, если прогноз на последовательных точках ряда часто меняется, или вероятности резко скачут туда-сюда от точки к точке. Столкнулся с этим на финансовых рядах. Думаю трекать что-то вроде
preds.diff().abs().mean() для предсказаний и самих верных меток, как дополнительную меру качества моделек для TS.Сразу опять-таки приходит вопрос, а почему устойчивость прогнозов по изменениям входов вообще никак не учитывается в МЛ? Да, можно посчитать важности признаков, но они по большей части считаются вовсе не небольшим варьированием входов. А ведь эта дополнительная мера качества могла бы помочь сделать выбор, скажем, между 2 коррелированными фичами. Обе имеют примерно одинаковое влияние (или одиночные ML метрики на таргет), но по одной прогнозы скачут сильнее. Тогда оставляем вторую. Может, я просто не знаю, и где-то это уже учитывается?
#mlops #mlflow
Продолжаю изучать mlflow. Очень понравилась, что по обученной модели можно быстро получить список метрик и значимостей признаков. А ещё можно даже настроить критерии приёмки модели в бой, абсолютные (точность не менее X%) и относительные (точность не менее Y% лучше чем DummyClassifier). Ложка дёгтя в том, что указанный в доке вызов
https://mlflow.org/docs/latest/models.html#model-validation
Продолжаю изучать mlflow. Очень понравилась, что по обученной модели можно быстро получить список метрик и значимостей признаков. А ещё можно даже настроить критерии приёмки модели в бой, абсолютные (точность не менее X%) и относительные (точность не менее Y% лучше чем DummyClassifier). Ложка дёгтя в том, что указанный в доке вызов
mlflow.models.list_evaluators() не работает.https://mlflow.org/docs/latest/models.html#model-validation
#ml #feedback #trubrics #monitoring
Впервые вижу. Можно централизованно собирать обратную связь по вашим МЛ моделям. Развёрнутым, к примеру, в streamlit.`
Why should you monitor usage of your models?
🚨 Identify bugs - users are constantly running inference on your models, and may be more likely to find bugs than your ML monitoring system
🧑💻 Fine tune - users often hold domain knowledge that can be useful to fine tune models
👥 Align - identifying user preferences will help you to align models to your users
https://github.com/trubrics/trubrics-sdk
Впервые вижу. Можно централизованно собирать обратную связь по вашим МЛ моделям. Развёрнутым, к примеру, в streamlit.`
Why should you monitor usage of your models?
🚨 Identify bugs - users are constantly running inference on your models, and may be more likely to find bugs than your ML monitoring system
🧑💻 Fine tune - users often hold domain knowledge that can be useful to fine tune models
👥 Align - identifying user preferences will help you to align models to your users
https://github.com/trubrics/trubrics-sdk
GitHub
GitHub - trubrics/trubrics-sdk: The first user analytics platform for AI models
The first user analytics platform for AI models. Contribute to trubrics/trubrics-sdk development by creating an account on GitHub.
#hardware #intel #cpu
"Процессоры семейств Arrow Lake и Lunar Lake получат поддержку множества инструкций, среди которых SHA512, SM3 и SM4, а также новые AVX-VNNI, ориентированные на ускорение операций, связанных с ИИ."
https://3dnews.ru/1089353/intel-podtverdila-poddergku-instruktsiy-dlya-ii-i-mashinnogo-obucheniya-u-protsessorov-arrow-lakes-i-lunar-lake
"Процессоры семейств Arrow Lake и Lunar Lake получат поддержку множества инструкций, среди которых SHA512, SM3 и SM4, а также новые AVX-VNNI, ориентированные на ускорение операций, связанных с ИИ."
https://3dnews.ru/1089353/intel-podtverdila-poddergku-instruktsiy-dlya-ii-i-mashinnogo-obucheniya-u-protsessorov-arrow-lakes-i-lunar-lake
3DNews - Daily Digital Digest
Intel подтвердила, что чипы Arrow Lake-S и Lunar Lake получат инструкции AVX-VNNI для ускорения ИИ и машинного обучения
Intel обновила документ под названием Architecture Instruction Set Extensions and Future Features, внеся некоторые коррективы в спецификации настольных процессоров следующего поколения, сообщает VideoCardz.
Forwarded from Neural Info
I've finally finished reading the paper called "A Cookbook of Self-Supervised Learning".
What do I want to say? It's a really good paper to start learning SSL. It has a good structure and as you read it, you start to understand how SSL works from the inside.
It has such important parts like:
1. Problem definitions.
2. Possible applications.
3. Existing approaches and their advantages / disadvantages.
4. Implementation details.
5. Training / evaluation details.
6. Existing bottlenecks.
And many other helpful subtopics with many links to other papers on SSL methods in different areas of AI.
I'd recommend this paper to anyone who wants to start learning SSL, because I think this area will be, or already is, an essential part of AI, and it's going to grow really fast.
What do I want to say? It's a really good paper to start learning SSL. It has a good structure and as you read it, you start to understand how SSL works from the inside.
It has such important parts like:
1. Problem definitions.
2. Possible applications.
3. Existing approaches and their advantages / disadvantages.
4. Implementation details.
5. Training / evaluation details.
6. Existing bottlenecks.
And many other helpful subtopics with many links to other papers on SSL methods in different areas of AI.
I'd recommend this paper to anyone who wants to start learning SSL, because I think this area will be, or already is, an essential part of AI, and it's going to grow really fast.
#math #fun
Народ, подпишитесь на математический блог в ВК, больше тонких шуток вам в ленту )
https://vk.com/secxsquad
Народ, подпишитесь на математический блог в ВК, больше тонких шуток вам в ленту )
https://vk.com/secxsquad
❤1
#mlops #tracking #mlflow
Несколько классных трюков для продуктивной работы с mlflow. Мне оч понравилась встройка кастомных веб-страничек и дочерние эксперименты (UI с прошлого года поддерживает многоуровневость).
По идее, в МЛ эксперимент может равняться фичерсету+таргету, а запуски (runs) могут соответствовать разным конвейерам обработки (с/без FS,RS,OR,ES,HPT).
Дочерние запуски нужны, если хотим логировать промежуточные модели, обученные на фолдах CV. Или если хотим на одних и тех же данных/конвейере сравнить несколько моделей разных классов (gbdt, ann). Или если включено HPT, тогда каждый запуск порождает N субмоделей с разными гиперпараметрами.
К сожалению, вложенными могут быть только запуски, но не эксперименты, хотя это вроде бы на поверхности. У нас же в рамках одного проекта может быть несколько датасетов, несколько задач, у каждой много таргетов. (+Желательны свои уровни допуска разным юзерам, но об этом умолчим). Сейчас пользователям MLFlow приходится, видимо, эту иерархию разворачивать в плоские структуры. Или как-то лепить в тэги.
https://towardsdatascience.com/5-tips-for-mlflow-experiment-tracking-c70ae117b03f
Несколько классных трюков для продуктивной работы с mlflow. Мне оч понравилась встройка кастомных веб-страничек и дочерние эксперименты (UI с прошлого года поддерживает многоуровневость).
По идее, в МЛ эксперимент может равняться фичерсету+таргету, а запуски (runs) могут соответствовать разным конвейерам обработки (с/без FS,RS,OR,ES,HPT).
Дочерние запуски нужны, если хотим логировать промежуточные модели, обученные на фолдах CV. Или если хотим на одних и тех же данных/конвейере сравнить несколько моделей разных классов (gbdt, ann). Или если включено HPT, тогда каждый запуск порождает N субмоделей с разными гиперпараметрами.
К сожалению, вложенными могут быть только запуски, но не эксперименты, хотя это вроде бы на поверхности. У нас же в рамках одного проекта может быть несколько датасетов, несколько задач, у каждой много таргетов. (+Желательны свои уровни допуска разным юзерам, но об этом умолчим). Сейчас пользователям MLFlow приходится, видимо, эту иерархию разворачивать в плоские структуры. Или как-то лепить в тэги.
https://towardsdatascience.com/5-tips-for-mlflow-experiment-tracking-c70ae117b03f
Medium
5 Tips for MLflow Experiment Tracking
Push MLflow to its limits: visualize, organize, alter and correct your mlflow runs
Prepping tables for machine learning
#varoquaux #inria #ml #sklearn #missingvalues #imputing #perezlebel #skrub #minhashencoder #gapencoder #datetimeencoder #tablevectorizer #fuzzy_join
Общие советы, как учиться на табличных данных в экосистеме sklearn.
Оказывается, заполнение пропусков лучше всего нативное от деревянных моделей. Потом уже идут более гораздо затратные вычислительно условные импутации. Если у вас нейросеть, используйте в конвейере add_indicator=True, чтобы обработать возможные случаи, когда пропуски не случайны.
По дефолту советуют HistGradientBoosting.
Если же нет, рекомендуют QuantileTransformer НА ПРИЗНАКАХ. Такое я чёт впервые встречаю, обычно это делают на таргете... хм... +IterativeImputer (хотя только что говорили про его затратность).
Гаель предлагает как стандарт весь препроцессинг отдать трансформеру tablevectorizer из либы skrub, который знает, как обрабатывать фичи времени, строки, категории.
Для категориальных столбцов у них реализована интересная разновидность one hot, основанная на строковой близости меток. Например, Police officer I и Police officer IV попадут в одну корзину вместо разных. Семантическая близость, к сожалению, (пока?) не учитывается.
Ещё в skrub для обогащения данных из справочных таблиц есть джойнеры, которые, как я понял, заменяют featuretools по сути. Но если в featuretools чёрт ногу сломит, тут вроде попроще. Очевидное преимущество skrub - fuzzy_join (всё по той же текстовой схожести).
Что интересно, есть несколько бэкендов - pandas, polars.
https://www.youtube.com/watch?v=I4Sksd93bZ4
#varoquaux #inria #ml #sklearn #missingvalues #imputing #perezlebel #skrub #minhashencoder #gapencoder #datetimeencoder #tablevectorizer #fuzzy_join
Общие советы, как учиться на табличных данных в экосистеме sklearn.
Оказывается, заполнение пропусков лучше всего нативное от деревянных моделей. Потом уже идут более гораздо затратные вычислительно условные импутации. Если у вас нейросеть, используйте в конвейере add_indicator=True, чтобы обработать возможные случаи, когда пропуски не случайны.
По дефолту советуют HistGradientBoosting.
Если же нет, рекомендуют QuantileTransformer НА ПРИЗНАКАХ. Такое я чёт впервые встречаю, обычно это делают на таргете... хм... +IterativeImputer (хотя только что говорили про его затратность).
Гаель предлагает как стандарт весь препроцессинг отдать трансформеру tablevectorizer из либы skrub, который знает, как обрабатывать фичи времени, строки, категории.
Для категориальных столбцов у них реализована интересная разновидность one hot, основанная на строковой близости меток. Например, Police officer I и Police officer IV попадут в одну корзину вместо разных. Семантическая близость, к сожалению, (пока?) не учитывается.
Ещё в skrub для обогащения данных из справочных таблиц есть джойнеры, которые, как я понял, заменяют featuretools по сути. Но если в featuretools чёрт ногу сломит, тут вроде попроще. Очевидное преимущество skrub - fuzzy_join (всё по той же текстовой схожести).
Что интересно, есть несколько бэкендов - pandas, polars.
https://www.youtube.com/watch?v=I4Sksd93bZ4
YouTube
PyData Südwest #23 - Gaël Varoquaux & Daniel Stemmer
Live Stream of the in person meetup.
https://www.meetup.com/pydata-suedwest/events/293746020/
This event will be in English.
Talks:
Skrub: Prepping Tables for Machine Learning Gets Easier
Gaël Varoquaux, Research Director, Inria, France
Using Embeddings…
https://www.meetup.com/pydata-suedwest/events/293746020/
This event will be in English.
Talks:
Skrub: Prepping Tables for Machine Learning Gets Easier
Gaël Varoquaux, Research Director, Inria, France
Using Embeddings…
#it
Читаю новость: В мае глава IBM Арвинд Кришна (Arvind Krishna)...
Блять, ну вы серьёзно? Почему главой (американской) ИТ-компании должен быть индус, мне кто-то может объяснить??
Читаю новость: В мае глава IBM Арвинд Кришна (Arvind Krishna)...
Блять, ну вы серьёзно? Почему главой (американской) ИТ-компании должен быть индус, мне кто-то может объяснить??
🤔2
#agronomy
"Обучаемый машинный интеллект анализирует внешний вид яблок и даёт команду на съём только тогда, если фрукт необходимой спелости и без повреждений. Работа платформы на опытном хозяйстве показала высочайшую избирательную способность системы. Она очень сильно сокращает затраты на сбор урожая, позволяя за каждый проход выбирать плоды только лучшего качества. Обычный человек с улицы на такое не способен. А специально обученные сборщики урожая — это редкое явление."
https://youtu.be/nYl_1TMVwjw
https://3dnews.ru/1089519/iskusstvenniy-intellekt-nauchili-sobirat-spelie-yabloki-roem-dronov-na-privyazi
"Обучаемый машинный интеллект анализирует внешний вид яблок и даёт команду на съём только тогда, если фрукт необходимой спелости и без повреждений. Работа платформы на опытном хозяйстве показала высочайшую избирательную способность системы. Она очень сильно сокращает затраты на сбор урожая, позволяя за каждый проход выбирать плоды только лучшего качества. Обычный человек с улицы на такое не способен. А специально обученные сборщики урожая — это редкое явление."
https://youtu.be/nYl_1TMVwjw
https://3dnews.ru/1089519/iskusstvenniy-intellekt-nauchili-sobirat-spelie-yabloki-roem-dronov-na-privyazi
YouTube
Unifrutti & Tevel Partner To Bring Autonomous Harvesting to Chile
The Future of Agriculture Has Arrived in South America: Unifrutti Introduces Groundbreaking Fruit-Picking Robots, Revolutionizing Harvesting in Chile Through Partnership with Tevel
In a first-ever collaboration, the face of the fruit industry in Chile is…
In a first-ever collaboration, the face of the fruit industry in Chile is…
#trading #backtesting #ml #chan
Крайне интересный подход, над которым надо подумать. Переменные контроля вплавляются в обучающие данные, меткой считается желаемая финансовая метрика от использования на некотором отрезке "с текущего момента" этих управляющих переменных.
Это и есть реализация идей де Прадо и Чана о том, что бесполезно применять МЛ для прогнозирования цены, т.к. то же самое пытаются сделать все. А вместо этого, мол, если тебе нравится торговать по пересечению 2 скользящих средних, то и делай это, но натренируй МЛ выяснять, в какие моменты эта стратегия имеет шансы на успех.
В данном случае, периоды этих 2 средних, ну ещё отступы и какие-нибудь дополнительные параметры, добавляются в обучающий набор (содержащий рыночные данные и фундаменталку), а таргетом выступет кэф Шарпа от применения этих торговых параметров на сл месяц.
Мне лично в повышенную эффективность такого МЛ слабо верится, т.к. это по сути всё равно предсказание цены, только косвенно, да ещё на сниженном на порядок датасете. Хотя с другой стороны, на этом подмножестве может меняться расклад влияющих факторов, модель в теории может не распыляться на другие ситуации и лучше понять то что ей дали. Интуитивно неясно, что перевесит, но это всё можно замерить и выяснить.
Но ещё один важный аспект такого подхода в том, что традиционная идея "сначала МЛ (модель даёт прогнозы), потом бэктест (а что же делать с этими прогнозами, при каких значениях покупать/продавать) с боязнью оверфита" заменяется на "в каждой точке сэмплим сотни комбинаций управляющих параметров, смело делаем бэктестовые "виртуальные забеги" с этими параметрами, потом уже обучаем на всём МЛ, борьбу с оверфитом отдаём на откуп МЛ."
Конечно, это сильно снижает операционное пространство по сравнению с 1м подходом, т.к. МЛ исходы становится ограниченны конкретной торговой политикой. Но я придумал комбайн, как обойти это ограничение. Вторая модель! Пусть она даёт, как и обычно, прогнозы рынка и/или инструмента, и уже эти прогнозы будут считаться частью управляющий переменных. Тогда не надо будет ждать, условно говоря, пересечения 2 SMA, всегда будет некий прогноз и решающие пороги, по которым можно действовать. Такой своеобразный Double ML.
Причем в теории, внешний контур можно обучить независимо от внутреннего. Имитируем предиктор определённой разумной точности в течение нескольких дней, потом меняем сид. Скальзящая фактическая точность предсказаний (и, возможно, распределение ошибок) подаётся как теневой фактор в числе управляющих переменных. И всё, можно обучать внешний контур.
https://www.youtube.com/watch?v=sXYW0KgCKbE
Крайне интересный подход, над которым надо подумать. Переменные контроля вплавляются в обучающие данные, меткой считается желаемая финансовая метрика от использования на некотором отрезке "с текущего момента" этих управляющих переменных.
Это и есть реализация идей де Прадо и Чана о том, что бесполезно применять МЛ для прогнозирования цены, т.к. то же самое пытаются сделать все. А вместо этого, мол, если тебе нравится торговать по пересечению 2 скользящих средних, то и делай это, но натренируй МЛ выяснять, в какие моменты эта стратегия имеет шансы на успех.
В данном случае, периоды этих 2 средних, ну ещё отступы и какие-нибудь дополнительные параметры, добавляются в обучающий набор (содержащий рыночные данные и фундаменталку), а таргетом выступет кэф Шарпа от применения этих торговых параметров на сл месяц.
Мне лично в повышенную эффективность такого МЛ слабо верится, т.к. это по сути всё равно предсказание цены, только косвенно, да ещё на сниженном на порядок датасете. Хотя с другой стороны, на этом подмножестве может меняться расклад влияющих факторов, модель в теории может не распыляться на другие ситуации и лучше понять то что ей дали. Интуитивно неясно, что перевесит, но это всё можно замерить и выяснить.
Но ещё один важный аспект такого подхода в том, что традиционная идея "сначала МЛ (модель даёт прогнозы), потом бэктест (а что же делать с этими прогнозами, при каких значениях покупать/продавать) с боязнью оверфита" заменяется на "в каждой точке сэмплим сотни комбинаций управляющих параметров, смело делаем бэктестовые "виртуальные забеги" с этими параметрами, потом уже обучаем на всём МЛ, борьбу с оверфитом отдаём на откуп МЛ."
Конечно, это сильно снижает операционное пространство по сравнению с 1м подходом, т.к. МЛ исходы становится ограниченны конкретной торговой политикой. Но я придумал комбайн, как обойти это ограничение. Вторая модель! Пусть она даёт, как и обычно, прогнозы рынка и/или инструмента, и уже эти прогнозы будут считаться частью управляющий переменных. Тогда не надо будет ждать, условно говоря, пересечения 2 SMA, всегда будет некий прогноз и решающие пороги, по которым можно действовать. Такой своеобразный Double ML.
Причем в теории, внешний контур можно обучить независимо от внутреннего. Имитируем предиктор определённой разумной точности в течение нескольких дней, потом меняем сид. Скальзящая фактическая точность предсказаний (и, возможно, распределение ошибок) подаётся как теневой фактор в числе управляющих переменных. И всё, можно обучать внешний контур.
https://www.youtube.com/watch?v=sXYW0KgCKbE
YouTube
Ernest Chan (Predictnow.ai) - "How to Use Machine Learning for Optimization"
Abstract: Conditional Portfolio Optimization is a portfolio optimization technique that adapts to market regimes via machine learning. Traditional portfolio optimization methods take summary statistics of historical constituent returns as input and produce…
👍1
#profiling #optimisation #python #speed #sklearn #bollocks
Эскалёрновские волшебники-программисты в деле. Столкнулся с неприемлемо низкой скоростью построения отчёта классификационных метрик на 8M примеров. 15 секунд, ну куда это годится? Проверил кирпичики расчётов по нисходящей. Матрица ошибок считается за полторы секунды. Это чем же надо угандошить процессор, чтобы простое деление пары чисел и упаковка в словарь выполнялись больше 10 секунд и делали расчёты в ДЕСЯТЬ раз длиннее? Такое и специально не сразу сделаешь.
Эскалёрновские волшебники-программисты в деле. Столкнулся с неприемлемо низкой скоростью построения отчёта классификационных метрик на 8M примеров. 15 секунд, ну куда это годится? Проверил кирпичики расчётов по нисходящей. Матрица ошибок считается за полторы секунды. Это чем же надо угандошить процессор, чтобы простое деление пары чисел и упаковка в словарь выполнялись больше 10 секунд и делали расчёты в ДЕСЯТЬ раз длиннее? Такое и специально не сразу сделаешь.
😁1
#optimisation #sklearn #python #numba #codegems
Итак, то, что у кудесников машинного обучения считается 15 СЕКУНД, на самом деле должно занимать 50 МИЛЛИСЕКУНД. Но зато они сотни строк качественного кода написали, наверное, покрытого тестами, и прочим. Почему я считаю это важным? Да потому что мне предстоит обсчитывать сотни моделей, и оказалось, что качество обучения (classification report, roc auc, калибрация по всему сету + в разбивке по группам) на test set оценивается для 1 модели.. 5 минут, и основным тормозом был classification_report. Мне вовсе не улыбается платить за кластер, ожидающий сотни и тысячи раз по 5 минут. Спасибо, что у нас хотя бы есть numpy и numba. Без нумбы, кстати, этот код на языке программирования, созданном "гениальным" Ван Россумом, выполняется даже не знаю сколько, я прождал минут 5-10 и забил.
Скорее всего, напрасная трата времени, но всё же запостил issue. Как обычно, похерят, видимо.
Итак, то, что у кудесников машинного обучения считается 15 СЕКУНД, на самом деле должно занимать 50 МИЛЛИСЕКУНД. Но зато они сотни строк качественного кода написали, наверное, покрытого тестами, и прочим. Почему я считаю это важным? Да потому что мне предстоит обсчитывать сотни моделей, и оказалось, что качество обучения (classification report, roc auc, калибрация по всему сету + в разбивке по группам) на test set оценивается для 1 модели.. 5 минут, и основным тормозом был classification_report. Мне вовсе не улыбается платить за кластер, ожидающий сотни и тысячи раз по 5 минут. Спасибо, что у нас хотя бы есть numpy и numba. Без нумбы, кстати, этот код на языке программирования, созданном "гениальным" Ван Россумом, выполняется даже не знаю сколько, я прождал минут 5-10 и забил.
Скорее всего, напрасная трата времени, но всё же запостил issue. Как обычно, похерят, видимо.
👍1😁1