Datos e Inteligencia Artificial: los 7 pecados capitales

Por Colaborador Invitado, el 6 julio, 2020. Categoría(s): Ingeniería • Matemáticas

La Inteligencia Artificial (IA) se basa en modelos desarrollados a partir de técnicas de Machine Learning (ML), las cuales se alimentan principalmente de datos. En un entorno supervisado (donde se entrena la técnica dándole las preguntas, denominadas características, y las respuestas, denominadas etiquetas [1]), la meta es que estos modelos generalicen bien los datos de entrenamiento a cualquier dato del dominio del problema que se está tratando. Esto permite hacer predicciones sobre datos que el modelo nunca ha visto antes. La calidad de esa predicción depende de varios factores, como son la técnica elegida, los parámetros de dicha técnica, o los datos de entrenamiento, entre otros.

Este artículo se centra en una parte muy importante, los datos de entrenamiento, cuya preparación, elección o consideración de algunos problemas asociados, se lleva el 70–80% del trabajo de la IA. Y es que, como veremos, en contra de la creencia popular de que por tener “muchos” datos ya es posible desarrollar una IA, esto no es suficiente para obtener una IA con un desempeño bueno. A veces los científicos de datos se empeñan en estrujar los datos hasta que les devuelvan lo que ellos quieren, pero no hacen otra cosa que sobreajustarse a los datos de entrenamiento y no conseguir un modelo que generalice bien.

En este artículo se presenta en forma de 7 pecados capitales el trabajo habitual que se hace con los datos antes de entrenar un modelo:

  1. La mala calidad
  2. El desbalanceo
  3. El error subyacente
  4. ¿Más datos?
  5. Datos no representativos
  6. Características irrelevantes
  7. Concept drift

1. La mala calidad de los datos

Se puede decir que los datos son “de mala calidad” cuando contienen errores, como pueden ser anomalías (outliers), campos sin valor o ruido. Si no se tratan adecuadamente, el desempeño de la IA no será el adecuado.

Anomalías

Una anomalía (o outlier) no es más que un dato demasiado pequeño o grande que “se sale de lo normal” con respecto al resto de datos (Figura 1). Y puede tener un impacto estadístico enorme, por ejemplo, en la media. Imaginemos esta serie de datos proporcionados por un sensor: [2, 4, 1, 5, 2, 3, 0, 97]. Su media es 14.25, pero en realidad el valor 97, es producto de un sobrecalentamiento del sensor, y desvirtúa la media real que hasta ese momento era de 2.42. El no detectar esta anomalía [4], bien eliminándola de la serie bien considerándola como un caso excepcional a tener en cuenta para otros propósitos, hará que el funcionamiento de nuestra IA no sea el adecuado. Veamos un ejemplo práctico sobre el impacto que provoca en una IA basada en el algoritmo de ML: Logistic Regression (LR).

Figura 1: Presencia de anomalía en la serie de datos. (Imagen de Wikimedia Commons con licencia Creative Commons CC0 1.0 Universal Public Domain Dedication).

Imaginemos que nuestra IA recibe datos sobre peso y altura, y tiene que distinguir si provienen de un gato o un perro. A simple vista podemos ver cómo los perros estarían representados por los círculos naranjas y los rojos por gatos. En este caso LR trazaría un plano para distinguir unos de otros, y conseguiría una precisión del 100% ante la ausencia de anomalías (ver Figura 2).

Figura 2: Problema de clasificación binario sin anomalías resuelto con el algoritmo Logistic Regression. (Imagen tomada de [4]).
Al introducir una anomalía, todo se desvirtúa (ver Figura 3). Ahora, la IA clasifica mal 3 datos (2 gatos los clasifica como perros y 1 perro lo clasifica como gato).

Figura 3: Problema de clasificación binario con una anomalía. (Imagen tomada de [4]).
Ausencia de valores

Tener demasiados registros con ausencia de valores (missing values) puede ser un problema para el desempeño de la IA (ver Figura 4).

Figura 4: Datos con ausencia de valores.

En el caso de la Figura 5, vemos cómo 2 modelos basados en Artificial Neural Networks (ANN) y Support Vector Machines (SVM) ven afectada su métrica MSE (Mean Squared Error) en mayor o menor medida (%) por la ausencia de valores en el conjunto de datos.

Figura 5: MSE de ANN y SVM dependiendo del % de ausencia de datos en el dataset (Imagen tomada de [4]).

2. El desbalanceo en los datos

