machine-learning - support - sklearn precision
Precisión/recuerdo para la clasificación multiclase-multilabel (5)
El promedio simple será suficiente si las clases están equilibradas.
De lo contrario, la recuperación para cada clase real debe ponderarse según la prevalencia de la clase, y la precisión para cada etiqueta predicha debe ponderarse con el sesgo (probabilidad) para cada etiqueta. De cualquier manera obtienes Rand Accuracy.
Una forma más directa es hacer una tabla de contingencia normalizada (dividir por N para que la tabla sume 1 para cada combinación de etiqueta y clase) y agregar la diagonal para obtener la precisión de Rand.
Pero si las clases no están equilibradas, el sesgo se mantiene y un método corregido por azar como kappa es más apropiado, o mejor aún, un análisis ROC o una medida correcta por azar como la informalidad (altura sobre la línea de probabilidad en ROC).
Me pregunto cómo calcular las medidas de precisión y recuperación para la clasificación multiclase de múltiples clases, es decir, la clasificación donde hay más de dos etiquetas y donde cada instancia puede tener varias etiquetas.
En python usando sklearn
y numpy
:
from sklearn.metrics import confusion_matrix
import numpy as np
labels = ...
predictions = ...
cm = confusion_matrix(labels, predictions)
recall = np.diag(cm) / np.sum(cm, axis = 1)
precision = np.diag(cm) / np.sum(cm, axis = 0)
La respuesta es que debe calcular la precisión y la recuperación para cada clase, luego promediarlas juntas. Por ejemplo, si las clases A, B y C, entonces su precisión es:
(precision(A) + precision(B) + precision(C)) / 3
Lo mismo para recordar.
No soy un experto, pero esto es lo que he determinado en base a las siguientes fuentes:
https://list.scms.waikato.ac.nz/pipermail/wekalist/2011-March/051575.html http://stats.stackexchange.com/questions/21551/how-to-compute-precision-recall-for -multiclass-multilabel-clasificación
Para la clasificación de múltiples etiquetas, tiene dos formas de comenzar. Primero, considere lo siguiente.
- Es el número de ejemplos.
- es la asignación de la etiqueta de verdad de la tierra ejemplo..
- es el ejemplo.
- son las etiquetas previstas para el ejemplo.
Ejemplo basado
Las métricas se calculan de manera puntual. Para cada etiqueta predicha, solo se calcula su puntaje, y luego estos puntajes se agregan sobre todos los puntos de datos.
- Precisión = , La proporción de cuánto de lo predicho es correcta. El numerador encuentra cuántas etiquetas en el vector predicho tienen en común con la verdad básica, y la proporción calcula, cuántas de las etiquetas verdaderas predichas están realmente en la verdad básica.
- Recall = , La proporción de cuántas de las etiquetas reales fueron predichas. El numerador encuentra cuántas etiquetas en el vector predicho tiene en común con la verdad básica (como se muestra arriba), luego encuentra la relación con el número de etiquetas reales, por lo tanto, obtiene qué fracción de las etiquetas reales se predijo.
Hay otras métricas también.
Basado en etiquetas
Aquí las cosas se hacen en forma de etiquetas. Para cada etiqueta se calculan las métricas (por ejemplo, precisión, recuperación) y luego se agregan estas métricas de etiquetas. Por lo tanto, en este caso, termina calculando la precisión / recuperación de cada etiqueta en todo el conjunto de datos, como lo hace para una clasificación binaria (ya que cada etiqueta tiene una asignación binaria), luego la agrega.
La forma más fácil es presentar la forma general.
Esto es solo una extensión del equivalente de clase múltiple estándar.
Aquí el son los conteos verdadero positivo, falso positivo, verdadero negativo y falso negativo, respectivamente, solo para el etiqueta
Aquí $ B $ representa cualquier métrica basada en la matriz de confusión. En su caso, debería insertar las fórmulas estándar de precisión y recuperación. Para el promedio macro, se pasa el recuento por etiqueta y luego se suma, para el promedio micro se promedian primero los recuentos y luego se aplica la función métrica.
Es posible que le interese consultar el código de las métricas de múltiples etiquetas here , que forma parte del paquete mldr en R También es posible que le interese buscar en la biblioteca de múltiples etiquetas Java MULAN .
Este es un buen artículo para entrar en las diferentes métricas: una revisión de los algoritmos de aprendizaje de etiquetas múltiples
- Supongamos que tenemos un problema de clasificación múltiple de 3 clases con las etiquetas A, B y C.
- Lo primero que hay que hacer es generar una matriz de confusión. Tenga en cuenta que los valores en diagonal son siempre los verdaderos positivos (TP).
Ahora, para calcular la recuperación de la etiqueta A, puede leer los valores de la matriz de confusión y calcular:
= TP_A/(TP_A+FN_A) = TP_A/(Total gold labels for A)
Ahora, permítanos calcular la precisión para la etiqueta A, puede leer los valores de la matriz de confusión y calcular:
= TP_A/(TP_A+FP_A) = TP_A/(Total predicted as A)
Solo debe hacer lo mismo para las etiquetas B y C restantes. Esto se aplica a cualquier problema de clasificación de clases múltiples.
Here está el artículo completo que habla sobre cómo calcular la precisión y la recuperación de cualquier problema de clasificación de múltiples clases, incluidos los ejemplos.