« Interacción con el ra… « || Inicio || » De la Resolución Prop… »

Medir la eficacia de un aprendizaje

Última modificación: 7 de Enero de 2021, y ha tenido 3751 vistas

Etiquetas utilizadas: || || ||

Tras ajustar el algoritmo de aprendizaje para desempeñar la tarea hemos de pasar a medir su eficiencia, es decir, intentar extraer alguna medida que nos informe de lo bien (o mal) que lo está haciendo. Como en los casos de aprendizaje supervisado y no supervisado los objetivos que se buscan son muy distintos, la eficiencia de unos u otros algoritmos suele definirse también de formas muy distintas.

El caso del aprendizaje supervisado es el más natural y habitual. Recordemos que, en este caso, disponemos de un conjunto de ejemplos iniciales sobre los que realizamos el aprendizaje y de los que sabemos el resultado deseado que nuestro algoritmo debe devolver. Como los algoritmos de aprendizaje supervisado aprenden de estos datos para ajustar sus parámetros internos y devolver la respuesta correcta, no tiene mucho sentido medir la eficiencia de la máquina volviendo a pasarle los mismos datos, ya que la información que nos daría sería engañosamente optimista. Lo que buscamos es ver si la máquina es capaz, a partir de los ejemplos entrenados, de generalizar el comportamiento aprendido para que sea suficientemente buena sobre datos no vistos a priori, y si es así, decimos que la máquina (modelo, algoritmo) generaliza correctamente

La forma más común para medir la capacidad de generalización del modelo entrenado es guardando algunos de los ejemplos iniciales (no se usan durante el ajuste) para ser usados posteriormente en una etapa de validación (en fuentes más detallas podrás encontrar que a este conjunto de datos que se aparta se le suele llamar también conjunto de test, y dejan el término validación para otro proceso similar que a veces es necesario posteriormente... pero por ahora podemos permitirnos el lujo de mezclar ambos conceptos... lo importante es tener datos que la máquina no ha visto para poder comprobar cómo funciona sin hacer trampa). Es decir, el conjunto de ejemplos (de los que conocemos el resultado que debe dar), \(D\), se particiona en dos subconjuntos, \(D=D_{train}\cup D_{val}\), de forma que al algoritmo de entrenamiento solo se le enseñan los ejemplos de \(D_{train}\) y, una vez realizado el entrenamiento completo, se mide cómo de buenos son los resultados sobre los datos de \(D_{val}\), que el algoritmo nunca ha visto y de los que también conocemos el resultado que debería dar. El error cometido se mide teniendo en cuenta el resultado que la máquina devuelve sobre ellos y el resultado, conocido, que debería haber devuelto. Cómo se mide exactamente ya puede depender de si el modelo es de clasificación o de regresión

Métricas en Clasificación

Si el modelo es de clasificación, es habitual hablar de la matriz de confusión, que simplemente indica, para cada una de las posibles clases, cuántos ejemplos de \(D_{val}\) se clasifican en cada una de la posibles opciones: cada columna de la matriz representa el número de predicciones de cada clase, mientras que cada fila representa las instancias en la clase real.

En el caso de que solo haya dos posibles clases (lo que se denomina clasifiación binaria), esta matriz da lugar a un conjunto de definiciones que son muy comunes en el mundo del aprendizaje y que, conjuntamente, dar una información muy completa del funcionamiento del algoritmo (y, más importante, dónde falla para que podamos mejorarlo):

