r machine-learning classification h2o gbm

¿Cómo obtener una importancia variable diferente para cada clase en un h2o GBM binario en R?



machine-learning classification (2)

Estoy tratando de explorar el uso de un GBM con h2o para un problema de clasificación para reemplazar una regresión logística (GLM). La no linealidad y las interacciones en mis datos me hacen pensar que un GBM es más adecuado.

He ejecutado un GBM de referencia (ver más abajo) y he comparado el AUC con el AUC de la regresión logística. El GBM se desempeña mucho mejor.

En una regresión logística lineal clásica, uno podría ver la dirección y el efecto de cada uno de los predictores (x) en la variable de resultado (y).

Ahora, me gustaría evaluar la importancia variable de la estimación de GBM de la misma manera.

¿Cómo se obtiene la importancia variable para cada una de las (dos) clases?

Sé que la importancia variable no es lo mismo que el coeficiente estimado en una regresión logística, pero me ayudaría a comprender qué predictor afecta a qué clase.

Otros han hecho preguntas similares , pero las respuestas proporcionadas no funcionarán para el objeto H2O.

Cualquier ayuda es muy apreciada.

example.gbm <- h2o.gbm( x = c("list of predictors"), y = "binary response variable", training_frame = data, max_runtime_secs = 1800, nfolds=5, stopping_metric = "AUC")


AFAIS, cuanto más poderoso es un método de aprendizaje automático, más complejo es para explicar lo que sucede debajo de él.

Las ventajas del método GBM (como ya mencionó) también traen dificultades para entender el modelo. Esto es especialmente cierto para varialbes numéricos cuando un modelo GBM puede utilizar rangos de valores de manera diferente que algunos pueden tener impactos positivos mientras que otros tienen efectos negativos.

Para GLM , cuando no hay interacción especificada, una variable numérica sería monotónica, por lo que puede tener un examen de impacto positivo o negativo.

Ahora que una vista total es difícil, ¿existe algún método para analizar el modelo? Hay 2 métodos con los que podemos comenzar:

Parcela de dependencia parcial

h2o proporciona h2o.partialplot que proporciona el efecto parcial (es decir, marginal) para cada variable, que se puede ver como el efecto:

library(h2o) h2o.init() prostate.path <- system.file("extdata", "prostate.csv", package="h2o") prostate.hex <- h2o.uploadFile(path = prostate.path, destination_frame = "prostate.hex") prostate.hex[, "CAPSULE"] <- as.factor(prostate.hex[, "CAPSULE"] ) prostate.hex[, "RACE"] <- as.factor(prostate.hex[,"RACE"] ) prostate.gbm <- h2o.gbm(x = c("AGE","RACE"), y = "CAPSULE", training_frame = prostate.hex, ntrees = 10, max_depth = 5, learn_rate = 0.1) h2o.partialPlot(object = prostate.gbm, data = prostate.hex, cols = "AGE")

Analizador individual

LIME paquete LIME [ https://github.com/thomasp85/lime] proporciona la capacidad de verificar la contribución de las variables para cada una de las observaciones. Afortunadamente, este paquete r es compatible con h2o ya.


Puedes probar h2o.varimp(object)