Aplicaciones web con modelos de IA

  • Entrenar un modelo de aprendizaje automático utilizando bibliotecas de Python en un Jupyter Notebook
  • Incorporar un modelo de aprendizaje automático entrenado en una aplicación web Streamlit

Éstas son las actividades para esta lección:

TRABAJAR CON MODELOS DE APRENDIZAJE AUTOMÁTICO

Otra característica importante de Jupyter Notebooks, Python y Streamlit es la posibilidad de entrenar modelos de aprendizaje automático y realizar predicciones. 

Si eres nuevo en la Inteligencia Artificial, es posible que desees ver las lecciones de IA en este currículo educativo para aprender lo básico antes de saltar a la codificación más avanzada involucrada aquí. Puedes utilizar una plataforma de modelos de aprendizaje automático fácil de usar como Teachable Machine para crear un modelo e incorporarlo a una aplicación web de Python. 

Si tienes experiencia en inteligencia artificial y en trabajar con conjuntos de datos utilizando Jupyter Notebooks, este es un buen paso para ti. 

En esta lección, aprenderás sobre algunas de las librerías de aprendizaje automático de Python, y algunos de los diferentes modelos de aprendizaje automático que puedes crear usando Python. 

A modo de repaso, para crear un modelo de aprendizaje automático, hay 3 partes principales. 

DATASET

ENCUENTRA PATRONES CON UN ALGORITMO DE APRENDIZAJE


PREDICCIÓN

El conjunto de datos es la entrada para el modelo. Puede incluir texto, imágenes, sonidos o poses. En la Unidad 2 hemos trabajado con datos numéricos y de texto utilizando cuadernos Jupyter. En esta lección seguiremos trabajando con datos de texto, en forma de hoja de cálculo.

Encontrar patrones es esencialmente construir el modelo de aprendizaje automático utilizando el conjunto de datos. Python contiene muchas bibliotecas que construirán un modelo de IA a partir de los datos. En este currículo educativo, utilizaremos muchas de las funciones del paquete scikit-learn. Además de las bibliotecas que proporciona, el sitio web contiene mucha información excelente sobre el aprendizaje automático y el proceso de construcción de modelos. Es un gran recurso para aprender más.

Una vez creado el modelo, se puede utilizar para predecir un resultado basándose en nueva información. Una vez más, Python ofrece bibliotecas que permiten hacerlo.

PREPROCESAMIENTO DE DATOS

Antes de que el conjunto de datos pueda enviarse al algoritmo para construir el modelo, debe ser preprocesadopara que el algoritmo de construcción del modelo pueda trabajar con él y crear el modelo más preciso posible. De hecho, la mayor parte del trabajo para crear un modelo de aprendizaje automático está en el preprocesamiento. Tendrás que examinar cuidadosamente los datos para decidir qué es importante, qué se puede omitir y qué hay que limpiar.

¿Qué implica el preprocesamiento? Cuando se trata de un conjunto de datos de texto, hay que tener en cuenta algunos aspectos.

 

Valores nulos

A veces, el conjunto de datos contiene valores en blanco o nulos, sobre todo si se trata de datos de encuestas. A veces eliminará las filas que tengan datos nulos.

Sin embargo, si el número de muestras es bajo, es posible que no desee eliminarlas. Otra opción es sustituir un valor nulo por algún otro valor. Puede ser cero o la media de todos los demás valores de ese campo.

Valores atípicos

A veces, los datos contienen una o dos muestras que son muy diferentes del resto de los datos. Esto podría sesgar el modelo. No se desea que los valores atípicos afecten a la creación del modelo, por lo que a menudo se eliminan del conjunto de datos.

Por ejemplo, puede tener un conjunto de datos en el que el 95% de las muestras son personas de entre 10 y 30 años, pero tiene unas pocas muestras aleatorias en las que las personas tienen más de 50 años. Dado que la gran mayoría de las muestras pertenecen al grupo de edad de 10 a 30 años, puede plantearse eliminar las muestras del grupo de más edad.