Uno de los beneficios de las matrices de confusión es que facilitan ver si el sistema está confundiendo dos clases concretas, no solo el error global que comete conociendo cuántos se han clasificado bien o no.

  • Accuracy: Puede definirse como el porcentaje de predicciones correctas hechas por el modelo de clasificación. Es una buena métrica para usar cuando las clases están balanceadas, es decir, la proporción de instancias de todas las clases son similares. Sin embargo, no es una métrica fiable para los conjuntos de datos que tienen un desbalanceo de clases, es decir, el número total de instancias de una clase de datos es muy inferior al número total de instancias de otra clase de datos: $$Accuracy= \frac{TN+TP}{TN+TP+FN+FP}$$
  • Precision: Indica, de todas las predicciones positivas, cuántas son realmente positivas. Se define como la relación entre las predicciones positivas correctas y las predicciones positivas generales: $$Precision=\frac{TP}{TP+FP}$$
  • TPR/Sensitivity/Recall: Indica, de todos los valores realmente positivos, cuántos se predicen como positivos. Es la proporción de predicciones positivas correctas con respecto al número total de casos positivos en el conjunto de datos: $$TPR=Sensitivity=\frac{TP}{TP+FN}$$
  • Specificity: Indica, de todos los valores realmente negativos, cuántos se predicen como negativos. Es la proporción de predicciones negativas correctas con respecto al número total de casos negativos en el conjunto de datos: $$Specificity=\frac{TN}{TN+FP}$$
  • FPR: Suele ser útil trabajar con la opuesta de la Specificity, y se define como: $$FPR = 1 - Specificity = \frac{FP}{TN+FP}$$

Cuando las clases no están balanceadas es preferible usar Precision o Sensitivity en vez de Accuracy, pero es  matemáticamente imposible aumentar ambas simultáneamente, ya que ambas son inversamente proporcionales entre sí... dependiendo del problema, habrás que decidir cuál de ellas es más importante. En primer lugar, hay que decidir si es importante evitar los falsos positivos o los falsos negativos para el problema. La Precision se utiliza como métrica cuando el objetivo es minimizar los falsos positivos y la Sensitivity se utiliza cuando el objetivo es minimizar los falsos negativos. Es esencial tomar esta decisión, porque se optimizará el rendimiento del modelo según la métrica seleccionada (y los modelos pueden salir distintos).

Cuando evitar tanto los falsos positivos como los falsos negativos es igualmente importante para el problema, se necesita un equilibrio entre Precision y Sensitivity, en este caso se puede usar la métrica F1, que se define como la media armónica entre estos valores:

$$F1=\frac{2}{\frac{1}{TPR} + \frac{1}{FPR} } = \frac{TPR \times FPR}{TPR+FPR}$$

Se puede utilizar un modelo de clasificación de aprendizaje automático para predecir directamente la clase real de los datos o, algo mucho más interesante, predecir su probabilidad de pertenecer a diferentes clases. Esto último da más control sobre el resultado, y se puede hacer uso de un umbral personalizado para interpretar el resultado del clasificador, algo que suele ser más prudente que construir un modelo completamente nuevo si el último ha fallado.

Hay que tener presente que establecer diferentes umbrales para clasificar la clase positiva para los datos cambia la sensibilidad y la especificidad del modelo, dando resultados distintos para cada umbral considerado, y uno de estos umbrales probablemente dará un mejor resultado que los otros (este mejor dependerá de si estamos tratando de reducir el número de Falsos Negativos o Falsos Positivos).

A medida que las métricas cambian con los valores umbrales, podemos generar diferentes matrices de confusión y comparar las diversas métricas anteriores, pero eso no parece ser algo muy inteligente. En lugar de ello, lo que podemos hacer es generar una gráfica entre algunas de estas métricas de manera que podamos visualizar fácilmente qué umbral da un mejor resultado. La curva AUC-ROC viene para ayudar a recolver este problema.

En Teoría de Detección de Señales, una curva ROC (acrónimo de Receiver Operating Characteristic, o Característica Operativa del Receptor) es una representación gráfica de la sensibilidad frente a la especificidad de un sistema clasificador binario según se varía el umbral de discriminación. El análisis de la curva ROC (o simplemente análisis ROC) proporciona herramientas para seleccionar los modelos posiblemente óptimos y descartar modelos subóptimos independientemente de (y antes de especificar) el coste de la distribución de las dos clases sobre las que se decide. Esta curva es también independiente de la distribución de las clases en la población, y se relaciona de forma directa y natural con el análisis de coste/beneficio en toma de decisiones diagnósticas. Aunque se desarrolló por ingenieros eléctricos para medir la eficacia en la detección de objetos enemigos en campos de batalla mediante pantallas de radar, se aplicó posteriormente en medicina, radiología, psicología y otras áreas durante varias décadas. Recientemente ha encontrado aplicación en áreas como Aprendizaje Automático y Data Science.

