4 votos

Comprensión de los resultados del modelo de clasificación C5.0 mediante el paquete CARET

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:
enter image description here

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:

  1. ¿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?
  2. ¿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?

4voto

VarLogRant Puntos 284

Gracias por el enchufe =]

1) El proceso de depuración está eliminando erróneamente predictores que pueden mejorar la precisión del modelo. Dentro del bucle de validación cruzada, el proceso de depuración cree que está mejorando la precisión, pero eso no se sostiene cuando se utilizan otras muestras para evaluar el rendimiento. A veces ayuda y otras veces no

2) Todavía no hay un gráfico del árbol (pero está en mi lista). Intenta usar el summary función:

> set.seed(1)
> mod <- train(Species ~ ., data = iris, method = "C5.0")
> ## This data set liked rules over trees but it works the same for trees
> summary(mod$finalModel)

Call:
<snip>
-----  Trial 0:  -----

Rules:

Rule 0/1: (50, lift 2.9)
        Petal.Length <= 1.9
        ->  class setosa  [0.981]

Rule 0/2: (48/1, lift 2.9)
    Petal.Length > 1.9
    Petal.Length <= 4.9
    Petal.Width <= 1.7
    ->  class versicolor  [0.960]
<snip>
Evaluation on training data (150 cases):

Trial           Rules     
-----     ----------------
      No           Errors

   0         4    4( 2.7%)
   1         5    8( 5.3%)
   2         3    6( 4.0%)
   3         6   12( 8.0%)
   4         4    5( 3.3%)
   5         7    3( 2.0%)
   6         3    8( 5.3%)
   7         8   15(10.0%)
   8         4    3( 2.0%)
   9         5    5( 3.3%)
boost             0( 0.0%)   <<

   (a)   (b)   (c)    <-classified as
  ----  ----  ----
    50                (a): class setosa
          50          (b): class versicolor
                50    (c): class virginica

Attribute usage:

100.00% Petal.Length
 66.67% Petal.Width
 54.00% Sepal.Width
 46.67% Sepal.Length

Time: 0.0 secs

HTH,

Max

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X