2011-07-05 18 views
5

Quiero verificar dos conceptos con los que no estoy seguro respecto del conjunto de entrenamiento para el aprendizaje de clasificadores. Cuando seleccionamos registros para nuestros datos de entrenamiento, ¿seleccionamos un número igual de registros por clase, sumando a N o debería ser aleatoriamente elegir N número de registros (independientemente de la clase)?cómo seleccionar datos de entrenamiento para el clasificador de bayes ingenuos

Intuitivamente estaba pensando en lo primero, pero ¿las probabilidades de clase anterior serían iguales y no serían realmente útiles?

Respuesta

1

El enfoque preferido es usar la validación cruzada K-Fold para recoger datos de aprendizaje y prueba.

Cita de Wikipedia:

K-veces la validación cruzada

En K-veces la validación cruzada, la muestra original es al azar dividida en submuestras K. De las submuestras K , una única submuestra es retenida como datos de validación para probando el modelo, y las muestras K - 1 restantes se utilizan como datos de formación . El proceso de validación cruzada es y luego se repite K veces (los pliegues), con cada una de las submuestras K usadas exactamente una vez como datos de validación. Los resultados de K de los pliegues pueden promediarse (o combinarse de otra forma) para producir una única estimación. La ventaja de este método sobre repetida azar submuestreo es que todos los observaciones se utilizan tanto para entrenamiento y de validación, y cada observación se utiliza para la validación exactamente una vez. Se usa comúnmente validación cruzada de 10 veces .

En estratificado K-veces la validación cruzada, los pliegues se seleccionan de modo que el significa valor de respuesta es aproximadamente iguales en todos los pliegues. En el caso de una clasificación dicotómica, este significa que cada pliegue contiene aproximadamente las mismas proporciones de los dos tipos de etiquetas de clase.

Siempre debe adoptar el enfoque común para obtener resultados comparables con otros datos científicos.

7

Depende de la distribución de sus clases y la determinación solo puede hacerse con el conocimiento del dominio del problema en cuestión. Puede hacer las siguientes preguntas:

  • ¿Hay dos clases que son muy similares y que el alumno posee información suficiente para distinguir entre ellos?
  • ¿Hay una gran diferencia en las probabilidades previas de cada clase?

Si es así, probablemente deba redistribuir las clases.

En mi experiencia, no hay daño en la redistribución de las clases, pero no siempre es necesario.

Realmente depende de la distribución de sus clases. En el caso de detección de fraude o intrusión, la distribución de la clase de predicción puede ser inferior al 1%. En este caso, debe distribuir las clases de manera uniforme en el conjunto de capacitación si desea que el clasificador aprenda las diferencias entre cada clase. De lo contrario, producirá un clasificador que clasifica correctamente más del 99% de los casos sin identificar correctamente un caso de fraude, que es el objetivo de crear un clasificador para empezar.

Una vez que tenga un conjunto de clases distribuidas uniformemente, puede utilizar cualquier técnica, como k-fold, para realizar la capacitación real.

Otro ejemplo donde las distribuciones de clases deben ajustarse, pero no necesariamente en un número igual de registros para cada una, es el caso de determinar letras mayúsculas del alfabeto a partir de sus formas.

Si toma una distribución de letras de uso común en el idioma inglés para entrenar al clasificador, casi no habrá casos, si los hubiera, de la letra Q. Por otro lado, la letra O es muy común. Si no redistribuye las clases para permitir el mismo número de Q y O, el clasificador no tiene suficiente información para distinguir alguna vez un Q. Necesita alimentarlo con suficiente información (es decir, más Q s) para que pueda determinar que Q y O son de hecho letras diferentes.

+0

He leído sobre k-fold, provisto por @fyr. Estoy confundido. Después de tener los juegos de entrenamiento distribuidos uniformemente por clase, ¿qué conjuntos proporciono para entrenar al clasificador para el uso de clasificación real? Mi anterior es incluso creo: como c1: 90% y c2: 10%. – goh

+1

Crea un conjunto de datos completamente nuevo con clases distribuidas uniformemente. A continuación, utilice estos datos nuevos y particínelos en capacitación, validación cruzada y prueba según sea necesario. k-fold es una forma muy común de dividir los datos en entrenamiento y validación cruzada. –

1

Creé una implementación de un clasificador Bayesiano para determinar si una muestra es NSFW (No es seguro para el trabajo) mediante el examen de la aparición de palabras en los ejemplos. Al entrenar un clasificador para la detección de NSFW, intenté hacerlo de modo que cada clase en los conjuntos de entrenamiento tenga la misma cantidad de ejemplos. Esto no funcionó tan bien como lo había planeado, ya que una de las clases tenía muchas más palabras por ejemplo que la otra clase.

Como estaba calculando la probabilidad de NSFW basado en estas palabras, encontré que funcionaba equilibrar las clases según su tamaño real (en MB). Probé la validación de las 10 líneas cruzadas para ambos enfoques (equilibrando por el número de ejemplos y el tamaño de las clases) y encontré que equilibrar por el tamaño de los datos funcionaba bien.

Cuestiones relacionadas