Normalización

A menudo, las cifras de un gran conjunto de datos varían en función de las características representadas. Por ejemplo, puede que la edad varíe de 0 a 70 años, pero también puede que el salario oscile entre 0 y 500.000 euros. Las escalas son muy diferentes, por lo que una característica puede contar más en el modelo.

Para solucionar esto, puede estandarizar los datos para que estén en una sola escala. scikit-learn proporciona un StandardScaler, que actualiza cada característica para que la media sea 0 y la desviación estándar sea 1.

Otra cosa a considerar es un número equilibrado de muestras para cada clase o etiqueta. Usted quiere asegurarse de que su son aproximadamente el mismo número de cada clase en su conjunto de datos.

Codificación

A la IA le gustan los números, no necesariamente las palabras. scikit-learn proporciona funciones de codificador, por lo que puede convertir fácilmente una serie de posibles valores de texto en una serie de números.

Un ejemplo podría ser los niveles de actividad, con valores de muestra sedentario, ligero, moderado, alto. Esas respuestas podrían ser codificadas para ser valores 0, 1, 2 y 3, que es mucho más fácil de manejar para el algoritmo de construcción de modelos.

SEPARAR DATOS

Una vez preprocesados los datos, hay que dividirlos en un conjunto de entrenamiento y un conjunto de pruebas. El conjunto de entrenamiento se utilizará para entrenar y crear el modelo. A continuación, probaremos el modelo con el conjunto de pruebas para ver cómo funciona.

Hay formas estándar de dividirlo (normalmente el 75% para la formación y el 25% para las pruebas), pero puedes dividirlo como quieras. Una vez más, se proporcionan funciones para que todo esto sea automatizado para usted. 

CREACIÓN DEL MODELO

El siguiente paso es crear el modelo. Una gran decisión que hay que tomar es, ¿qué algoritmo utilizo? Hay muchos algoritmos de aprendizaje supervisado entre los que elegir, y es difícil saber cuál utilizar. Un buen proceso consiste en probar varios algoritmos diferentes y ver cuál es el que ofrece mayor precisión. 

El primer paso es decidir si necesita una clasificación o un algoritmo de regresión. Eso depende de lo que se quiera predecir. 

Los algoritmos de clasificación se utilizan para predecir objetivos discretos o clases. Por ejemplo, clasificar un correo electrónico como spam o no spam sería un problema de clasificación

Los algoritmos de regresión se utilizan para predecir algo que se encuentra en un intervalo continuo. Un ejemplo sería predecir el salario que cobrará una persona. La predicción es un intervalo de números y el resultado puede ser cualquier valor de ese intervalo. 

He aquí algunos de los tipos más populares de algoritmos de creación de modelos.

red neuronal

Clasificación

  • Árbol de decisión
  • Bosque aleatorio 
  • K-Vecinos Cercanos
  • Clasificador bayesiano ingenuo
  • Regresión logística
  • Máquina de vectores soporte

Regresión

  • Regresión lineal
  • Regresión Ridge
  • Regresión Lasso
  • Regresión polinómica
  • Regresión lineal bayesiana
  • Regresión por vectores de soporte

Tenga en cuenta que algunos algoritmos pertenecen a ambos tipos. Por ejemplo, existe un clasificador de árbol de decisión y un regresor de árbol de decisión. Y una máquina de vectores de soporte funciona para la clasificación, y la regresión de vectores de soporte funciona para la regresión. 

Entonces, ¿cómo decidir cuál utilizar? Deberías investigar qué utilizan otros científicos de datos en distintas situaciones para ver qué puede ser más adecuado para tu modelo. También deberías probar distintos algoritmos con tus datos y averiguar cuál es el más preciso. También puedes ajustar los parámetros de un algoritmo concreto para ver si ofrece un modelo más preciso. 

