Aplicaciones web con modelos de IA

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

Estas son las actividades para esta lección:

TRABAJANDO 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 nueva en Inteligencia Artificial, puede que quieras ver las lecciones de AI en este currículo educativo para aprender lo básico antes de saltar a la programació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 bibliotecas de máquinas de aprendizaje 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. 

CONJUNTO DE DATOS

ENCUENTRA PATRONES CON UN ALGORITMO DE APRENDIZAJE


¡PREDICCIÓN!

El conjunto de datos es la entrada para el modelo. Puedes incluir texto, imágenes, sonidos o poses. En la Unidad 2 hemos trabajado con datos numéricos y de texto utilizando Jupyter Notebooks. 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 muchos 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 para ello.

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ás las filas que tengan datos nulos.

Sin embargo, si el número de muestras es bajo, es posible que no desees 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, puedes 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, puedes plantearte 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, puedes normalizar 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. Tú quieres asegurarte de que son aproximadamente el mismo número de cada clase en tu 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.

SEPARANDO 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 ti. 

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 un algoritmo de clasificación o un algoritmo de regresión. Esto 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

  • Decision Tree
  • Random Forest
     
  • K-Nearest Neighbors
  • Naive Bayes
  • Regresión logística
  • Máquina de soporte de vectores

Regresión

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

Ten en cuenta que algunos algoritmos pertenecen a ambos tipos. Por ejemplo, existe un clasificador de Decision Tree y un regresor de Decision Tree. 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. 

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

La 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 -> infaajuste

El infraajusteocurre 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, significa que no está bien ajustado.

Alta varianza -> sobreajuste.

El 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.

la 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 pliegues 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 un métricas para que pueda obtener fácilmente las puntuaciones de rendimiento de sus 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, puedes 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 tu 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 riesgo de ictus. Verás cómo preprocesar los datos, crear modelos utilizando diferentes algoritmos y, a continuación, utilizarás un modelo en una sencilla aplicación Streamlit para predecir el riesgo de ictus, dadas algunas características de entrada. 

ACTIVIDAD 1: ENTRENA UN MODELO DE AI EN JUPYTER NOTEBOOK

Tiempo estimado: 60 minutos

Explorar un conjunto de datos de riesgo de ictus para crear un modelo de IA

Siga uno de estos vídeos, dependiendo de si está programación localmente en su ordenador (video 1) o programación en línea (video 2) a:
  1. Descargar un conjunto de datos de predicción de ictus de Kaggle.
  2. Trabaja con los datos en Jupyter Notebook para:
    • Revisar los datos
    • Preprocesar los datos para prepararlos para el modelo
    • Crear algunos modelos diferentes
    • Evaluar y elegir un modelo para tu aplicación
    • Exportar el modelo
Descargar el Notebook

RETO

Prueba un modelo distinto de los que aparecen en Jupyter Notebook. 

  1. Busca otros algoritmos de clasificación en el sitio web de scikit-learn y consulta 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. Utiliza 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 vídeos para crear una aplicación web que prediga el riesgo de ictus a partir de los datos introducidos por el usuario.
Elige el video apropiado dependiendo de cómo estés programación tu aplicación, ya sea localmente con Visual Studio Code, o en línea con Codespaces.

RETO

El conjunto de datos de 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. Investiga el conjunto de datos para conocer sus características y objetivos. 
  2. Puedes descargar el conjunto de datos y crear tu propio modelo o utilizar este modelo(archivo pickle) creado utilizando K-nearest neighbors. Ten en cuenta que no se necesita 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 DE 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 crees que necesitarás para tu solución: de clasificación o de regresión?
¿Qué partes te resultaron difíciles de entender?
¿Qué pasos puedes dar ahora para aprender más y poder crear tu 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