Обсуждение статьи "Машинное обучение и Data Science (Часть 31): Применение моделей CatBoost в трейдинге"

 

Опубликована статья Машинное обучение и Data Science (Часть 31): Применение моделей CatBoost в трейдинге:

Модели искусственного интеллекта CatBoost приобрели огромную популярность в сообществе машинного обучения благодаря их точности прогнозирования, эффективности и устойчивости к разрозненным и сложным наборам данных. В этой статье речь будет идти о том, как использовать эти модели применительно к рынку Форекс.

CatBoost — это библиотека с открытым исходным кодом, реализующая алгоритмы градиентного бустинга на деревьях решений. Разработана специально для решения задач, связанных с обработкой категориальных признаков и данных в задачах машинного обучения. Компания-разработчик Яндекс выложила библиотеку в открытый доступ в 2017 году (подробнее).

Несмотря на то, что CatBoost появился относительно недавно по сравнению с другими методами машинного обучения, например, линейной регрессией или SVM, библиотека быстро завоевал популярность и вошла в число самых используемых моделей машинного обучения на Kaggle.

CatBoost привлек столько внимания благодаря своей способности автоматически обрабатывать категориальные признаки в наборе данных — а это довольно сложная задача для многих алгоритмов машинного обучения.

  • Модели Catboost обычно дают лучшую производительность по сравнению с другими, требуя при этом минимальные усилиях, и даже с параметрами и настройками по умолчанию эти модели демонстрируют отличную точность.
  • В отличие от нейронных сетей, для работы с которыми требуются глубокие знания предметной области, CatBoost проще для реализации.

Автор: Omega J Msigwa

 
Ваша статья наводит на размышления.

Интересно, что было бы, если бы мы также отслеживали, в какой торговой сессии находимся.
 
Да, торговая сессия - это ценная переменная, которую необходимо иметь в обучающих данных
[Удален]  
Все классификаторы (включая catboost) корректно работают только с нормализованным признаками. Цены как признаки не подходят.
 

а еще есть проблема экспорта модели классификатора в ONNX


Note

The label is inferred incorrectly for binary classification. This is a known bug in the onnxruntime implementation. Ignore the value of this parameter in case of binary classification.

 
Цена не может быть использована в качестве обучающих данных, в начале прошлого года я использовал цену на золото для обучения модели, когда цена на золото продолжает бить новые максимумы, вход в модель этих новых высоких цен данных, модель не распознает эти данные, независимо от того, как дать, как изменить и превысить самую высокую цену цены данных обучения данных, дать постоянную вероятность значения!
 
Большое спасибо за полезную статью.

У меня есть небольшой вопрос или опасение, которым я надеюсь поделиться.

When I tried to convert the CatBoost model in a pipeline to ONNX С категориальными переменными процесс не удался, выдает ошибку.


Я полагаю, что основная проблема может быть связана с тем, что описано здесь:

https://catboost.ai/docs/en/concepts/apply-onnx-ml

Специфика:

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


В Jupyter Notebook catboost-4-trading.ipynb, который я скачал, код настройки конвейера написан так:

pipe.fit(X_train, y_train, catboost__eval_set=(X_test, y_test))

Похоже, что параметр"catboost__cat_features=categorical_features" опущен, поэтому модель, возможно, была обучена без указания категориальных признаков.

Это может объяснить, почему модель может быть сохранена как ONNX без каких-либо проблем.

Если дело обстоит именно так, то, возможно, можно напрямую использовать родной метод CatBoost"save_model" , например, так:

model = pipe.named_steps['catboost']

model_filename = "CatBoost.EURUSD.OHLC.D1.onnx"

model.save_model(model_filename, format='onnx')

Надеюсь, это наблюдение окажется полезным.

ONNX |
  • catboost.ai
ONNX is an open format to represent AI models. A quote from the Open Neural Network Exchange documentation:
 
border_count - это разделение на бины (квантовые отрезки) для любых признаков, а не только категориальных.
 
Почему нет фиксированного стоп-лосса в коде советника?