Clasificación con datos parcialmente "desconocidos"


11

Supongamos que quiero aprender un clasificador que toma un vector de números como entrada y le da una etiqueta de clase como salida. Mis datos de entrenamiento consisten en una gran cantidad de pares de entrada-salida.

Sin embargo, cuando vengo a probar algunos datos nuevos, estos datos generalmente solo están parcialmente completos. Por ejemplo, si el vector de entrada es de longitud 100, solo 30 de los elementos pueden tener valores, y el resto son "desconocidos".

Como ejemplo de esto, considere el reconocimiento de imágenes donde se sabe que parte de la imagen está ocluida. O considere la clasificación en un sentido general donde se sabe que parte de los datos está corrupta. En todos los casos, sé exactamente qué elementos en el vector de datos son las partes desconocidas.

Me pregunto cómo puedo aprender un clasificador que funcione para este tipo de datos. Simplemente podría establecer los elementos "desconocidos" en un número aleatorio, pero dado que a menudo hay más elementos desconocidos que conocidos, esto no parece una buena solución. O bien, podría cambiar aleatoriamente elementos en los datos de entrenamiento a "desconocidos" y entrenar con estos en lugar de los datos completos, pero esto podría requerir un muestreo exhaustivo de todas las combinaciones de elementos conocidos y desconocidos.

En particular, estoy pensando en las redes neuronales, pero estoy abierto a otros clasificadores.

¿Algunas ideas? ¡Gracias!


en.m.wikipedia.org/wiki/Missing_data podría ser un lugar para comenzar.
Hatshepsut

Creo que el aprendizaje semi-supervisado es más el caso donde los datos de capacitación no están completamente etiquetados. En mi caso, todos mis datos de entrenamiento están etiquetados, pero las partes individuales de los datos de prueba son "desconocidas".
Karnivaurus

Aprendizaje semi-supervisado con Ladder Networks: github.com/CuriousAI/ladder
itdxer

Respuestas:


2

Creo que hay una forma razonable de hacer que funcione con las redes neuronales.

Deje que su valor para desconocido sea ​​0. Ahora, en el entrenamiento, elige una entrada y pone aleatoriamente algunos de sus valores a 0 con probabilidad , donde p es su fracción esperada de entradas faltantes en el momento de la prueba. Tenga en cuenta que la misma entrada en diferentes iteraciones tendrá ceros en diferentes posiciones.p

No lo he visto antes, pero esto sería muy similar a hacer Dropout (un método de regularización bien conocido en Redes Neuronales) en las neuronas de entrada, en lugar de las neuronas ocultas. No creo que sea una buena idea hacerlo en general, pero si se ve obligado a hacerlo (como su caso), al menos está lo suficientemente teóricamente cerca de algo que se sabe que funciona.


1

Creo que hay algunas opciones que funcionan con cualquier clasificador:

  • Impute los valores faltantes con un solo valor, como la media o la mediana del conjunto de entrenamiento o algún valor predicho a partir de las partes observadas de la entrada, o simplemente use un número aleatorio o una constante.
  • Utilice varios valores diferentes para las incógnitas y agregue los resultados, p. Ej. Promedie

Aparte de eso, podría usar clasificadores basados ​​en árboles (por ejemplo, bosques aleatorios) y si un árbol necesita evaluar una división en una característica que falta, podría pasar los datos a ambos nodos secundarios.

Una tercera opción es usar un clasificador generativo que modele la distribución conjunta completa donde son sus entradas e la etiqueta de clasificación. Con eso, idealmente marginarías sobre las partes desconocidas de , es decir, probarías cualquier valor para las partes desconocidas de y promediarías los resultados ponderados por la probabilidad de esa imputación. Esto podría hacerse analíticamente en forma cerrada para algunos clasificadores, por ejemplo, un modelo de Análisis discriminante lineal, o aproximadamente mediante un muestreo de las incógnitas, por ejemplo, para una máquina de Boltzmann restringida o sus variantes profundas (que están relacionadas con las redes neuronales de avance).x y x xp(x,y)xyxx


No creo que funcione. Use un ejemplo típico de la visión por computadora, cada píxel de una imagen puede estar asociado con diferentes partes de un objeto. Por ejemplo, el píxel (50,50) de la imagen 1 es el ojo de un gato, pero el gato se mueve un poco en la imagen 2, por lo que (50, 50) es solo un píxel del fondo. Si la ubicación de NA, es decir. oclusión aleatoria, varía según la observación, su imputación no funcionará.
horaceT
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.