scitkit-learn proporciona funciones para todos estos algoritmos, por lo que es sencillo crear el modelo. 

EVALUACIÓN DEL MODELO

Para que el modelo sea lo mejor posible, es necesario evaluar su rendimiento. Dos variables habituales en la evaluación de un modelo son el sesgo y la varianza. 

Sesgo es la diferencia entre el valor previsto del modelo y el valor correcto. 

Varianza es cuánto cambian las predicciones cuando se utilizan datos diferentes. 

Se trata de lograr un buen equilibrio entre sesgo y varianza.

Sesgo elevado -> ajuste insuficiente.

Infraajuste ocurre cuando el modelo es demasiado simple para tener en cuenta el ruido de los datos de entrenamiento. Esto puede ocurrir si no hay suficientes datos o características (columnas), o si hay demasiado ruido en los datos. Si un modelo no funciona bien tanto con los datos de entrenamiento como con los datos de prueba, es señal de inadaptación.

Alta varianza -> sobreajuste.

Sobreajuste ocurre cuando se entrena un modelo con un conjunto de datos y éste funciona muy bien, pero si luego se le presentan nuevos datos, no funciona del todo bien. Esto puede ocurrir si el modelo es demasiado complejo e intenta ajustarse demasiado a los datos de entrenamiento. El modelo puede predecir muy bien con los datos de entrenamiento, pero luego funciona mal con los datos de prueba.

Una técnica para comprobar el rendimiento de un modelo es la validación cruzada.

Validación cruzada consiste en entrenar el modelo varias veces, utilizando cada vez diferentes datos de entrenamiento/prueba. El conjunto de datos se divide en varios pliegueso subconjuntos. A continuación, uno de los subconjuntos se utiliza como conjunto de validación o prueba, y los pliegues restantes se utilizan para entrenarlo. Esto se realiza varias veces, por lo que cada vez cambian los conjuntos de entrenamiento y prueba. 

 

sciikit-learn también proporciona una librería de métricas para que puedas obtener fácilmente las puntuaciones de rendimiento de los modelos. 

  • puntuación de precisión = predicciones correctas/ predicciones totales
  • precisión = verdaderos positivos/(verdaderos positivos + falsos positivos)
  • recall = verdaderos positivos/(verdaderos positivos + falsos negativos)
  • Puntuación F1 = (2 x precisión x recuperación)/(precisión + recuperación)
  • especificidad = verdadero negativo/ (verdaderos positivos + falsos negativos)
  • matriz de confusión - muestra los recuentos de verdaderos positivos, verdaderos negativos, falsos positivos y falsos negativos

Comprobando las métricas de varios algoritmos, puede elegir el mejor modelo. 

PREDICCIÓN

Una vez que tengas un modelo que te satisfaga, querrás utilizarlo en tu aplicación. 

Es una práctica común realizar el preprocesamiento, la creación y la evaluación de su modelo utilizando Python, en un entorno como Jupyter Notebooks. A partir de ahí, puedes exportar tu modelo como un archivo.

Después, dentro de tu aplicación Streamlit, puedes cargar el modelo y utilizarlo para hacer predicciones. 

En las actividades de esta lección, recorrerás todo este proceso utilizando un conjunto de datos de Stroke Risk. Verás cómo preprocesar los datos, crear modelos utilizando diferentes algoritmos y, a continuación, utilizar un modelo en una sencilla aplicación Streamlit para predecir el riesgo de accidentes cerebrovasculares, dadas algunas características de entrada. 

ACTIVIDAD 1: ENTRENAR UN MODELO DE AI EN JUPYTER NOTEBOOK

Tiempo estimado: 60 minutos

Explorar un conjunto de datos Stroke Risk para crear un modelo de IA

