7 votos

Entrenamiento de modelos múltiples para clasificación usando el mismo conjunto de datos

Para mi problema de clasificación, estoy tratando de clasificar un objeto como Bueno o Malo. He sido capaz de crear una buena primera clasificación de paso que separa los datos en 2 grupos mediante SVM.

Después de la sintonización de los parámetros de la SVM mediante una formación/conjunto de exclusiones (75% de la formación, el 25% de exclusión, he obtenido los siguientes resultados del conjunto de exclusiones: Grupo 1 (modelo clasificado como Malo) consistió en un 99% Malo objetos, y el Grupo 2 (modelo clasificado como Bueno) consistió en aproximadamente el 45% Buenos objetos y el 55% Malo objetos. He comprobado el rendimiento del modelo de uso de k-fold CV (k=5) y se encontró que el modelo sea estable y relativamente realizar de manera consistente, en términos de las tasas de error en la clasificación.

Ahora, quiero pasar estos objetos a través de otra ronda de clasificación mediante la formación de otro modelo (puede o no puede ser SVM) en mi grupo 2 de bueno tal vez/quizá mal objetos para tratar y clasificar correctamente este segundo grupo ahora que me he librado de una evidente mala objetos.

Yo tenía un par de pensamientos, pero no estoy seguro de cómo proceder.

(1) Mi primera idea fue utilizar los datos de los objetos clasificados desde el conjunto de exclusiones a entrenar a otro modelo. Yo era capaz de entrenar a otro modelo de clasificación a partir de los resultados del conjunto de exclusión. El problema es que estoy utilizando menos del 25% de los datos originales, y estoy preocupado de sobreajuste en un subconjunto muy pequeño de mis datos.

(2) Mi segunda idea fue reunir a los resultados de la 5 veces CV a crear otro conjunto de datos. Mi razonamiento es que, dado que los datos se dividen en 5 partes, y cada parte se clasifican en dos grupos, a partir de un modelo formado por las otras 4 partes, pensé que podría agregado de los resultados de la predicción de las 5 piezas para obtener un clasificado versión original de mi conjunto de datos y continuar desde allí.

El único problema es que tengo una sensación de hundimiento que ambos métodos no son buenas. Podría CV arrojar algo de luz sobre algunos de los posibles próximos pasos?

Gracias!

EDITAR

Lo siento, mi pregunta estaba mal redactada. Permítanme tratar de aclarar lo que estoy tratando de hacer. Se puede pensar en él como un árbol...

  • Permítanme llamar al conjunto de datos original del Nodo 0.
  • He utilizado método de clasificación de 1 a dividir el Nodo 0 al Nodo 1 y Nodo 2.
    • El nodo 1 tiene una baja tasa de error en la clasificación (en su Mayoría consta de mala objetos)
    • El nodo 2 tiene una alta tasa de error en la clasificación (Aproximadamente incluso la mezcla de bueno y malo de los objetos)
  • Ahora quiero utilizar la clasificación del método 2 para dividir el Nodo 2 al Nodo 3 y 4

El "método de clasificación de" puede ser cualquier cosa (LDA, QDA, SVM, CARRO, Bosque Aleatorio, etc). Así que supongo que lo que estoy tratando de lograr aquí es una "clasificación" de árbol (no COMPRA), donde cada nodo es sometido a un diferente método de clasificación para la obtención de un general de alto "de la clase de pureza". Básicamente, quiero utilizar una combinación de diferentes métodos de clasificación para obtener resultados razonables.

Mi problema radica en la pérdida de datos de entrenamiento después de la primera división. Se me acaba de datos utilizables después de ejecutar a través de "método de clasificación de la 1", que fue SVM en mi caso.

7voto

Boris Tsirelson Puntos 191

Me gustaría utilizar el mismo conjunto de datos de entrenamiento para ambos modelos, y utilizar el mismo CV-pliegues para la optimización. No utilice NINGUNA de las 25% de sujeción para la formación o de optimización. Una vez que hayas ajuste a sus 2 modelos en el 75% de la formación de la muestra, evaluar su rendimiento con el uso de la exclusión.

Si usted está usando R, el símbolo de intercalación paquete de funciones para la creación de pliegues en un conjunto de datos que se pueden volver a usar para afinar varios modelos y, a continuación, evaluar su exactitud predictiva. Si desea me puede ayudar con el código de ejemplo.

Editar: Aquí está el prometido de código, modificado a partir de la viñeta para el paquete de intercalación:

#Setup
rm(list = ls(all = TRUE)) #CLEAR WORKSPACE
set.seed(123)

#Pretend we only care about virginica
Data <- iris
virginica <- Data$Species=='virginica'
Data$Species <- NULL

#Look at the variable relationships
library(PerformanceAnalytics)
chart.Correlation(Data,col=ifelse(virginica,1,2))

#Create cross-validation folds to use for multiple models
#Use 10-fold CV, repeat 5 times
library(caret)
MyFolds <- createMultiFolds(virginica, k = 10, times = 5)
MyControl <- trainControl(method = "repeatedCV", index = MyFolds,
                summaryFunction = twoClassSummary,
                classProbs = TRUE)

#Define Equation for Models
fmla <- as.formula(paste("virginica ~ ", paste(names(Data), collapse= "+")))

#Fit some models
Data$virginica <- as.factor(ifelse(virginica,'Yes','No'))

svmModel <- train(fmla,Data,method='svmRadial',
    tuneLength=3,metric='ROC',trControl=MyControl)

rfModel <- train(fmla,Data,method='rf',
    tuneLength=3,metric='ROC',trControl=MyControl)

#Compare Models
resamps <- resamples(list(
    SVM = svmModel,
    RandomForest = rfModel
    ))
summary(resamps)
densityplot(resamps,auto.key = TRUE, metric='ROC')

4voto

Nathan Long Puntos 30303

Sólo para asegurarse de que estamos en la misma página, yo la tome de su descripción que considere la posibilidad de un problema de aprendizaje supervisado, donde se conoce el Bien/el Mal estado de sus objetos, y donde se tiene un vector de características para cada uno de los objetos que desea utilizar para clasificar el objeto como Bueno o Malo. Por otra parte, el resultado de la formación de una SVM es dar un clasificador, que, en los datos de exclusión, casi no falsas predicciones incorrectas, pero el 55% de falsos Buenas predicciones. Personalmente no he trabajado con problemas con la enorme diferencia en las tasas de error en los dos grupos. Me hace pensar que la distribución de las características de los dos grupos se superponen, pero que la distribución de funciones en el grupo Malo está más distribuido. Como dos de distribución Gausiana con casi la misma media pero de mayor varianza para el grupo de los Malos objetos. Si ese es el caso, me imagino que será difícil, si no imposible, para mejorar mucho en la tasa de error de las Buenas predicciones. Puede haber otras explicaciones que yo no soy consciente de.

Habiendo dicho eso, creo que es una estrategia sensata para combinar los procedimientos de clasificación de una manera jerárquica como usted sugiere. En primer lugar, un clasificador, se divide el total del conjunto de entrenamiento en dos grupos y, a continuación, otro de los clasificadores de dividir cada uno de los grupos en los dos grupos, etc. De hecho, eso es lo que los árboles de clasificación de hacer, pero normalmente uso muy simple se divide en cada paso. No veo el problema formal en la formación sea cual sea el modelo que te gusta en los datos de entrenamiento que está calificada como Buena por la SVM. Usted no necesita utilizar los datos de exclusión. De hecho, usted no debería, si necesita los datos de exclusión para la evaluación del modelo.

La segunda sugerencia es estrechamente relacionado sólo con el grupo clasificado como Bien de sus datos de entrenamiento para entrenar a un segundo modelo. No veo ninguna razón en particular para el uso de CV basado en las clasificaciones para obtener este grupo. Sólo recuerde, que si usted va a utilizar CV, todo el proceso de capacitación debe ser realizada cada vez.

Mi sugerencia es que primero obtener una mejor comprensión de lo que la característica de las distribuciones en los dos grupos de pocas dimensiones, proyecciones y exploratorio de visualizaciones. Se podría arrojar algo de luz sobre por qué la tasa de error en las Buenas clasificaciones, es tan grande.

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