Siguiendo el ejemplo anterior, cuando una IA se enfrenta a un problema de clasificación donde tiene que diferenciar entre gatos o perros, es común que se encuentre que el conjunto de datos de entrenamiento tiene muchas más muestras de perros que de gatos o viceversa. Es lo que comúnmente se conoce como desbalanceo. Y el no considerarlo va directo a la línea de flotación del desempeño de la IA, sobre todo en algunas áreas. Por ejemplo, detectando fraude, donde la mayoría de los casos (clase mayoritaria) pertenecen a la clase “no fraude”, y solo una pequeña porción (clase minoritaria) pertenece a la clase “sí fraude” (ver Figura 6).

Figura 6: Distribución de las muestras en el dataset «Credit Card Fraud Detection» de Kaggle donde solo un 0.172% de las muestras corresponden a «sí ha cometido fraude».

En estos casos, un algoritmo como SVM que no tuviese en cuenta el desbalanceo, separaría las dos clases erróneamente (línea continua en Figura 7). Sin embargo, uno que sí considerase ese desbalanceo, ofrecería un desempeño mucho mejor (línea discontinua en Figura 7).

Figura 7: El algoritmo SVM intenta separar las 2 clases en una situación de desbalanceo. La línea continua representa una versión que sí considera el desbalanceo, mientras que la discontinua no lo hace.

3. El error subyacente en los datos

El propósito final del entrenamiento de un modelo predictivo es que generalice bien. Esto es, que sea capaz de asimilar y predecir correctamente datos que no ha visto antes. El error en la predicción es el enemigo principal de un buen modelo predictivo. Hay 3 fuentes de error en los datos: 1) el error irreducible (I), debido al ruido y presente en todo conjunto de datos, 2) el error de bias (B), y 3) el error de varianza (V). Por tanto, el error de un modelo predictivo (E) será: E=I+B+V.

Cuando un modelo no tiene un buen desempeño, normalmente se debe a que tiene un alto error de bias o de varianza. La zona del medio en la Figura 8 es en la que debemos situar a nuestro modelo.

Figura 8: Efecto de la complejidad del modelo sobre los errores de bias y varianza. (Imagen tomada de [7]).

A.     Bias y Varianza

  • Bias es un error derivado de una mala suposición del modelo respecto a los datos. Un modelo con un alto error de bias es aquel que se pierde relaciones importantes que se dan entre las características del problema y la variable a predecir (target output). Lo cual es precisamente lo que un buen modelo predictivo debe hacer bien. Por tanto, se puede decir que un modelo con alto bias sufre de underfitting. Para detectarlo debemos buscar un alto error en el conjunto de entrenamiento y un error de validación similar en magnitud al de entrenamiento. Para mitigar este error de bias no servirá de nada añadir más datos al entrenamiento del modelo (ver el pecado capital 4), pero sí estudiar la posibilidad de añadir más características o incrementar la complejidad del modelo.
  • Varianza es un error derivado de la excesiva sensibilidad del modelo a pequeñas fluctuaciones que se dan en el conjunto de datos de entrenamiento. Un modelo con un alto error de varianza pone demasiada atención al modelado de datos ruidosos, lo que le hace estar sobreajustado (overfitting). Para detectarlo debemos buscar un bajo error en el conjunto de entrenamiento y un alto error en el conjunto de datos de validación. Para mitigar este error de varianza se pueden añadir más datos (y más variados), reducir el número de características, o reducir la complejidad del modelo.

Figura 9: Equilibrio entre bias y varianza. (Imagen tomada de [6]).
Por tanto, un modelo no debe sufrir de sobreajuste (overfitting) o subajuste (underfitting). Ambos términos hacen referencia al tipo de error de nuestro modelo al generalizar, y es muy importante saber diagnosticarlo para tomar las medidas oportunas. De hecho, el tratar de afrontar (equilibrar) estos dos tipos de error al mismo tiempo se conoce como dilema “bias-variance”, y aparece representado en la Figura 9.

B.     Sobreajuste (Overfitting)

Se produce cuando nuestro modelo sólo considera como válidos aquellos datos iguales a los del conjunto de entrenamiento. Es incapaz de distinguir datos que se salgan un poco de los rangos ya preestablecidos por el conjunto de entrenamiento (ver Figura 10).

Figura 10: (derecha) La línea azul representa un modelo sobreajustado, y por tanto muy dependiente de los datos de entrenamiento, que dará un error muy alto a la hora de predecir nuevos datos no contemplados hasta el momento. Sin embargo, (izquierda) la línea azul aquí representa un modelo subajustado, incapaz de captar toda la varianza de los datos. (centro) Representa un modelo bien ajustado.

A modo de resumen, si nuestro modelo entrenado tiene un alto porcentaje de aciertos y al hacerle el test tiene un porcentaje muy bajo, seguramente sea una señal de que nuestro modelo sufre de sobreajuste. Suelen ser modelos demasiado complejos para explicar la varianza de los datos.