El área bajo la curva (AUC) es la medida de la capacidad de un clasificador para distinguir entre clases y se utiliza como un resumen de la curva ROC. Cuanto más alta es la AUC, mejor es el rendimiento del modelo para distinguir entre las clases positivas y negativas:

  • Cuando $AUC = 1$, el clasificador es capaz de distinguir perfectamente entre todos los datos de la clase positiva y negativa correctamente. Sin embargo, si el AUC hubiera sido 0, entonces el clasificador estaría prediciendo todos los Negativos como Positivos, y todos los Positivos como Negativos.
  • Cuando $0,5<AUC<1$, hay una alta probabilidad de que el clasificador sea capaz de distinguir los valores de la clase positiva de los valores de la clase negativa, ya que es capaz de detectar más Verdaderos Positivos (TP) y Verdaderos Negativos (TN) que de Falsos Negativos (FN) y Falsos Positivos (FP).
  • Cuando $AUC=0,5$, entonces el clasificador no es capaz de distinguir entre los datoa de la clase positiva y negativa. Lo que significa que el clasificador está prediciendo de forma aleatoria los datos.

En una curva ROC, un valor más alto del eje X indica un número mayor de falsos positivos que de verdaderos negativos. Mientras que un valor más alto del eje Y indica un número mayor de verdaderos positivos que de falsos negativos. Por lo tanto, la elección del umbral depende de la capacidad de equilibrio entre los falsos positivos y los falsos negativos.

Métricas en Regresión

Cuando el modelo se usa para hacer predicciones numéricas (o vectoriales), no clasificación, suele ser normal medir el eror cometido en los ejemplos de \(D_{val}\), y hablamos del error de validación usando la media del error (o pérdida media):

$$E_{val}=MAE=\frac{1}{|D_{val}|} \sum_{(x,y)\in D_{val} } |y-M(x)|$$

donde \(y\) sería el valor que se debería haber devuelto, y \(M(x)\) es el valor que nuestra máquina entrenada ha conseguido devolver. Obsérvese que esta fórmula vale para cualquier tipo de resultado en el que podamos medir lo que se diferencia el valor obtenido del esperado. En el caso de los clasificadores sería equivalente a considerar que vale \(1\) si son distintos, y \(0\) si son iguales.

Puede haber casos en los que errores muy grandes son indeseables, por ejemplo cuando una de las predicciones de un modelo es una anomalía. En este caso, deberíamos penalizar este error grande en mayor medida, y es donde podemos usar el error cuadrático medio (o pérdida cuadrática):

$$E_{val}=MSE= \frac{1}{|D_{val}|} \sum_{(x,y)\in D_{val} } (y-M(x))^2$$ 

Si necesitamos considerar las mismas unidades de medida en el error que en la función para que no haya confusión en los resultados, podemos considerar la raíz del error cuadrático medio:

$$E_{val}=RMSE= \sqrt{MSE}= \sqrt{\frac{1}{|D_{val}|} \sum_{(x,y)\in D_{val} } (y-M(x))^2}$$ 

En cualquier de estos casos (y otros muchos similares) podríamos haber calculado de igual forma el error de entrenamiento, $E_{train}$, que habitualmente será muy reducido ya que el algoritmo de aprendizaje modifica los parámetros del modelo para intentar minimizarlo.

Cuando el proceso consigue reducir este error tanto que es posible que no generalice bien (es decir, al modelo se ha ajustado tanto a los datos vistos, que ha perdido el patrón general que pueden seguir y lo que ha hecho es memorizar los datos de entrenamiento), se dice que se ha producido un sobre-entrenamiento (overfitting), y el modelo resultante deja de ser útil para el propósito inicial de predecir el comportamiento en las partes no observadas.

Por ello, es importante mantener un equilibrio en el proceso de aprendizaje para que no aprenda tanto de los datos proporcionados (que muchas veces tienen ruido o sesgo que no podemos evitar en la medición) como para distorsionar el posible patrón general que está detrás de ellos. En general, con el fin de poder tener una máquina que funcione bien en casos no vistos, a veces puede ser preferible que se comporte un poco peor en los casos conocidos, porque de esa forma está aprendiendo las reglas generales del sistema y no las particularidades de la región de la que tenemos datos recopilados.

Métricas en Aprendizaje no Supervisado

