umbral de clasificación en RandomForest-sklearn

9

1) ¿Cómo puedo cambiar el umbral de clasificación (creo que es 0.5 por defecto) en RandomForest en sklearn?

2) ¿cómo puedo submuestrear en sklearn?

3) Tengo el siguiente resultado del clasificador RandomForest: [[1635 1297] [520 3624]]

         precision    recall  f1-score   support

class 0       0.76      0.56      0.64      2932
class 1       0.74      0.87      0.80      4144

promedio / total 0,75 0,74 0,73 7076

primero, los datos no están balanceados (30% de la clase 0 y 70% de la clase 1). Entonces, creo que es más probable que el clasificador esté sesgado para la clase 1, lo que significa mover algunos de la clase 0 a la clase 1 (hay 1297 clasificaciones erróneas para la clase 0 pero 520 clasificaciones erróneas para la clase 1). ¿Cómo puedo arreglar esto? si la disminución de resolución puede ayudar? o cambiando el umbral de clasificación?

Actualización: la clase 0 tiene el 40% de la población, mientras que la clase 1 es el 60%. Sin embargo, la deriva de la clase 0 a la clase 1 (1297) es alta, mientras que quiero que sea baja.

Big Data Lover
fuente

Respuestas:

7

De hecho, podría envolver su bosque aleatorio en una clase que los predictmétodos que llaman el predict_probamétodo del bosque aleatorio interno y la clase de salida 1 solo si es más alto que un umbral personalizado.

Alternativamente, puede sesgar el algoritmo de entrenamiento pasando un valor más alto sample_weightpara las muestras de la clase minoritaria.

ogrisel
fuente
Gracias. Estaba pensando en aumentar de peso para la clase menor. Sin embargo, no puedo ver nada en el clasificador RandomForest (hay en SGDclassifier)
Big Data Lover
El método de ajuste acepta un sample_weightparámetro (un peso por parámetro) que es muy flexible y permite simular class_weight(un peso por clase objetivo).
ogrisel
Gracias. cuando uso clf = clf.fit (X, Y, sample_weight = preprocessing.balance_weights (y) me da ValueError: los operandos no se pueden transmitir junto con las formas. y es binario 0/1
Big Data Lover
¿Cuál es la forma de y? ¿Por qué tienes diferente Yy y?
ogrisel