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

Medir la eficacia de un aprendizaje

Última modificación: 1 de Diciembre de 2019, y ha tenido 460 vistas

Etiquetas utilizadas: || || ||

Una vez que tenemos una máquina de aprendizaje que es capaz de desempeñar la tarea hemos de pasar a medir la eficiencia de la máquina, 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 suelen 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. 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. Si es así, decimos que la máquina (modelo, algoritmo) generaliza correctamente. 

La forma más común para medir esta capacidad de generalización es guardando algunos de los ejemplos iniciales para ser usados posteriormente como validación de la máquina aprendida (en fuentes más detallas podrás encontrar que se suele llamar también test, y dejan el término validación para otro proceso similar, 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 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 dato, conocido, que debería haber devuelto.

Usando esta misma idea, si la máquina es de clasificación, es habitual hablar de la matriz de confusión que se obtiene, 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:

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. 

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

\[E_{val}=\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.

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. Recuerda, 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.

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 casos como el de la clusterización en espacios métricos lo que 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\).

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.

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