Digamos que tengo un conjunto de instancias con etiquetas de clase asociadas. No importa cómo se etiquetaron estas instancias, sino cuán segura es su membresía de clase. Cada instancia pertenece exactamente a una clase. Digamos que puedo cuantificar la certeza de cada membresía de clase con un atributo nominal que va de 1 a 3 (muy seguro a incierto, respectivamente).
¿Existe algún tipo de clasificador que tenga en cuenta esa medida de certeza y, en caso afirmativo, está disponible en el kit de herramientas WEKA?
Me imagino que esta situación ocurre con bastante frecuencia, por ejemplo, cuando las instancias son clasificadas por seres humanos que no siempre están completamente seguros. En mi caso, tengo que clasificar imágenes y, a veces, una imagen puede pertenecer a más de una clase. Si esto sucede, le doy a la clase una alta incertidumbre, pero aún así la clasifico con una sola clase.
¿O hay otros enfoques para este problema, sin un clasificador especializado? Por ejemplo, ¿solo tomar "ciertas" clasificaciones para el entrenamiento? Me temo que en este caso, habrá más clasificaciones erróneas porque los casos "fronterizos" no están cubiertos.
fuente
Respuestas:
En primer lugar, como ya explicó @Marc Claesen, la clasificación semi-supervisada es una de las técnicas para resolver la situación en la que sabe que las clases son realmente distintas, pero no está seguro de a qué clase pertenece realmente el caso.
Sin embargo, también hay situaciones relacionadas, donde la "realidad" no es tan clara, y la suposición de tener clases realmente distintas no se cumple: los casos de borde pueden ser una realidad "física" (ver a continuación los documentos sobre una solicitud donde conocimos tal condición).
Hay una suposición crucial para los clasificadores semi-supervisados que debe asegurarse de que se cumpla: la suposición de que en el espacio de características, los límites de clase vienen junto con una baja densidad de muestra . Esto se conoce como la suposición del clúster.
Incluso si la realidad subyacente a sus datos tiene clases distintas, su conjunto de datos puede tener casos desproporcionadamente más limítrofes: por ejemplo, si su técnica de clasificación está dirigida a clasificar casos difíciles, mientras que los casos claros y fáciles no son de interés y sus datos de entrenamiento ya reflejan esto situación.
Estoy totalmente de acuerdo con usted en que excluir los casos límite a menudo es una mala idea: al eliminar todos los casos difíciles, termina con un problema artificialmente fácil. En mi humilde opinión, es aún peor que excluir los casos límite generalmente no se detiene con el entrenamiento modelo, pero los casos límite también se excluyen de la prueba, por lo tanto, probar el modelo solo con casos fáciles. Con eso, ni siquiera se daría cuenta de que el modelo no funciona bien con casos límite.
Aquí hay dos documentos que escribimos sobre un problema que difiere del suyo en que en nuestra aplicación también la realidad puede tener clases "mixtas" (una versión más general de su problema: la incertidumbre en las etiquetas de referencia también está cubierta).
C. Beleites, K. Geiger, M. Kirsch, SB Sobottka, G. Schackert y R. Salzer: clasificación espectroscópica Raman de tejidos de astrocitoma: utilizando información de referencia blanda, Anal. Bioanal Chem., 400 (2011), 2801 - 2816.
C. Beleites, R. Salzer y V. Sergo:
Validación de modelos de clasificación blanda utilizando membresías de clase parcial: un concepto extendido de sensibilidad y compañía aplicado a la clasificación de tejidos de astrocitoma
Chemom. Intell. Laboratorio. Syst., 122 (2013), 12-22.
Los enlaces van a la página del proyecto de un paquete R que desarrollé para hacer los cálculos de rendimiento. Hay más enlaces tanto a la página web oficial como a mis manuscritos de los documentos. Si bien no he usado Weka hasta ahora, entiendo que hay una interfaz para R disponible .
consideraciones prácticas:
libSVM
los ajustes mediante validación cruzada que todas las copias de cada punto de datos deben mantenerse en el mismo pliegue de validación cruzada. Por lo tanto,libSVM
el ajuste probablemente produciría un modelo de sobreajuste masivo.nnet::multinom
).fuente
libsvm
en particular. Loslibsvm
autores proporcionan una versión alternativa de cada versión en la que es posible una clasificación ponderada por instancia, evitando este problema por completo. Es este tipo de cosas lo que me lleva a usar generalmente bibliotecas de algoritmos directamente, en lugar de envoltorios como Weka / scipy / ... csie.ntu.edu.tw/~cjlin/libsvmtools/#weights_for_data_instancesEsta es una de las generalizaciones de clasificación que se abordan en el aprendizaje semi-supervisado. Si tiene una medida de certeza, puede usar enfoques que permitan ponderar las instancias de capacitación. Cuanto mayor sea la certeza, mayor será el peso de la instancia correspondiente. Ejemplos de tales enfoques incluyen SVM ponderado por instancia y regresión logística.
Estoy seguro de que Weka tiene implementaciones de estos algoritmos. Si todo lo demás falla, muestree varias instancias de las instancias con alta certeza. Puede usar este enfoque para SVM o LR tradicionales.
Ejemplo: SVM
Si no me equivoco, weka tiene interfaces para LIBSVM . LIBSVM le permite resolver SVM ponderado por clase en todas sus versiones y SVM ponderado por instancia en versiones especiales de cada versión. Asumiré que weka no es compatible con este último (que es lo que necesitas).
La SVM ponderada en clase minimiza la siguiente función objetivo: con el hiperplano de separación en el espacio de características, las variables de holgura (que modelan la clasificación errónea del entrenamiento) y y el conjunto de vectores de soporte que pertenecen a la clase positiva y negativa, respectivamente. Usando los pesos y puede asignar diferentes penalizaciones de clasificación errónea entre clases.
Según su pregunta, parece que lo ideal sería utilizar 6 pesos diferentes (2 clases 3 niveles de certeza). Puede lograr esto para muchos enfoques duplicando muestras de los puntos con alta certeza.×
Por ejemplo, en términos de SVM, usar la misma instancia de datos dos veces produce una solución idéntica para duplicar su valor asociado . Esta es una manera muy fácil de asignar altas penalizaciones de clasificación errónea a ciertas instancias de datos. Puede seguir el mismo enfoque para la regresión logística.C
fuente
La dificultad del problema depende en gran medida de lo erróneas que puedan ser las etiquetas inciertas. Si las etiquetas inciertas son correctas, digamos, el 90% del tiempo, probablemente pueda salirse con la suya utilizando la regresión logística. Por otro lado, si las etiquetas están mal casi la mitad del tiempo, es posible que deba recurrir a algunas técnicas especiales. Aquí hay una puñalada que tomé en un problema muy similar. (Tuvimos múltiples observaciones por etiqueta, pero por lo demás la configuración es bastante similar).
fuente
Tuve un breve recorrido con reconocimiento y clasificación de imágenes.
Random Forests es una técnica fácil de usar. Lo he implementado en R, también debería estar disponible en Weka. Sin embargo, la facilidad de uso supera la precisión de la predicción. Si tiene un conjunto de entrenamiento lo suficientemente grande, puede clasificar varias etiquetas.
Funcionó para reconocer los dígitos escritos a mano bastante bien, pero si sus imágenes son más complejas, solo una prueba le dirá si lo hace bien.
fuente