03:00
Introducciendo Tidymodels
¿Como ajustar un modelo linear en R?
¿De cuantas maneras sabes como ajustar este tipo de modelo?
03:00
lm
para regresión linear
glm
para regresión linear generalizada
glmnet
para regresión regularizada
keras
para regresión dentro de Tensorflow
stan
para regresión bayensiana
spark
para datos “grandes”
Corre el “chunk” arbol_espec
en tu archivo .qmd
.
Cambia el código para que utilize una regresión linear
El listado de modelos se encuentra aquí: https://www.tidymodels.org/find/parsnip/
Reto: Edita el código para usar otro tipo de modelo. Por ejemplo, trata de usar el árbol disponible dentro del paquete partykit, o trata un modelo de tipo diferente
05:00
\(log(\frac{p}{1 - p}) = \beta_0 + \beta_1\cdot \text{A}\)
El resultado es decidido usando una serie de decisiones basados en las variables predictivas
Primero, el arbol crece hasta que se llega a una decision
Después, el arbol es recortado para que no sea tan complejo
workflow()
? workflow
maneja nuevos niveles factoriales mejor que las herramientas regulares de Rworkflow
encaja todo el processo de modelamiento, desde la creación (fit()
) del modelo, hasta el uso del modelo (predict()
)arbol_espec <-
decision_tree(cost_complexity = 0.002) %>%
set_mode("classification")
arbol_espec %>%
fit(propina ~ ., data = taxi_entrenar)
#> parsnip model object
#>
#> n= 8000
#>
#> node), split, n, loss, yval, (yprob)
#> * denotes terminal node
#>
#> 1) root 8000 616 si (0.92300000 0.07700000)
#> 2) distancia>=14.12 2041 68 si (0.96668300 0.03331700) *
#> 3) distancia< 14.12 5959 548 si (0.90803826 0.09196174)
#> 6) distancia< 5.275 5419 450 si (0.91695885 0.08304115) *
#> 7) distancia>=5.275 540 98 si (0.81851852 0.18148148)
#> 14) compania=Chicago Independents,City Service,otra,Sun Taxi,Taxi Affiliation Services,Taxicab Insurance Agency Llc 478 68 si (0.85774059 0.14225941) *
#> 15) compania=Flash Cab 62 30 si (0.51612903 0.48387097)
#> 30) dia=Jue 12 2 si (0.83333333 0.16666667) *
#> 31) dia=Lun,Mar,Mie,Vie,Sab,Dom 50 22 no (0.44000000 0.56000000)
#> 62) distancia>=11.77 14 4 si (0.71428571 0.28571429) *
#> 63) distancia< 11.77 36 12 no (0.33333333 0.66666667) *
arbol_espec <-
decision_tree(cost_complexity = 0.002) %>%
set_mode("classification")
workflow() %>%
add_formula(propina ~ .) %>%
add_model(arbol_espec) %>%
fit(data = taxi_entrenar)
#> ══ Workflow [trained] ════════════════════════════════════════════════
#> Preprocessor: Formula
#> Model: decision_tree()
#>
#> ── Preprocessor ──────────────────────────────────────────────────────
#> propina ~ .
#>
#> ── Model ─────────────────────────────────────────────────────────────
#> n= 8000
#>
#> node), split, n, loss, yval, (yprob)
#> * denotes terminal node
#>
#> 1) root 8000 616 si (0.92300000 0.07700000)
#> 2) distancia>=14.12 2041 68 si (0.96668300 0.03331700) *
#> 3) distancia< 14.12 5959 548 si (0.90803826 0.09196174)
#> 6) distancia< 5.275 5419 450 si (0.91695885 0.08304115) *
#> 7) distancia>=5.275 540 98 si (0.81851852 0.18148148)
#> 14) compania=Chicago Independents,City Service,otra,Sun Taxi,Taxi Affiliation Services,Taxicab Insurance Agency Llc 478 68 si (0.85774059 0.14225941) *
#> 15) compania=Flash Cab 62 30 si (0.51612903 0.48387097)
#> 30) dia=Jue 12 2 si (0.83333333 0.16666667) *
#> 31) dia=Lun,Mar,Mie,Vie,Sab,Dom 50 22 no (0.44000000 0.56000000)
#> 62) distancia>=11.77 14 4 si (0.71428571 0.28571429) *
#> 63) distancia< 11.77 36 12 no (0.33333333 0.66666667) *
arbol_espec <-
decision_tree(cost_complexity = 0.002) %>%
set_mode("classification")
workflow(propina ~ ., arbol_espec) %>%
fit(data = taxi_entrenar)
#> ══ Workflow [trained] ════════════════════════════════════════════════
#> Preprocessor: Formula
#> Model: decision_tree()
#>
#> ── Preprocessor ──────────────────────────────────────────────────────
#> propina ~ .
#>
#> ── Model ─────────────────────────────────────────────────────────────
#> n= 8000
#>
#> node), split, n, loss, yval, (yprob)
#> * denotes terminal node
#>
#> 1) root 8000 616 si (0.92300000 0.07700000)
#> 2) distancia>=14.12 2041 68 si (0.96668300 0.03331700) *
#> 3) distancia< 14.12 5959 548 si (0.90803826 0.09196174)
#> 6) distancia< 5.275 5419 450 si (0.91695885 0.08304115) *
#> 7) distancia>=5.275 540 98 si (0.81851852 0.18148148)
#> 14) compania=Chicago Independents,City Service,otra,Sun Taxi,Taxi Affiliation Services,Taxicab Insurance Agency Llc 478 68 si (0.85774059 0.14225941) *
#> 15) compania=Flash Cab 62 30 si (0.51612903 0.48387097)
#> 30) dia=Jue 12 2 si (0.83333333 0.16666667) *
#> 31) dia=Lun,Mar,Mie,Vie,Sab,Dom 50 22 no (0.44000000 0.56000000)
#> 62) distancia>=11.77 14 4 si (0.71428571 0.28571429) *
#> 63) distancia< 11.77 36 12 no (0.33333333 0.66666667) *
Corre el “chunk” arbol_flujo
en tu archivo .qmd
.
Edita el codigo para crear un flujo con un modelo que tú elijas
Reto: ¿Que otros “preprocesadores”, aparte de formulas, podemos usar en workflow
?
05:00
¿Como usar su nuevo modelo arbol_flujo
?
Corre:
predict(arbol_flujo, new_data = taxi_prueba)
¿Que resultado te dio?
03:00
Corre:
augment(arbol_flujo, new_data = taxi_prueba)
¿Que resultado te dio?
03:00
new_data
) y los resultados siempre var a ser el mismo¿Como podemos entender nuestro nuevo modelo arbol_flujo
?
¿Como podemos entender nuestro nuevo modelo arbol_flujo
?
Puedes extraer varios componentes de tu flujo usando las funciones que empiezan con extract_*()
⚠️ ¡Nunca trate de predecir usando los componentes extraídos!
¿Como podemos entender nuestro nuevo modelo arbol_flujo
?
Puedes usar tu flujo ajustado para obtener explicaciones del modelo o de las predicciones:
Para aprender más: https://www.tmwr.org/explain.html
Extrae el “motor” del modelo de tu flujo y examínalo
05:00