[R-es] Random Forest para clasificación

Carlos Ortega cof en qualityexcellence.es
Mar Abr 12 12:00:42 CEST 2016


Hola,

Si lees estas referencias puedes entender mejor las dificultades y
limitaciones que presentan los "partialPlot" para determinar su
contribución al modelo que has construido:

   -
   http://stats.stackexchange.com/questions/21152/obtaining-knowledge-from-a-random-forest#172839
   -
   http://stats.stackexchange.com/questions/92150/r-what-do-i-see-in-partial-dependence-plots-of-gbm-and-randomforest

En ellas aparece la referencia a este otro paquete "forestFloor":

   - https://cloud.r-project.org/web/packages/forestFloor/index.html

Que sí que te puede ayudar a entender de forma visual, las
relaciones/interrelaciones que existen entre la variable que quieres
analizar y el resto de tu modelo.

Por otro lado, comentarte que mi experiencia con SMOTE  (está en el paquete
DMwR) o con sus equivalentes de "caret" (upSample() - downSample() )
tienden a crear un overfit en el modelo. Para el nivel de desbalanceo que
tienes. Valores de menos del 1% en tu variable son cuando sí que cuando
interesa aplicarlo. Una alternativa es usar las funciones de coste
incluyendo valores inversamente proporcionales a la frecuencia de cada caso
(variable predictora).

Saludos,
Carlos.


El 12 de abril de 2016, 11:33, Jesús Para Fernández <
j.para.fernandez en hotmail.com> escribió:

> Mi matriz de datos inicial estaba muy desbalanceada (5% de la clase
> minoritaria), por lo que he creado con el algoritmo SMOTE un dataset
> balanceado con el que he creado el modelo, y luego sobre ese modelo he
> creado la matriz de confusión con los datos originales.
>
> Respecto a lo que me comentas, Carlos, creo que además de todo lo que
> comentas, que está bien, en micaso es necesario también saber no sólo que
> variable influye sino como influye, y esto en un randomForest es complejo,
> ya que es una caja negra.
>
> Por ello es por lo que buscaba la mejor manera, y una era medainte
> partialPlot y la otra mediante árboles de clasificación, pero esta segunda
> manera me empobrece el modelo.
>
> Un saludo
> Jesús
>
> ------------------------------
> Date: Tue, 12 Apr 2016 11:01:16 +0200
>
> Subject: Re: [R-es] Random Forest para clasificación
> From: cof en qualityexcellence.es
> To: j.para.fernandez en hotmail.com
> CC: r-help-es en r-project.org
>
> Hola,
>
> Entonces si tienes:
>
>    - La importancia de las variables (esto lo obtienes directamente con
>    "importance").
>    - Tienes la matriz de confusión.
>
> Con esto tienes bastante información sobre la bondad de tu modelo y sobre
> qué variables influyen más en tu variable objetivo.
> Lo único que veo que te haría falta es determinar:
>
>    - La precisión utilizando cualquiera de las medidas de error que
>    existen: Accuracy, Kappa, LogLoss, RSE, RMSE....
>    - Y quizás evaluar un poco más finamente tu modelo con un CV para ver
>    con amplitud si es que no estás haciendo overfitting.
>
> ¿Has hecho tu modelo directamente?. Quiero decir sin utilizar una parte
> para entrenar y otra parte para hacer "test".
>
> Saludos,
> Carlos.
>
>
> El 12 de abril de 2016, 10:39, Jesús Para Fernández <
> j.para.fernandez en hotmail.com> escribió:
>
>
> No no, eso lo he sacaod, es decir, tengo la matriz de confusión para las
> OK/NOK, lo que no entiendo es como extraer las conclusiones sobre el
> modelo, de cara a como afectan las variables. He seguido dos estrategias:
>
> 1-Crear arboles de clasificacion con las variables más importantes del
> random Forest, pero el modelo se empobrece bastante.
> 2- Sacar los partialPlot, para ver la influencia de cada variable, pero no
> termino de entender el significado del eje Y para estos gráficos. Por lo
> que he visto, con tu aportación primera, es que es el porcentaje de Votos
> OK/NOK, pero me queda la duda de saber si el 1 es el OK y el -1 el NOK o al
> revés.
>
> Gracias Carlos!
> Jesús
> ------------------------------
> Date: Tue, 12 Apr 2016 10:28:44 +0200
>
> Subject: Re: [R-es] Random Forest para clasificación
> From: cof en qualityexcellence.es
> To: j.para.fernandez en hotmail.com
> CC: r-help-es en r-project.org
>
> Hola,
>
> Entonces, por tu última pregunta, tu duda no es realmente sobre el
> significado de "partialPlot" si no realmente si a la hora de hacer tu
> modelo, "randomForest" está haciendo una buena o mala clasificación. ¿Es
> así?. Porque entonces lo que hay que aclarar es otra cosa.
>
> Si lo que quieres determinar con precisión es si cuando "randomForest" (o
> cualquier otro modelo) te está indicando que un individuo (una fila)
> pertenece o no a una clase determinada (en tu caso "OK" o "KO") lo que
> tienes que plantearte son otras cosas. Antes de hablar de ellas, prefiero
> confirmar contigo si es esto lo que buscas o no.
>
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
>
> El 12 de abril de 2016, 10:17, Jesús Para Fernández <
> j.para.fernandez en hotmail.com> escribió:
>
>
> Gracias por la pronta respuesta, pero tras leer la contestación de la
> gente, sigo sin entender muy bien la explicación.
>
> Le responden lo siguiente:
> "Each point on the partial dependence plot is the average vote percentage
> in favor of the "Yes trees" class across all observations, given a fixed
> level of TRI.
> It's not a probability of correct classification. It has absolutely
> nothing to do with accuracy, true negatives, and true positives.
> When you see the phrase
>
> Values greater than TRI 30 begin to have a positive influence for
> classification in your model
>
> is an puffed-up way of saying
>
> Values greater than TRI 30 begin to predict "Yes trees" more strongly than
> values lower than TRI 30"
>
> Es decir, que el eje Y es el total de votos de una clase frente a la otra,
> pero como está codificado con -1 y +1, como se cual es la clase OK y la NOK?
>
> Gracias
> Jesús
> ------------------------------
> Date: Tue, 12 Apr 2016 10:04:15 +0200
> Subject: Re: [R-es] Random Forest para clasificación
> From: cof en qualityexcellence.es
> To: j.para.fernandez en hotmail.com
> CC: r-help-es en r-project.org
>
>
> Hola,
>
> Aquí tienes una explicación:
>
>
> http://stats.stackexchange.com/questions/121383/interpreting-y-axis-of-a-partial-dependence-plots
>
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
> El 12 de abril de 2016, 7:13, Jesús Para Fernández <
> j.para.fernandez en hotmail.com> escribió:
>
> Buenas,
>
> Cuando estoy haciendo un random Forest para clasificación y hago el
> gráfico partialPlot, siendo mi respuesta OK/NOK, me sale en el eje X el
> valor de la variable, pero en el eje Y me salen valores de entre -1 y 1.
> ¿Qué significado tiene?
>
> Adjunto un ejemplo:
>
> https://www.dropbox.com/s/4b92lqxi3592r0d/Captura.JPG?dl=0
>
>
> Gracias!!!
>
>         [[alternative HTML version deleted]]
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
>
>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
>
>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>



-- 
Saludos,
Carlos Ortega
www.qualityexcellence.es

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es