Discusión sobre el artículo "Metamodelos en el aprendizaje automático y el trading: Timing original de las órdenes comerciales" - página 13

 
Maxim Dmitrievsky #:
Allí x[0] son probabilidades para la clase nula, mientras que el modelo da probabilidades para dos clases. Es decir, si la probabilidad de la clase nula es menor que 0,5, entonces se predice la clase primero. Entonces Verdadero == 1 y viceversa. Por lo tanto, no hay error.

Hm, no he oído hablar de tal cosa, la probabilidad no puede ser de 0 a 1, más de 0,5 - "1", de lo contrario "0" es el valor predeterminado en la clasificación binaria. Aunque el traductor traduce de forma extraña:
"

  • Un objeto es un numpy.ndarray unidimensional con probabilidades para cada clase.

"

Pero, entonces ¿cómo obtener la probabilidad para la clase "1"? No puede haber en un array unidimensional probabilidades separadas para cada clase, o no entiendo algo.....

 
Maxim Dmitrievsky #:
Tal vez en su conjunto de datos las etiquetas están al revés

"1" es el trato correcto/rentable/bueno. ¿Debería ser al revés?

 
Aleksey Vyazmikin #:

"1" es el trato correcto/rentable/bueno. ¿Debería ser de otra manera?

No, me refiero a las compras y ventas en su conjunto de datos, lo que es un cero y lo que es un 1. Compra o venta.
 
Aleksey Vyazmikin #:

Hm, no he oído hablar de tal probabilidad puede haber de 0 a 1, más de 0,5 - "1", de lo contrario "0" por defecto en la clasificación binaria. Aunque el traductor traduce extrañamente:
"

  • Un objeto es un numpy.ndarray unidimensional con probabilidades para cada clase.

"

Pero, ¿cómo obtener la probabilidad para la clase "1"? No puede haber probabilidades separadas para cada clase en un array unidimensional, o no entiendo algo.....

Si la probabilidad para la clase 0 < 0.5, entonces se predice la clase 1. Ese código sólo traduce las probabilidades de nuevo en etiquetas de clase para el probador. Todo está bien allí.
 
Maxim Dmitrievsky #:
No, me refiero a comprar y vender en su conjunto de datos, lo que es cero y lo que es 1. Compra o venta.

En el resultado financiero ya hay un margen de beneficio. En la columna de cierre pongo el resultado de la operación. Es decir, para el entrenamiento no es importante comprar o vender.

Maxim Dmitrievsky #:
Si la probabilidad para la clase 0 < 0.5, entonces se predice la clase 1. Ese código simplemente traduce las probabilidades de nuevo en etiquetas de clase para el probador. Todo está bien allí.

No quiero parecer obsesivo, pero aún así, tres opciones:
1. Lo he estado haciendo mal todo el tiempo, asumiendo que lo que se estima es la probabilidad de la clase "1" en CatBoost.
2. No entiendo su código.
3. Te equivocas al asumir que la probabilidad menor de 0.5 debe ser clasificada como "1".

 
Aleksey Vyazmikin #:

Allí el margen de beneficio ya se basa en el resultado financiero. En la columna de cierre pongo el resultado de la operación. Es decir, para la formación no es importante comprar o vender.

No quiero ser intrusivo, pero aun así, tres opciones:
1. Lo he estado haciendo mal todo el tiempo, asumiendo que lo que se evalúa es la probabilidad "1" de la clase CatBoost.
2. No entiendo tu código.
3. Te equivocas al asumir que la probabilidad menor a 0.5 debe ser clasificada como "1".

No entiendo nada, la columna Close debería ser los precios de cierre.

La probabilidad total es siempre igual a uno. Si la probabilidad de una clase es inferior a 0,5, entonces se predice otra clase.

 
Maxim Dmitrievsky #:

No entiendo nada, la columna Close debería ser los precios de cierre.

Mira el código que he adjuntado. Ahí puede quedar más claro. No tengo clasificación en cada barra.

Maxim Dmitrievsky #:

La probabilidad total es siempre igual a uno. Si la probabilidad de una de las clases es inferior a 0,5, entonces se predice otra clase.

En el código, si la probabilidad es 0,4, se obtiene la clase "1". ¿Por qué?

 
Aleksey Vyazmikin #:

Echa un vistazo al código que he adjuntado. Puede ser más claro. No tengo clasificación en cada barra.

En el código, una probabilidad de 0,4 le da una clase "1". ¿Por qué?

¿Puedo obtener un conjunto de datos comprimido? No tengo rar.

porque la probabilidad de clase 1 es 0,6.

En general, ese algoritmo debería aceptar los datos exactamente como se hace allí.
 
Maxim Dmitrievsky #:

¿Puedo obtener un conjunto de datos comprimido? No tengo rar.

Puedo descargarlo. Aunque hay soporte de línea de comandos para mac....

Maxim Dmitrievsky #:
porque la probabilidad de la clase 1 es 0,6.
predict_proba p
[[0.74864123 0.25135877]
 [0.81097595 0.18902405]
 [0.81477042 0.18522958]
 ...
 [0.83347862 0.16652138]
 [0.84273186 0.15726814]
 [0.84617344 0.15382656]]

No podía entender hasta que lo imprimí - hay una diferencia en la versión de consola en este sentido.

Entonces todo tiene sentido, y comenté el código del tirón, dejando la lógica de marcado.

#//-------Restauración de marcas previamente anuladas 
            #if  pred_meta>0.5:pred_meta=0
            #else :pred_meta=1
            #if  pred>0.5:pred=0
            #else :pred=1

#//-------Repartir y contar el saldo
            if pred_meta==1:#Мета  модель детектировала примеры как класс "1"
                if pred < 0.5 and Target_100<0.0:
                    meta_labels[i] = 1 
                if pred < 0.5 and Target_100>0.0:
                    meta_labels[i] = 0 
                if pred >= 0.5 and Target_100>0.0:
                    meta_labels[i] = 1
                    report.append(report[-1]+Target_100)
                if pred >= 0.5 and Target_100<0.0:
                    meta_labels[i] = 0
                    report.append(report[-1]+Target_100)
            if pred_meta==0:#Мета  модель детектировала примеры как класс "0"
                if pred < 0.5 and Target_100<0.0:
                    meta_labels[i] = 1 
                if pred < 0.5 and Target_100>0.0:
                    meta_labels[i] = 0 
                if pred >= 0.5 and Target_100>0.0:
                    meta_labels[i] = 1                    
                if pred >= 0.5 and Target_100<0.0:
                    meta_labels[i] = 0
 
Maxim Dmitrievsky #:
¿Puede facilitarse un conjunto de datos comprimido?

Enlace