En el caso de estar trabajando con aprendizaje no supervisado tenemos el problema de no disponer de una respuesta verdadera que sepamos a priori, por lo que es mucho más complicado poder dar medidas de eficiencia.

En los problemas de clustering no es fácil determinar la calidad de un algoritmo, lo que da lugar a múltiples técnicas de evaluación que, con frecuencia, dependen fuertemente del algoritmo al que se aplican.

Cuando se analizan los resultados de una clusterización se deben tener en cuenta varios aspectos para la validación de los resultados del algoritmo:

  • La determinación de la tendencia de agrupación de los datos (es decir, si existe realmente una estructura no aleatoria).
  • Determinar el número correcto de clústers.
  • Evaluar la calidad de los resultados de la agrupación sin información externa.
  • Comparar los resultados obtenidos con la información externa.
  • Comparar dos agrupaciones distintas para determinar cuál es mejor.

Las tres primeras cuestiones se abordan mediante una validación interna o no supervisada, ya que no se utiliza información externa. La cuarta cuestión se resuelve mediante una validación externa o supervisada. Por último, la última cuestión puede abordarse mediante técnicas de validación supervisada y no supervisada.

En casos como el de la clusterización en espacios métricos se puede medir es algo parecido a un potencial de estrés de la agrupación conseguida (tal y como hemos justificado en algunos de los modelos de clustering vistos), que sería el valor de la propia función que queremos minimizar, por ejemplo:

\[ \sum_i \sum_j d(x_j^i,c_i)^2\]

donde, como anteriormente, \(x_j^i\) es la colección de elementos asignados al cluster \(c_i\).

En esta métrica, los valores más próximos a $0$ son mejores, ya que cuanto más se acerque a $0$ la distancia media, más agrupados estarán los datos. Ah de tenerse en cuenta, sin embargo, que esta métrica siempre disminuye si se aumenta el número de clústeres y, en el caso extremo (en el que cada uno de los distintos puntos de datos es su propio clúster) será igual a cero, así que ha de mantenerse un equilibrio entre el número de clústeres y el potencial obtenido.

Otra métrica interesante en este caso es el Índice de Davies Bouldin, que se calcula como la relación media entre las distancias dentro del clúster (cohesión) y las distancias entre clústeres (separación). Cuanto más ajustado sea el clúster y más separados estén los clústeres, más bajo será este valor, por lo que los valores más próximos a $0$ son mejores. Los clústeres que estén más separados y menos dispersos generarán una mejor puntuación.

$$ I_{DB}= \frac {mean{\{d(x,x'):\ x,x' \in c\}_{c\in C} } } { mean{\{d(x,x'):\ x\in c,\ x'\notin c\}_{c\in C} } }$$

donde $C$ es el conjunto de clusters calculados por el modelo. A veces esta métrica se simplifica haciendo uso de los centroides (por ejemplo, en caso de usar K-medias), y en ese caso las cohesiones se calculan como la distancia media de cada punto a su centroide, y las separaciones se calculan como distancias entre centroides.

Otras herramientas habituales para evaluar algoritmos de clustering son el Análisis de Siluetas o la regla del codo.

Todas estas métricas son ejemplos de validaciones internas, ya que no usan información externa para evaluar la bondad de la agrupación conseguida.

Muchas veces, un proceso de clusterización es correcto en la medida en que facilite la tarea posterior de realizar otros procesos de optimización/aprendizaje sobre la transformación que producen o la agrupación que proponen, por lo que la clsuterización se convierte en una primera fase de extracción de información de los datos para posteriormente medir su eficacia de forma conjunta con un clasificador/regresor supervisado del que sí podemos medir su eficacia de forma más objetiva.

Se puede encontrar un resumen de las métricas más habituales para clustering aquí.

Aunque, por supuesto, el problema de clustering no es el único problema de Aprendizaje No Supervisado, sí es el más común y usado. Esa es la razón por la que se presenta en esta página como único ejemplo de este tipo de algoritmos en el uso de métricas de rendimiento, pero el lector no debe llevarse la falsa idea de que no hay otros problemas en esta clasificación ni otras métricas para ellos.

« Interacción con el ra… « || Inicio || » De la Resolución Prop… »