C.     Subajuste (Underfitting)

Se produce cuando nuestro modelo no es capaz de capturar la estructura subyacente de los datos. También se puede decir que sucede cuando nuestro modelo no ha prendido “suficiente”. Suelen ser modelos demasiado simples para explicar la varianza de los datos (ver Figura 10).

A modo de resumen, si nuestro modelo entrenado tiene un bajo porcentaje de aciertos, seguramente sea una señal de que nuestro modelo sufre de subajuste.

D.      Mitigación de errores

En general, para prevenir estos problemas deberemos considerar las siguientes medidas:

  • Escoger la cantidad adecuada de muestras para entrenar, validar y testear el modelo. Una práctica habitual es usar una técnica denominada validación cruzada (“cross-validación”), y dividiendo el dataset en diferentes partes para llevar a cabo el entrenamiento, validación y testeo.
  • Que las clases estén balanceadas (ver pecado capital 2), de lo contrario el modelo tenderá a clasificar las muestras según la clase mayoritaria.
  • Encontrar la parametrización (“Hyperparameter tuning”) adecuada de la técnica en cuestión, esto es, los valores de los parámetros.
  • Reducir la dimensionalidad (menos “features”). Veremos más adelante la “maldición de la dimensionalidad”.

4. ¿Son necesarios más datos?

Ante un mal desempeño de la IA, ¿cómo saber si puede mejorar añadiendo más datos al entrenamiento del modelo? En muchas ocasiones, la obtención de más datos no es algo trivial, y lleva asociado un coste muy alto o llevar mucho tiempo. Por tanto, tomar la decisión de obtener más información es importante. Normalmente, el mal desempeño de un modelo se suele asociar con la necesidad de tener más datos de entrenamiento, pero esto no siempre es así. Bien es cierto que entrenar un modelo con pocos datos puede hacer que aumente la variabilidad del modelo, que no generalice bien y que se fije demasiado en los datos de entrenamiento (overfitting). Pero aparte de que la elección del modelo tiene su importancia, no siempre por añadir más datos el desempeño va a mejorar.

Una curva de aprendizaje es una herramienta muy útil para saber qué necesita nuestro modelo (aunque también sirve para otros propósitos). En la Figura 11 vemos cómo en un modelo basado en Naive Bayes, tanto la puntuación de cross-validación como la de entrenamiento convergen a un valor que representa un desempeño no demasiado bueno, a pesar del incremento en el número de datos. Este modelo seguramente no mejore porque añadamos más muestras a su entrenamiento.

