2010-08-16 12 views
12

Estoy intentando hacer un clasificador que elige una clasificación (1-5) para un artículo i. Para cada elemento i, tengo un vector x que contiene aproximadamente 40 cantidades diferentes pertenecientes a i. También tengo una calificación estándar de oro para cada artículo. Basado en alguna función de x, quiero entrenar a un clasificador para darme una calificación de 1-5 que coincida cercanamente con el estándar de oro.Paquetes de clasificación ordinal y algoritmos

La mayor parte de la información que he visto sobre los clasificadores se refiere solo a decisiones binarias, mientras que tengo una decisión de calificación. ¿Existen técnicas comunes o bibliotecas de códigos para tratar este tipo de problema?

Respuesta

10

Estoy de acuerdo con que los problemas de ML en los que la variable de respuesta está en una escala ordinal requieren un manejo especial - 'machine-mode' (es decir, devolver una etiqueta de clase) parece insuficiente porque las etiquetas de clase ignoran la relación entre las etiquetas ("1º, 2º, 3º"); del mismo modo, 'modo de regresión' (es decir, tratando las etiquetas ordinales como flotantes, {1, 2, 3}) porque ignora la distancia métrica entre las variables de respuesta (por ejemplo, 3 - 2! = 1).

R tiene (al menos) varios paquetes dirigidos a la regresión ordinal. Uno de estos se llama realmente Ordinal, pero no lo he usado. He usado el paquete Design en R para la regresión ordinal y ciertamente puedo recomendarlo. El diseño contiene un conjunto completo de funciones para la solución, el diagnóstico, las pruebas y la presentación de resultados de problemas de regresión ordinal a través del modelo ordinario de logística. Ambos paquetes están disponibles en CRAN). Se presenta un step-by-step solution de un problema de regresión ordinal utilizando el paquete de diseño en el sitio de estadísticas de UCLA.

Además, recientemente miré a paper por un grupo de Yahoo que trabaja en clasificación ordinal usando Support Vector Machines. No he intentado aplicar su técnica.

7

¿Has probado a usar Weka? Es supports binary, numerical, and nominal attributes fuera de la caja, los últimos dos de los cuales podrían funcionar lo suficientemente bien para sus propósitos.

Por otra parte, se ve como uno de los clasificadores que está disponible es un meta-clasificador llamado OrdinalClassClassifier.java, que es el resultado de esta investigación:

Si no es necesario un enfoque pre-hechos, entonces estas referencias (además de doug's note about the Yahoo SVM paper) podrían ser útiles:

2

Los problemas que dough has raised son todos válidos. Déjame agregar otro. No dijo cómo le gustaría medir el acuerdo entre la clasificación y el "estándar de oro". Debe formular la respuesta a esa pregunta lo antes posible, ya que esto tendrá un gran impacto en su próximo paso. En mi experiencia, la parte más problemática de cualquier (bueno, no la mayoría) tarea de optimización es la función de puntuación. Intenta preguntarte si todos los errores son iguales. ¿La clasificación errónea del "3" como "4" tiene el mismo impacto que clasificar "4" como "3"? ¿Qué pasa con "1" frente a "5"? Puede fallar por error un caso tener consecuencias desastrosas (error en el diagnóstico de VIH, activar la expulsión del piloto en un avión)

La forma más sencilla de medir el acuerdo entre los clasificadores categóricos es Cohen's Kappa. métodos más complicados se describen en los siguientes enlaces here, here, here y here

Dicho esto, a veces recogiendo una solución que "simplemente funciona", en lugar de "la correcta" es más rápido y más fácil. Si yo fuera usted, elegiría una biblioteca de aprendizaje automático (R, Weka, personalmente me encanta el Orange) y veré qué obtengo. Solo si no tiene resultados razonablemente buenos con eso, busque soluciones más complejas

+0

¿por qué prefieres Orange framework? –

1

Si no está interesado en estadísticas sofisticadas, una red neuronal de propagación de una capa oculta con 3 o 5 nodos de salida probablemente servirá de algo si la capacitación los datos son suficientemente grandes La mayoría de los clasificadores NN intentan minimizar el error cuadrático medio que no siempre se desea. El soporte Vector Machines mencionado anteriormente es una buena alternativa. FANN es una buena biblioteca para NN de propagación hacia atrás, también tiene algunas herramientas para ayudar en el entrenamiento de la red.

Cuestiones relacionadas