Siga uno de estos videos, dependiendo de si está codificación local en su ordenador (video 1) o codificación en línea (video 2) a:
  1. Descargar un conjunto de datos Stroke Risk para predicción de Kaggle.
  2. Trabaja con los datos en un Jupyter Notebook para:
    • Revisar los datos
    • Preprocesar los datos para prepararlos para el modelo
    • Crea algunos modelos diferentes
    • Evalúen y elijan un modelo para su aplicación
    • Exportar el modelo
Descargar Cuaderno

DESAFÍO

Prueba un modelo diferente a los del Jupyter Notebook. 

  1. Busquen otros algoritmos de clasificación en el sitio web de scikit-learn y otros ejemplos de creación de modelos en Kaggle.
  2. Elige un algoritmo y añade el código a tu cuaderno para crear el modelo.  
  3. Utilicen las métricas de scikit-learn para comprobar la precisión. 

¿Qué tal funciona tu modelo? ¿Es mejor que cualquiera de los otros algoritmos del cuaderno?

ACTIVIDAD 2: CREA UNA APLICACIÓN DE PREDICCIÓN

Tiempo estimado: 45 minutos

Utiliza tu modelo en una aplicación Streamlit

Siga uno de los siguientes enlaces videos para crear una aplicación web que prediga el riesgo de ictus a partir de los datos introducidos por el usuario.
Elija la dirección video adecuada en función de cómo esté codificando su aplicación, ya sea localmente con Visual Studio Code o en línea con Codespaces.

DESAFÍO

El conjunto de datos Iris es un conjunto de datos clásico que clasifica las flores de iris en 3 especies (setosa, versicolor y virginica) basándose en las dimensiones de los pétalos y los sépalos.

  1. Investigue el conjunto de datos para conocer sus características y objetivos. 
  2. Puede descargar el conjunto de datos y crear su propio modelo o utilizar este modelo(archivo pickle) creado utilizando K-vecinos más cercanos. Tenga en cuenta que no se necesitó un escalador para este conjunto de datos. El archivo pickle sólo contiene el modelo.
  3. Importa el modelo y crea una aplicación Streamlit para predecir la especie de iris basándote en las cuatro características del conjunto de datos.

INSPIRACIÓN TECHNOVATION

He aquí algunos ejemplos sorprendentes de participantes en Technovation que han utilizado Python y Streamlit para crear aplicaciones web que incorporan modelos de aprendizaje automático. 

REFLEXIÓN

Has pasado por todo el proceso de preprocesamiento de un conjunto de datos, la construcción de varios modelos, y la evaluación y elección de uno para su uso en una aplicación. ¡Eso es MUCHO que aprender en una sola lección!

reflexión
¿Qué tipo de modelo cree que necesitará para su solución: de clasificación o de regresión?
¿Qué partes le resultaron difíciles de entender?
¿Qué pasos pueden dar ahora para saber más y poder crear su propia solución?

REVISIÓN DE TÉRMINOS CLAVE

  • Preprocesamiento - Tomar un conjunto de datos y asegurarse de que son adecuados para entrenar un modelo de aprendizaje automático.
  • Algoritmo de clasificación - algoritmo utilizado para entrenar un modelo de aprendizaje automático que clasificará o predecirá valores discretos.
  • Algoritmo de regresión - algoritmo utilizado para entrenar un modelo de aprendizaje automático para predecir un valor en un rango continuo.
  • Sesgo - diferencia entre el valor previsto del modelo y el valor correcto, debida a suposiciones incorrectas que simplifican el modelo.
  • Varianza - la cantidad de variabilidad en las predicciones de un modelo, cuando éste es incapaz de generalizar ante nuevos datos
  • Sobreajuste - cuando el modelo se ajusta demasiado bien a los datos de entrenamiento y no puede predecir bien los nuevos datos, debido a la elevada varianza del modelo.
  • Infraajuste - cuando un modelo se simplifica demasiado y no funciona bien ni con los datos de entrenamiento ni con los de prueba, debido a un sesgo elevado o a suposiciones en el modelo.
  •  

RECURSOS ADICIONALES

Aprendizaje automático 

Streamlit