Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 2109

 
Maxim Dmitrievsky:

seleccione todos los archivos y descárguelos, serán comprimidos

diferentes longitudes de muestra, entonces si una parte

¡Gracias, es cierto - se puede descargar como un archivo, lo que es agradable!

Pero diferentes longitudes de muestreo es malo, yo estaba pensando en la selección de las columnas más al azar donde las pequeñas desviaciones son aceptables.

Creo que no es necesario aplicar este método a la muestra - de lo contrario, ¿cómo puedo usarlo en la vida real.

Lo estoy ejecutando para el entrenamiento, vamos a ver qué pasa.

 
Aleksey Vyazmikin:

Gracias, es cierto, se puede descargar un archivo, lo que está bien.

Pero las diferentes longitudes de las muestras son malas, he pensado en destacar las columnas más aleatorias, donde las pequeñas desviaciones son aceptables.

Creo que no es necesario aplicar este método a la muestra - de lo contrario, ¿cómo puedo usarlo en la vida real.

Lo estoy ejecutando para el entrenamiento, vamos a ver qué pasa.

No lo necesito para los exámenes, pero puede ser útil.

 
elibrarius:

Demasiado perezoso para convertirlo)
Déjeme explicarle:

1) ordenamos la columna
2) contamos el número medio de elementos en un cuanto, por ejemplo 10000 elementos / 255 cuantos = 39,21
3) en el bucle nos movemos por 39,21 elementos en cada paso y añadimos el valor del array ordenado al array de valores del cuanto. Es decir, el valor de la matriz 0 = valor 0 quantum, el valor 39 = 1 quantum, el valor 78 = 2 quantum, etc.

Si el valor ya está en el array, es decir, si entramos en una zona con muchos duplicados, nos saltamos el duplicado y no lo añadimos.

En cada paso, sumamos exactamente 39,21, y luego redondeamos la suma para seleccionar un elemento de la matriz, para que sea igual. Es decir, en lugar de 195 (39*5 = 195) toma 196 ( 39,21 * 5 = (int) 196,05).

Con la distribución uniforme está claro - crearía un array de valores únicos y lo usaría para cortar.

Pero hay otros métodos para dividir la red:

    THolder<IBinarizer> MakeBinarizer(const EBorderSelectionType type) {
        switch (type) {
            case EBorderSelectionType::UniformAndQuantiles:
                return MakeHolder<TMedianPlusUniformBinarizer>();
            case EBorderSelectionType::GreedyLogSum:
                return MakeHolder<TGreedyBinarizer<EPenaltyType::MaxSumLog>>();
            case EBorderSelectionType::GreedyMinEntropy:
                return MakeHolder<TGreedyBinarizer<EPenaltyType::MinEntropy>>();
            case EBorderSelectionType::MaxLogSum:
                return MakeHolder<TExactBinarizer<EPenaltyType::MaxSumLog>>();
            case EBorderSelectionType::MinEntropy:
                return MakeHolder<TExactBinarizer<EPenaltyType::MinEntropy>>();
            case EBorderSelectionType::Median:
                return MakeHolder<TMedianBinarizer>();
            case EBorderSelectionType::Uniform:
                return MakeHolder<TUniformBinarizer>();
        }
 
Aleksey Vyazmikin:

Con la distribución uniforme veo - primero crearía un array de valores únicos y lo usaría para cortar.

Pero hay otros métodos para dividir la red:

Debe haber muchas muestras, de lo contrario el modelo no aprenderá nada

 
Maxim Dmitrievsky:

debe haber muchas muestras, de lo contrario el modelo no aprenderá nada

Estos son los métodos de cuantificación de muestreo para CatBoost - estos son los límites por los que la enumeración/aprendizaje continúa.

Mis experimentos muestran que la rejilla debe ser elegida para cada predictor por separado, entonces se observa un aumento de la calidad, pero no es capaz de hacerlo CatBoost y no soy capaz de construir una rejilla y tengo que construir rejillas y subirlas a csv, y luego iterarlas con el fin de estimar el comportamiento de los objetivos en ellas. Creo que es una herramienta muy prometedora, pero necesito traducir el código a MQL.

 
Aleksey Vyazmikin:

Estos son los métodos de cuantificación de muestreo para CatBoost - estos son los límites por los que la enumeración/aprendizaje procede.

Mis experimentos muestran que la rejilla debe ser elegida para cada predictor por separado, entonces se observa una ganancia de calidad, pero CatBoost no puede hacerlo y no puedo construir una rejilla y tengo que construir rejillas y subirlas a csv y luego iterar a través de ellas para evaluar el comportamiento del objetivo en ellas. Creo que es una función muy prometedora, pero tengo que traducir el código a MQL.

¿está en los ajustes del propio modelo (parámetros)? no sé lo que es

si no está en la configuración, entonces es una mierda.

 
Maxim Dmitrievsky:

¿Está en la configuración del propio modelo (parámetros)? No sé lo que es

Si no está en la configuración, es una mierda.

Está en la configuración, al menos para la línea de comandos

--feature-border-type

El modo decuantificación de las características numéricas.

Valores posibles:
  • Mediana
  • Uniforme
  • UniformAndQuantiles
  • MaxLogSum
  • MinEntropy
  • GreedyLogSum
Quantization - CatBoost. Documentation
  • catboost.ai
Mode How splits are chosen Combine the splits obtained in the following modes, after first halving the quantization size provided by the starting parameters for each of them: Maximize the value of the following expression inside each bucket: Minimize the value of the following expression inside each bucket: Maximize the greedy approximation of...
 
Aleksey Vyazmikin:

Está en la configuración, al menos para la línea de comandos

--feature-border-type

El modo decuantificación de las características numéricas.

Valores posibles:
  • Mediana
  • Uniforme
  • UniformAndQuantiles
  • MaxLogSum
  • MinEntropy
  • GreedyLogSum

¿Hace una gran diferencia? Debería estar dentro de un porcentaje

 
Aleksey Vyazmikin:

Con la distribución uniforme entiendo - primero crearía un array de valores únicos y lo usaría para cortar.

Pero hay otros métodos para dividir la red:

Si tienes valores únicos, será un lío. Por ejemplo, tienes 100 cadenas de las cuales 10 son únicas, 2 de ellas tienen 45 cadenas y 8 tienen 1. Dividido entre 5 cuantos, es posible que sólo se elijan 5 por 1, y se salten los 2 más representativos (por 45).
 
Maxim Dmitrievsky:

y ¿hace una gran diferencia? Debería estar dentro de un porcentaje

La elección del desglose correcto tiene un impacto significativo en el resultado.

Aquí hay un ejemplo en Recall - hasta un 50% de variación - para mí eso es significativo.

Aumentando los límites de 16 a 512 en incrementos de 16 -aunque no en orden en el histograma- mis títulos son un poco un estorbo.


Todavía estoy experimentando con la selección de mallas, pero ya es obvio que hay diferentes predictores para los que se necesitan diferentes mallas, para observar la lógica, y no sólo para ajustar.