4 votos

Bosque aleatorio classwt

Tengo un algoritmo de bosque aleatorio que funciona razonablemente bien. Leí aquí acerca de la importancia de classwt (los priors de las clases) y decidí probarlos. Tengo 18 columnas, cada una con más de 1000 puntos de datos y sólo 2 clases. La clase -1 está presente alrededor del 75% de las veces, mientras que la clase 1 lo está el 25% restante.

Ahora las preguntas:

  1. ¿Por qué no es necesario que las priores sumen 1?
  2. He utilizado los priors anteriores (.75, .25) y el rendimiento ha sido el mismo o significativamente peor. ¿Por qué classwt no mejora el rendimiento? ¿Estoy haciendo algo mal?

4voto

Mirko Friedenhagen Puntos 304

1 - por qué classwt no necesita añadir a uno

El vector classwt se normaliza de una vez por todas en el nivel c.

    /* Normalize class weights. */
normClassWt(cl, nsample, nclass, *ipi, classwt, classFreq)

línea169 v.4.6-12 - https://github.com/cran/randomForest/blob/master/src/rf.c

2 - ¿por qué disminuye mi rendimiento cuando añado priors?

resumiendo: has aumentado el prior al revés de lo que esperabas. También necesitas tener una idea más clara de cuál es tu métrica de rendimiento del modelo definido y cuál debería ser. Echa un vistazo a este hilo sobre la aplicación práctica, y más enlaces a un artículo que compara classwt contra la estratificación. hilo(s) relacionado(s) sobre validación cruzada

En primer lugar, hay que definir el rendimiento. Algunas medidas de rendimiento a veces se pueden falsear (precisión de la clasificación, AUC de la clase acc, recuperación, etc.), así que elija su métrica de rendimiento con cuidado. Dado que tiene un 75% de la clase '-1' puedo predecir simplemente que cada nueva observación pertenece a esta clase y conseguiré una precisión de clasificación del 75%. Aquí "juego" con la métrica cambiando el umbral de corte.

Puede dividir el rendimiento de la predicción en resolución y calibración. La primera es la capacidad de clasificar las predicciones de más probable a menos probable. Creo que el AUC de la curva ROC es una buena medida general de este rendimiento. Sin embargo, es posible que prefiera la sensibilidad a la especificidad o viceversa, en función de la tarea que tenga entre manos. La calibración es la capacidad de los modelos para predecir la probabilidad de clase correcta para predicciones en promedio dada una probabilidad de clase verdadera. Los modelos pueden separar bien las clases, aunque sigan confiando demasiado o poco en su capacidad para hacerlo. Quizá sea problemático que un modelo prediga un 99,99% cuando sólo era un 95%. Lograr sólo una buena calibración es fácil, basta con predecir cualquier nueva observación aleatoria igual a la tasa base. 75%-25% en su caso. A veces no te importa la estimación exacta de la probabilidad. Usted acaba de elegir las predicciones de la parte superior. Las predicciones bien calibradas son muy útiles, si quieres calcular cuál sería el impacto de actuar sobre dicha predicción. ¿Debería usted, como compañía telefónica, llamar a un cliente identificado para que se marche y ofrecerle una oferta mejor para que se quede? Si su modelo es demasiado confiado, puede ofrecer un plan de telefonía móvil más barato a demasiados clientes, aunque no se hubieran marchado. La puntuación de Breier es una métrica global adecuada que evalúa tanto la resolución como la calibración, y sólo puede mejorarse haciendo mejores modelos globales. (Siempre hay que tener cuidado con la interpretación causal de las relaciones observadas. En el ejemplo del teléfono, también deben establecerse estimaciones/supuestos sobre el efecto dado de la intervención.

Te equivocas en la parte de los antecedentes. Veo que el manual es un poco confuso en esta parte, ya que sólo dice classwt son los mismos que los priors. Su prior por defecto es su tasa base, la distribución de clases objetivo de su conjunto de entrenamiento. En la implementación de R puede modificar la prior ya sea por classwt o sampsize / strata . Los dos enfoques parecen funcionar igual de bien en lo que respecta a la resolución. Para conjuntos de datos muy desequilibrados a partir de 1:10, el reequilibrado puede mejorar la resolución. Tu conjunto de datos es sólo 1:4, así que no espero grandes mejoras.

Si no está de acuerdo con el valor previo predeterminado que representa el índice base de su conjunto de entrenamiento, puede ajustar el valor previo. Prefiero sampsize / strata porque es más fácil y transparente ajustar el prior. En su caso, partió de un 75%-25%, lo que hizo fue aumentar el peso de la clase dominante sobre la clase rara. De este modo, ajustó la priorización de $.75^2 /(.75^2+.25^2) = .9$ = 90% y viceversa 10%. Esto es sólo una aproximación, pero el punto es que usted aumentó su expectativa de la ocurrencia de la clase '-1' incluso más allá. Cuando pruebe su rendimiento con la precisión de clasificación validada cruzada fuera de la bolsa, este ajuste previo reducirá la puntuación de rendimiento. Por último, usted es libre de hacer cualquier corrección de las predicciones después de cualquier función imaginable. Por ejemplo, yo juego con la corrección de Elkan, donde primero estratifico para aumentar la resolución del modelo de bosque aleatorio y luego corrijo las probabilidades predichas en bruto con el método de Elkan para volver a calibrar la tasa base.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X