Skip to content

[R-es] PDP con XgBoost

3 messages · eric, Manuel Mendoza

#
Buenas, ¿alguien ha calculado alguna vez partial dependence plots con
XgBoost? Yo lo he conseguido con el paquete PDP y clasificación binaria,
pero llevo horas intentándolo con regresión y no hay forma. Apenas hay
ejemplos en la red, y utilizan caret o h2o, que de momento no me sirven.
Gracias,
Manuel
#
Quizá te sirve así:
Se calcula el pdp con la función partial() del paquete pdp,
luego graficas con ggplot():

# CALCULAR EL PDP
 bdst_edadagnospdp <- pdp::partial(dat.rfr, pred.var="edadagnos")

# CAMBIAR EL NOMBRE A LA COLUMNA DE DATOS CALCULADOS, PARA EL GRAFICO
 names(bdst_edadagnospdp)[2] <- "bdst_pb" 

# GRAFICAR LA CURVA CALCULADA POR PDP SOBRE EL SET DE DATOS PARA TESTING
 ggplot(dat.test, aes(edadagnos,bdst_pb)) +
    geom_density_2d_filled(show.legend = FALSE) + geom_point(size=0.1,
    col="white") + ylim(-1,6) + xlim(8,13) +
    geom_line(data=bdst_edadagnospdp, col="red", size=1.5)

la curva calculada con pdp se agrega sobre los datos para testing al
final del ggplot, en la parte de geom_line(data=bdst_edadagnospdp,
col="red", size=1.5)

puedes mirar los detalles de la funcion pdp con ?pdp.

Ojalá te sirva,

Saludos !!

Eric.




On Wed, 14 Apr 2021 21:03:39 +0200
Manuel Mendoza <mmendoza en fulbrightmail.org> wrote:

            
#
Gracias Eric (veo que tú también trasnochas), así es como lo hice con
clasificación binaria y funcionó. Con regresión me da este error (entre
otros):

Error in if (object$params$objective %in% c("reg:linear", "reg:logistic",
 : argumento tiene longitud cero

pero todo esto es bastante nuevo y apenas hay información en la red.

De todas formas, con DALEX, que me aconsejó Carlos, es rápido y sencillo.
Además, hace LIME y Shapley, que también me interesan, por lo que me paso a
DALEX.

Gracias, en cualquier caso,
Manuel

El jue, 15 abr 2021 a las 3:58, Eric Concha (<ericconchamunoz en gmail.com>)
escribió: