score scikit run regressor how forest classifier python scikit-learn

python - run - scikit voting classifier



scikit-learn: parĂ¡metros de class_weight y sample_weight de forest aleatorio (1)

Los RandomForests están construidos sobre árboles, que están muy bien documentados. Comprueba cómo Trees usa la ponderación de la muestra:

En cuanto a la diferencia entre class_weight y sample_weight : mucho se puede determinar simplemente por la naturaleza de sus tipos de datos. sample_weight es 1D array de longitud n_samples , asignando un peso explícito a cada ejemplo utilizado para el entrenamiento. class_weight es un diccionario de cada clase con un peso uniforme para esa clase (por ejemplo, {1:.9, 2:.5, 3:.01} ), o es una cadena que le dice a sklearn cómo determinar automáticamente este diccionario.

Entonces el peso de entrenamiento para un ejemplo dado es el producto de su nombre explícito sample_weight (o 1 si sample_weight no se proporciona), y es class_weight (o 1 si class_weight no se proporciona).

Tengo un problema de desequilibrio de clase y he estado experimentando con un Random Forest ponderado usando la implementación en scikit-learn (> = 0.16).

Me he dado cuenta de que la implementación toma un parámetro class_weight en el constructor de árbol y el parámetro sample_weight en el método de ajuste para ayudar a resolver el desequilibrio de clase. Esos dos parecen multiplicarse para decidir el peso final.

Tengo problemas para entender lo siguiente:

  • ¿En qué etapas de la construcción del árbol / entrenamiento / predicción se utilizan esos pesos? He visto algunos papeles para árboles pesados, pero no estoy seguro de qué es lo que scikit implementa.
  • ¿Cuál es exactamente la diferencia entre class_weight y sample_weight?