Los modelos de aprendizaje supervisado se usan para predecir un campo objetivo, y aprenden las reglas que nos permitirán predecirlo a partir de un subconjunto de instancias de entrenamiento donde el valor de dicho campo es conocido. El hecho de disponer de los valores reales del campo para algunas instancias nos permitirá también validar la bondad de dichos modelos. La idea sobre cómo evaluar un modelo es comparar los valores reales de las instancias en que se conoce el campo objetivo con los valores que predice el modelo para esas mismas instancias. Si ambos coinciden, el modelo estará acertando la predicción y si no habrá cometido un error.
Cuantos más aciertos y menos errores, mejor será el modelo. No obstante, debemos tener en cuenta un factor muy importante. Nunca se deben usar en este procedimiento de evaluación instancias que se hayan usado ya en la construcción del modelo. Si evaluamos un modelo con los mismos datos que usamos en su entrenamiento, lo que obtendremos es un indicador de cómo de bien se han adaptado sus reglas a dichos casos. No obstante, eso no nos permite asegurar que, cuando llegue un nuevo caso distinto de los de entrenamiento, el modelo siga dando predicciones correctas. La evaluación debe comprobar que los patrones estén adaptados a los datos de aprendizaje, pero también que sean lo bastante generales para predecir correctamente los nuevos casos que aparezcan.
El método que utilizaremos para asegurar que evaluamos correctamente es reservar un porcentaje de todas las instancias en las que el valor del campo objetivo es conocido y no usarlas en el entrenamiento del modelo. Normalmente se divide el total de instancias disponibles en un Dataset de test, que contiene un 20 % de las instancias, y un Dataset de training con el 80 % restante. El modelo se construirá con el Dataset de training y se evaluará con el Dataset de test.
Partiendo de nuestro dataset de ejemplo, vemos que el menú de acciones permite hacer dicha separación en un solo clic, tal como se muestra en la Figura 3.9.
Una vez ejecutada esta acción, vemos la pantalla que nos muestra el Dataset de training, con lo que podremos proceder a crear el modelo con la acción 1-click model del menú. El siguiente paso será predecir usando este modelo cada uno de los casos almacenados en el Dataset de test. Eso se puede hacer utilizando la opción Batch prediction del menú de acciones del modelo, como podemos ver en la Figura 3.10.
CREANDO PREDICCIONES PARA UN DATASET DE TEST
Con la acción Batch Prediction accederemos a una pantalla que nos presenta el modelo que queremos usar para predecir y nos permite escoger también el Dataset que contiene los datos de test, tal como se muestra en la Figura 3.11.
En nuestro caso el dataset de test estará configurado por defecto, porque la plataforma detecta que hemos creado una partición de los datos para testear. El resto de opciones nos permiten configurar qué datos obtendremos como resultado. Para poder comparar el valor real del campo diabetes con el valor de la predicción, cambiaremos el nombre de la columna que contendrá la predicción a diabetes (predicción).
Al crear la predicción para todo el Dataset de test, aparece en pantalla una muestra de las primeras filas generadas como resultado, tal como muestra la Figura 3.12. En el ejemplo, observamos que en los primeros tres casos el campo real coincide con el predicho mientras que en los tres siguientes no y después vuelven a coincidir. Podríamos descargar el CSV y ver en cuantas ocasiones el valor predicho coincide con el real. El resumen del número de aciertos y fallos es lo que genera las diversas métricas de evaluación. En general, si no necesitamos conocer el detalle de las predicciones para cada fila del Dataset de test podremos obtener estas métricas creando una Evaluación.
Al igual que en el caso de la Batch Prediction, la pantalla de evaluación nos permite elegir el modelo a evaluar y el Dataset de test. En nuestro caso, ambos están ya seleccionados porque la plataforma sabe que se ha partido de un Dataset previamente preparado a tal fin con la acción 1-click training | test. Al crear la evaluación, obtendremos una pantalla donde se presentan algunas de las métricas que nos permiten saber si nuestro modelo clasifica bien.
La más conocida es la exactitud (accuracy) que mide el porcentaje de predicciones acertadas sobre el total de filas a predecir. No obstante, hay ocasiones en que la exactitud no es un buen indicador de la utilidad del modelo. El caso más claro se da cuando las clases del campo a predecir están muy desbalanceadas y solamente contamos con un pequeño número de instancias correspondientes a la clase que nos interesa predecir. Un ejemplo típico de este problema es la detección de spam.
Los mensajes de spam son un pequeño porcentaje (pongamos un 5 %) cuando los comparamos con resto de correos que recibimos. Supongamos que queremos construir un modelo que nos diga si un correo es spam o no. Si definimos un modelo que diga que ninguno de los correos es spam, ese modelo tendrá una alta exactitud, porque clasificará siempre bien el 95 % de nuestros mensajes. A pesar de eso, el modelo no será bueno, porque no clasifica correctamente ninguno de los mensajes de la clase que precisamente nos interesa. Por eso, en el caso de trabajar con Datasets muy desbalanceados, debemos prestar atención a otras métricas, como la precisión (precision) y la exhaustividad (recall).
La precisión mide cuántas de las instancias que predecimos como pertenecientes a nuestra clase de interés (clase positiva) son realmente de esa clase. En nuestro ejemplo, la clase positiva sería la de pacientes diabéticos, con lo que la precisión nos diría que porcentaje de los pacientes que el modelo predice como diabéticos lo son realmente. La exhaustividad mide qué porcentaje de las instancias que realmente son de la clase positiva son predichas como tal. En nuestro ejemplo, la exhaustividad sería el porcentaje de pacientes diabéticos que nuestro modelo predice como tal.
Normalmente, si construimos un modelo dando más peso a las instancias de la clase minoritiaria (diabetes=Sí en nuestro caso) en el momento de crearlo, el modelo conseguirá predecir como diabéticos más casos de entre los pacientes realmente diabéticos (mejorará la exhaustividad) pero a cambio bajará la precisión (más pacientes que no son diabéticos se predecirán como diabéticos). Para saber la calidad del modelo, será mejor pues tomar como referencia métricas como la f-measure o phi que tienen en cuenta a la vez tanto la precisión como la exhaustividad de una forma compensada.