6 votos

Árboles y validación cruzada - misclass #

Yo soy de la cruz validación de un árbol de clasificación y soy capaz de trazar el número de observaciones misclassed por diferentes tamaños de los árboles. Mi pregunta es, ¿qué significa para volver ", el" número misclassed, para un determinado tamaño de los árboles, cuando no se k diferentes pistas de que el tamaño del árbol (donde cada uno de los k se ejecuta presumiblemente tiene un número diferente misclassed)?

Varios de los textos que he leído dicen que es el promedio de los k pliegues que deben ser devueltos para cada tamaño de árbol, pero no creo que esto es lo que yo estoy haciendo ya que los números veo que trazan para el "número de misclassed" son siempre perfecto enteros.

He aquí un ejemplo:

library('ISLR')
attach(Carseats)

High = cut(Sales, c(-Inf, 8, Inf), labels=c("Small", "Large"))
Carseats = data.frame(Carseats, High)

set.seed(2)
train = sample(1:nrow(Carseats), 200)

library('tree')
tr0 = tree(High ~ . -Sales, data=Carseats, subset=train)

set.seed(3)
tr0.cv = cv.tree(tr0, FUN=prune.misclass)
plot.tree.sequence(tr0.cv)

tr0.cv$dev 
#[1] 55 55 53 52 50 56 69 65 80
# These don't look like averages across k folds

Actualización

Desde mi ejemplo, he aquí el árbol diferentes tamaños y sus correspondientes valores dev (aquí, el significado de número de misclassed)

tr0.cv$size
[1] 19 17 14 13  9  7  3  2  1
tr0.cv$dev
[1] 55 55 53 52 50 56 69 65 80

De modo que tenemos de un árbol de tamaño 19, el número de misclassed es de 55. Así es esto decir que en las 10 pistas, la suma total de todos los misclasses fue de 55? Por lo tanto, alrededor de 5,5 misclasses en promedio, por cada árbol individual ajuste de tamaño de 19?

Esto parece sospechoso, porque cuando hago el ajuste de un árbol de tamaño 19, veo que el número misclassed como 21.

tr0.Prune19 = prune.misclass(tr0, best=19)
summary(tr0.Prune19)

Classification tree:
tree(formula = High ~ . - Sales, data = Carseats, subset = train)
Number of terminal nodes:  19 
Residual mean deviance:  0.4282 = 77.51 / 181 
Misclassification error rate: 0.105 = 21 / 200 

Hacer esto 10 veces yo esperaría que el total de la suma del número misclassed a ser aproximadamente de 200, que es muy diferente de la reportada 55. Concedido, sé que a través de 10 diferentes pistas habrá cierta variabilidad en el número de misclassed, pero esto suena como demasiado grande de una discrepancia. Me estoy perdiendo algo?

1voto

Tiberia Puntos 121

Devuelve que la suma de las desviaciones de cada uno de los 10 se ajusta, para una gama de parámetros de complejidad.

de referencia Manual de... "Una copia de diversión aplicado al objeto, con componente dev sustituida los resultados validados de Cruz de la suma de los componentes de desarrollo de cada ajuste."

de código...

Aviso el plearn$ dev se suma a través de pliegues.

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