5 votos

Un extraño patrón de resultados de la validación cruzada

Digamos que estoy tratando de predecir, sobre un total de 10 de las características físicas (altura, peso, etc..), si una persona es hombre o mujer. El tamaño de la población es de 150, así que tengo un 150x10 matriz de datos. Voy a construir un árbol de decisión utilizando el rpart paquete , y obtener un 80% de la retrospectiva de precisión para hombres y mujeres. Animado, me proceder a la validación cruzada a través de salir de-50-out: selección aleatoria de 100 individuos a actuar como el conjunto de entrenamiento para el árbol de decisión y 50 individuos para actuar como el conjunto de pruebas. La exactitud de la predicción se guarda como un dos vector columna (pred. la precisión para los varones, pred. la precisión de las hembras). Me repito 1000 veces, y la parcela resultante 1000x2 de la matriz. No sé qué hacer con el patrón resultante (que se adjunta también una parcela de 10.000 iteraciones para que el patrón que estoy hablando puede ser más fácil de ver). Es simplemente un caso de algún sesgo en el muestreo de la función combinada con los pobres de la capacidad predictiva del modelo? Cross validation, 1k iterations Cross validation, 10k iterations

Edit: Una parcela para la 10k iteraciones, de color basado en la cantidad de varones en el subconjunto de prueba. (Edición #2 - prettyfied a través de ggplot2) enter image description here

Edit 3 : un diagrama de densidad de los resultados enter image description here

4voto

unk2 Puntos 36

Ok, voy a tratar de completar mis comentarios para hacer de él una respuesta. Los patrones que se ve es debido a que su procedimiento sólo se puede dar a un conjunto discreto de respuestas.

Si se mantiene el número de machos en su conjunto de pruebas constante, todos los posibles resultados se acostará sobre una rejilla con una densidad de $1/\#\text{male}$ en el masculino precisión del eje y $1/\#\text{female}$ en la hembra la precisión del eje. Así que esto le dará líneas rectas.

Las curvas observe también son un poco más sutiles. Mira este ejemplo: digamos que usted tiene $m$ varones, $f$ mujeres y $m_k$ clasificados correctamente los machos y $f_k$ clasificados correctamente fk hembras. Usted consigue el punto $(m_k/m,f_k/f)$. Tenga en cuenta que $f = 50 - m$. Si usted cambia de $m$, dejando $m_k$ $f_k$ constante ($m_k < m$$f_k < 50 -m$ siendo necesario!) usted obtiene una ecuación diferencial como la relación entre el$m_k/m$$f_k/f$.

Habrá también probablemente curvas se corresponden con el número de hombres y el número de clasificados correctamente mujeres, hombres o ambos cambian por 1.

También me gustaría señalar que la trama no puede dar una impresión exacta, debido a que muchos de los puntos que estarán allí varias veces, mientras que otros estarán allí sólo una vez. El rendimiento por lo tanto, podría ser mejor (o peor) de lo que parece ser.

También se puede ver en la trama de todos los posibles resultados para ayudarle a visualizar este:

output <- NULL
final.frame.list <- vector("list", 49)

for (i in 1:49)
{
    next.output <- NULL
    for (j in 0:i)
    {
        acc <- j/i
        acc2 <- seq(0,1, b=1/(50-i))
        next.output <- rbind(next.output, data.frame(m.acc = acc, f.acc = acc2))
    }
    final.frame.list[[i]] <- next.output
}
final.frame <- do.call(rbind, final.frame.list)
plot(final.frame)

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