Figura 11: (Imagen tomada de https://scikit-learn.org/stable/modules/learning_curve.html).

5. Datos no representativos

En ocasiones, los datos disponibles no reflejan el problema adecuadamente, y por tanto, el modelo entrenado con ellos no hará lo que esperamos. Como ya se ha comentado, no será capaz de generalizar bien, y eso es la clave del éxito del modelo predictivo.

Por otra parte, se puede dar el caso de que los datos de entrenamiento hayan sido seleccionados unos con más o menos probabilidad que otros por algún motivo, lo que da lugar a un sesgo (bias), y a un modelo que tendrá una tendencia al predecir. Esto se conoce sampling bias, y es una situación que debemos evitar.

6. Características irrelevantes

Para que un modelo predictivo tenga un desempeño adecuado, los datos de entrenamiento tienen que describir el problema por completo. Esto es, las características (features) más relevantes que describen el problema tienen que estar presentes sí o sí en nuestro conjunto de datos de entrenamiento. Pero es que además sucede que a menudo en estos datos aparecen otras características que no aportan nada o casi nada a la descripción del problema (características irrelevantes o redundantes). Entonces el modelo puede fijarse en ellas y desviar su atención hacia información no relevante, con lo que su desempeño se verá resentido. Es por esto por lo que una de las tareas más importantes suele ser la selección de características (feature selection), eliminando aquellas que no aportan más información a la ya obtenida. Se puede decir que hay 4 motivos por los que realizar esta selección:

  • Por el ya comentado (feature selection), y que a menudo se relaciona con overfitting, y por tanto se busca una reducción de la ya mencionada varianza
  • Para simplificar el modelo y que sea más comprensible
  • Para reducir el tiempo de entrenamiento del modelo
  • Y para evitar la conocida como “Maldición de la dimensionalidad” (Curse of dimensionality). Aquí ocurre a menudo que el número de características es mucho más grande que el número de muestras del problema.

A veces se confunde el término feature selection con feature extraction, o incluso con feature engineering. Esas son otras dos técnicas relacionadas con el trabajo que se hace sobre las características del conjunto de datos, pero que tienen otra finalidad. Mientras que la feature extraction se centra en la extracción de características de datos en crudo (como pueden ser imágenes, voz, datos de astronomía, genómica, etc.), en feature engineering el trabajo se centra en la generación de características nuevas a partir de las ya existentes.

7. Concept drift

Cada vez son más frecuentes las soluciones basadas en IA en tiempo real. Éstas demandan respuestas (predicciones) inmediatas, y esto obliga a un tratamiento de los datos en tiempo real: entrenamiento y testeo de modelos. Los datos tienen la mala costumbre de cambiar a lo largo del tiempo por diferentes motivos (cambios de gusto y opinión, calentamiento o envejecimiento de sensores, etc.), y eso hace que el rendimiento de los modelos se vea afectado. Estos cambios (drifts) hacen que los modelos entrenados hasta ese momento queden obsoletos, y que sea necesario entrenarlos de nuevo para que se adapten a la nueva realidad o concepto. Este fenómeno es el que se conoce como concept drift [8].

Imaginemos un sistema de recomendación que ha estado funcionando durante meses sin problemas. A raíz del COVID-19 las necesidades y gustos de los usuarios han cambiado, y por tanto así lo deberían hacer también las recomendaciones del sistema. En la Figura 12 se muestra el efecto que el concept drift tiene sobre un modelo que no ha sido actualizado (reentrenado) con los datos del nuevo concepto, los cuales reflejan la nueva realidad en la distribución de los datos.

Figura 12: Ejemplo del efecto «concept drift» en la precisión de dos modelos. En línea discontinua un modelo que ha detectado el cambio y ha adaptado el modelo a la nueva distribución de los datos. En línea continua uno que no lo ha hecho.

La detección del drift y la adaptación de los modelos son ahora mismo uno de los desafíos que más atención atraen de la comunidad de ML que se dedica a dar soluciones a los problemas en paradigmas como el Big Data y el IoT [9].

Conclusiones

Como se ha visto, el trabajo sobre los datos es fundamental para desarrollar un IA robusta, fiable, y con un buen desempeño. Y es por ello por lo que normalmente se convierte en la tarea más ardua y duradera (y puede que la más importante también) en el proceso de desarrollo de una IA. No cometer ninguno de los pecados capitales aquí presentes es un camino directo al desarrollo de una IA exitosa.

 

Este artículo nos lo envía Jesús (Txus) López Lobo. Licenciado en Ingeniería Informática por la Universidad de Deusto, Máster en Inteligencia Artificial Avanzada por la UNED, y doctor internacional en Tecnologías de la Información y Comunicaciones en Redes Móviles por la UPV/EHU. Trabaja como Científico de Datos e Investigador en Inteligencia Artificial en TECNALIA. También hace divulgación de sus artículos científicos en su blog de Medium:  https://medium.com/@txuslopezlobo y en su perfil de Linkedin: http://www.linkedin.com/in/txuslopez

 

Referencias científicas y más información:

[1] https://medium.com/@juanzambrano/aprendizaje-supervisado-o-no-supervisado-39ccf1fd6e7b

[2] https://towardsdatascience.com/detecting-real-time-and-unsupervised-anomalies-in-streaming-data-a-starting-point-760a4bacbdf8

[3] https://medium.com/analytics-vidhya/effect-of-outliers-on-neural-networks-performance-ca1d9185dce9

[4] Gill, M. K., Asefa, T., Kaheil, Y., & McKee, M. (2007). Effect of missing data on performance of learning algorithms for hydrologic predictions: Implications to an imputation technique. Water resources research, 43(7).

[5] https://www.learnopencv.com/bias-variance-tradeoff-in-machine-learning/

[6] Akhter, S. (2018). Using machine learning to predict potential online gambling addicts.

[7] Al’Aref, S. J., Anchouche, K., Singh, G., Slomka, P. J., Kolli, K. K., Kumar, A., … & Berman, D. S. (2019). Clinical applications of machine learning in cardiovascular disease and its relevance to cardiac imaging. European heart journal, 40(24), 1975–1986.

[8] https://www.kdnuggets.com/2019/12/ravages-concept-drift-stream-learning-applications.html

[9] Gomes, H. M., Read, J., Bifet, A., Barddal, J. P., & Gama, J. (2019). Machine learning for streaming data: state of the art, challenges, and opportunities. ACM SIGKDD Explorations Newsletter, 21(2), 6–22.

 



Por Colaborador Invitado, publicado el 6 julio, 2020
Categoría(s): Ingeniería • Matemáticas