El C5.0
Se utilizó un modelo de clasificación en este problema de 4 clases de datos con $N_{train}$ =165, $P$ =11, utilizando caret
R-package ejecutando el siguiente código. La opción de aventar fue afinada en el modelo, que es un tipo de enfoque de selección de características. Este extracto que cito con respecto a winnowing del libro complementario de caret
En mi opinión, un libro imprescindible para darse cuenta de las joyas ocultas codificadas en el paquete:
Kuhn M, Johnson K. Applied predictive modeling. 1ª edición. New York: Springer. 2013 .
C5.0 también dispone de una opción para depurar o eliminar predictores: un algoritmo inicial descubre qué predictores tienen una relación con el resultado, y el modelo final se crea sólo con los predictores importantes. importantes. Para ello, el conjunto de entrenamiento se divide aleatoriamente por la mitad y un árbol para evaluar la utilidad de los predictores (llamado "árbol"). de los predictores (llamado "árbol de limpieza"). Dos procedimientos caracterizan la importancia de cada predictor para el modelo: 1. Los predictores se consideran poco importantes si no están en ninguna división del árbol de limpieza. 2. La mitad de las muestras del conjunto de entrenamiento no incluidas para crear el árbol de limpieza se utiliza para estimar la tasa de error del árbol. La tasa de error de tasa de error también se estima sin cada predictor y se compara con la tasa de error cuando se utilizan todos los predictores. Si la tasa de error mejora sin el predictor, se considera irrelevante y se y se elimina provisionalmente.
c50Grid <- expand.grid(.trials = c(1:9, (1:10)*10),
.model = c("tree", "rules"),
.winnow = c(TRUE, FALSE))
c50Grid
set.seed(1) # important to have reproducible results
c5Fitvac <- train(Class ~ .,
data = training,
method = "C5.0",
tuneGrid = c50Grid,
trControl = ctrl,
metric = "Accuracy", # not needed it is so by default
importance=TRUE, # not needed
preProc = c("center", "scale"))
> c5Fitvac$finalModel$tuneValue
trials model winnow
16 70 tree FALSE
Salida de sintonía CV:
Extracto de la salida del árbol C5.0:
> c5Fitvac$finalModel$tree
[1] "id=\"See5/C5.0 2.07 GPL Edition 2014-01-22\"\nentries=\"70\"\ntype=\"2\" class=\"Q\" freq=\"9,16,60,80\" att=\"IL17A\" forks=\"3\" cut=\"0.92485309\"\ntype=\"0\" class=\"Q\"\ntype=\"2\" class=\"Q\" freq=\"0,4,59,80\" att=\"IL23R\" forks=\"3\" cut=\"0.26331303\"\ntype=\"0\" class=\"Q\"\ntype=\"2\" class=\"Q\" freq=\"0,4,19,80\" att=\"IL12RB2\" forks=\"3\" cut=\"0.41611555\"\ntype=\"0\" class=\"Q\"\ntype=\"2\" class=\"Q\" freq=\"0,4,9,80\" att=\"IL23R\" forks=\
Ahora la importancia de los predictores:
> predictors(c5Fitvac )
[1] "IL23R" "IL12RB2" "IL8" "IL23A" "IL6ST" "IL12A" "IL12RB1"
[8] "IL27RA" "IL12B" "IL17A" "EBI3"
Preguntas:
- ¿Por qué es en la trama, el
accuracy
niveles de No-descubrimiento alrededor de dos veces el del descabezamiento? ¿Puede ayudar a interpretar esta salida cuando dice winnow = FALSE? - ¿Cómo visualizar la salida del árbol, en lugar del texto basura computado que aparecía en mi caso? he aquí ¿un árbol en lugar de símbolos amontonados?