Discusión sobre el artículo "Aprendizaje automático y Data Science (Parte 31): Uso de los modelos de inteligencia artificial CatBoost"

 

Artículo publicado Aprendizaje automático y Data Science (Parte 31): Uso de los modelos de inteligencia artificial CatBoost:

Los modelos de IA CatBoost han ganado popularidad masiva recientemente entre las comunidades de aprendizaje automático debido a su precisión predictiva, eficiencia y robustez ante conjuntos de datos dispersos y difíciles. En este artículo, vamos a discutir en detalle cómo implementar este tipo de modelos en un intento de vencer al mercado de divisas.

CatBoost es una biblioteca de software de código abierto con algoritmos de "potenciador de gradientes" sobre árboles de decisión, diseñada específicamente para abordar los desafíos del manejo de características categóricas y datos en el aprendizaje automático.

Fue desarrollado por Yandex y se convirtió en código abierto en 2017. Lee más.

A pesar de haberse introducido recientemente en comparación con técnicas de aprendizaje automático como la regresión lineal o SVM, CatBoost ganó una popularidad masiva entre las comunidades de IA y llegó a la cima de los modelos de aprendizaje automático más utilizados en plataformas como Kaggle.

Lo que hizo que CatBoost ganara tanta atención es su capacidad de manejar automáticamente características categóricas en el conjunto de datos, lo que puede ser un desafío para muchos algoritmos de aprendizaje automático.

  • Los modelos Catboost suelen proporcionar un mejor rendimiento en comparación con otros modelos con un esfuerzo mínimo, incluso con los parámetros y ajustes predeterminados, estos modelos pueden tener un buen rendimiento en cuanto a precisión.
  • A diferencia de las redes neuronales que requieren conocimiento del dominio para codificarlas y hacerlas funcionar, la implementación de CatBoost es sencilla.


Autor: Omega J Msigwa

 
Tus escritos invitan a la reflexión.

Me pregunto qué pasaría si también hiciéramos un seguimiento de en qué sesión bursátil estamos.
 
Sí, la sesión de negociación es una variable valiosa que debe incluirse en los datos de formación.
 
Todos los clasificadores (incluido catboost) funcionan correctamente sólo con atributos normalizados. Los precios como atributos no son adecuados.
 

y también existe el problema de exportar el modelo clasificador a ONNX


Nota

La etiqueta se infiere incorrectamente para la clasificación binaria. Se trata de un error conocido en la implementación de onnxruntime. Ignore el valor de este parámetro en caso de clasificación binaria.

 
¡Precio no se puede utilizar como datos de entrenamiento, a principios del año pasado he utilizado el precio del oro para entrenar el modelo, cuando el precio del oro sigue alcanzando nuevos máximos, la entrada al modelo de estos nuevos datos de precios altos, el modelo no reconoce estos datos, no importa cómo dar cómo cambiar y superar el precio más alto del precio de los datos de datos de entrenamiento, dar una probabilidad constante de valor!
 
Muchas gracias por este artículo tan útil.

Tengo una pequeña pregunta o preocupación que espero compartir.

When I tried to convert the CatBoost model in a pipeline to ONNX con variables categoricas el proceso falla, arrojando un error.


Creo que el problema subyacente puede estar relacionado con lo que se describe aquí:

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

Particularidades:

Actualmente sólo se soportan modelos entrenados en conjuntos de datos sin características categóricas.


En el Jupyter Notebook catboost-4-trading.ipynb que he descargado, el código de ajuste del pipeline está escrito como:

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

Parece que se ha omitido el parámetro"catboost__cat_features=categorical_features", por lo que es posible que el modelo se haya entrenado sin especificar características categóricas.

Esto podría explicar por qué el modelo pudo guardarse como ONNX sin ningún problema.

Si este es el caso, entonces tal vez el método nativo de CatBoost"save_model" podría ser utilizado directamente, así:

model = pipe.named_steps['catboost']

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

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

Espero que esta observación pueda ser útil.

ONNX |
  • catboost.ai
ONNX is an open format to represent AI models. A quote from the Open Neural Network Exchange documentation:
 
border_count es una partición en bins (segmentos cuánticos) para cualquier característica, no sólo para características categóricas.
 
¿Por qué no hay un stop loss fijo en el código del EA?