Applications Web utilisant des modèles d'IA

  • Entraîner un modèle d'apprentissage automatique à l'aide de bibliothèques Python dans un carnet Jupyter
  • Incorporer un modèle d'apprentissage automatique dans une application web Streamlit

TRAVAILLER AVEC DES MODÈLES D'APPRENTISSAGE AUTOMATIQUE

Une autre caractéristique majeure de Jupyter Notebooks, Python et Streamlit est la possibilité de former des modèles d'apprentissage automatique et de faire des prédictions. 

Si vous êtes novice en matière d'intelligence artificielle, vous pouvez consulter les leçons sur l'intelligence artificielle de ce programme pour apprendre les bases avant de vous lancer dans le codage plus avancé dont il est question ici. Vous pouvez utiliser une plateforme de modèles d'apprentissage automatique conviviale comme Teachable Machine pour créer un modèle et l'incorporer dans une application Web Python. 

Si vous avez une certaine expérience de l'intelligence artificielle et du travail avec des ensembles de données à l'aide de Jupyter Notebooks, il s'agit d'une bonne prochaine étape pour vous. 

Dans cette leçon, vous découvrirez quelques-unes des bibliothèques d'apprentissage automatique Python, ainsi que les différents modèles d'apprentissage automatique que vous pouvez créer à l'aide de Python. 

Pour résumer, la création d'un modèle d'apprentissage automatique se compose de trois parties principales. 

DATASET

TROUVE DES MODÈLES À L'AIDE D'UN ALGORITHME D'APPRENTISSAGE


PREDICTION !

L'ensemble de données est l'entrée du modèle. Il peut s'agir de texte, d'images, de sons ou de poses. Dans l'unité 2, nous avons travaillé avec des données textuelles et numériques à l'aide des carnets Jupyter. Dans cette leçon, nous continuerons à travailler avec des données textuelles, sous la forme d'une feuille de calcul.

La recherche de motifs consiste essentiellement à construire le modèle d'apprentissage automatique à partir de l'ensemble des données. Python contient de nombreuses bibliothèques qui permettent de construire un modèle d'IA à partir de données. Dans ce programme, nous utiliserons de nombreuses fonctions du paquetage scikit-learn. Outre les bibliothèques qu'il fournit, le site web contient de nombreuses et excellentes informations sur l'apprentissage automatique et le processus de construction de modèles. C'est une excellente ressource pour en savoir plus !

Une fois que vous avez créé votre modèle, celui-ci peut être utilisé pour prédire un résultat sur la base de nouvelles informations. Une fois de plus, Python fournit des bibliothèques qui permettent de le faire.

LE PRÉTRAITEMENT DES DONNÉES

Avant que votre ensemble de données ne soit envoyé à l'algorithme pour construire le modèle, il doit être prétraitéou "nettoyé" afin que l'algorithme de construction du modèle puisse travailler avec lui et créer le modèle le plus précis possible. En fait, le gros du travail de création d'un modèle d'apprentissage automatique réside dans le prétraitement. Vous devrez examiner attentivement les données pour décider de ce qui est important, de ce qui peut être laissé de côté et de ce qui doit être nettoyé.

Qu'est-ce que le prétraitement ? Dans le cas d'un ensemble de données textuelles, voici quelques éléments à prendre en compte.

 

Valeurs nulles

Il arrive que l'ensemble de données contienne des valeurs vides ou nulles, en particulier s'il s'agit de données d'enquête. Parfois, vous éliminerez toutes les lignes contenant des données nulles.

Toutefois, si le nombre d'échantillons est faible, il se peut que vous ne souhaitiez pas les éliminer. Une autre option consiste à remplacer une valeur nulle par une autre valeur. Il peut s'agir de zéro ou de la moyenne de toutes les autres valeurs de ce champ.

Valeurs aberrantes

Les données contiennent parfois un ou deux échantillons très différents du reste des données. Cela peut fausser le modèle. Vous ne voulez pas que les valeurs aberrantes affectent la façon dont le modèle est créé, c'est pourquoi les valeurs aberrantes sont souvent éliminées de l'ensemble de données.

Par exemple, dans un ensemble de données, 95 % des échantillons sont constitués de personnes âgées de 10 à 30 ans, mais quelques échantillons aléatoires sont constitués de personnes âgées de plus de 50 ans. Étant donné que la grande majorité des échantillons se situe dans la tranche d'âge 10-30 ans, vous pouvez envisager d'éliminer les échantillons de la tranche d'âge supérieure.

Normalisation

Souvent, les chiffres d'un grand ensemble de données varient en fonction des caractéristiques représentées. Par exemple, vous pouvez avoir l'âge, qui varie de 0 à 70, mais aussi le salaire, qui varie de 0 à 500 000 ! Les échelles sont très différentes, de sorte qu'une caractéristique peut compter davantage dans le modèle.

Pour y remédier, vous pouvez standardiser les données afin qu'elles soient sur une seule échelle. scikit-learn fournit un StandardScaler, qui met à jour chaque caractéristique afin que la moyenne soit de 0 et l'écart-type de 1.

Une autre chose à prendre en compte est un nombre équilibré d'échantillons pour chaque classe ou étiquette. Vous voulez vous assurer qu'il y a à peu près le même nombre de chaque classe dans votre ensemble de données.

Encodage

L'IA aime les chiffres, pas nécessairement les mots. Il est donc utile de convertir toutes les données en nombres. scikit-learn fournit des fonctions Encoder, qui permettent de convertir facilement une série de valeurs textuelles possibles en une série de nombres.

Un exemple pourrait être les niveaux d'activité, avec des valeurs d'échantillon sédentaires, légères, modérées, élevées. Ces réponses peuvent être codées en valeurs 0, 1, 2 et 3, ce qui est beaucoup plus facile à gérer pour l'algorithme de construction de modèle.

SÉPARATION DES DONNÉES

Une fois que vous avez prétraité vos données, vous devez les diviser en un ensemble de formation et un ensemble de test. L'ensemble d'entraînement sera utilisé pour former et créer le modèle. Vous testerez ensuite votre modèle à l'aide de l'ensemble de test pour voir comment il fonctionne.

Il existe des méthodes standard de répartition (généralement 75 % pour la formation et 25 % pour les tests), mais vous pouvez répartir les données comme vous le souhaitez. Là encore, des fonctions sont fournies afin que tout soit automatisé pour vous. 

CRÉATION DU MODÈLE

L'étape suivante consiste à créer le modèle. La grande décision à prendre est la suivante : quel algorithme dois-je utiliser ? Il existe de nombreux algorithmes d'apprentissage supervisé et il est difficile de savoir lequel utiliser. Une bonne méthode consiste à essayer plusieurs algorithmes différents et à déterminer celui qui offre la meilleure précision. 

La première étape consiste à déterminer si vous avez besoin d'une classification ou d'un algorithme de régression de régression. Cela dépend de ce que vous essayez de prédire. 

Les algorithmes de classification sont utilisés pour prédire des cibles ou des classes discrètes. Par exemple, la classification d'un courrier électronique en tant que spam ou non spam est un problème de classification

Les algorithmes de régression sont utilisés pour prédire quelque chose qui se situe dans une plage continue. Un exemple serait de prédire le montant du salaire d'une personne. La prédiction est une plage de nombres et la sortie peut être n'importe quelle valeur de cette plage. 

Voici quelques-uns des types d'algorithmes de création de modèles les plus courants.

réseau neuronal

Classification

  • Arbre de décision
  • Forêt aléatoire 
  • Voisins les plus proches (K-Nearest Neighbors)
  • Naive Bayes
  • Régression logistique
  • Support Vector Machine

Régression

  • Régression linéaire
  • Régression de la crête
  • Régression Lasso
  • Régression polynomiale
  • Régression linéaire bayésienne
  • Support Vector Regression

Notez que certains algorithmes relèvent des deux types. Par exemple, il existe un classificateur d'arbre de décision et un régresseur d'arbre de décision. Une machine à vecteurs de support fonctionne pour la classification, et la régression à vecteurs de support fonctionne pour la régression. 

Alors, comment décider lequel utiliser ? Vous devriez faire des recherches pour voir ce que d'autres scientifiques des données utilisent dans différentes situations afin de déterminer ce qui pourrait convenir à votre modèle. Vous devriez également essayer différents algorithmes avec vos données et trouver celui qui offre la meilleure précision. Vous pouvez également modifier les paramètres d'un algorithme particulier pour voir s'il produit un modèle plus précis. 

scitkit-learn fournit des fonctions pour tous ces algorithmes, il est donc facile de créer le modèle. 

ÉVALUATION DU MODÈLE

Vous voulez que votre modèle soit le meilleur possible, vous devez donc évaluer ses performances. Deux variables courantes dans l'évaluation d'un modèle sont le biais et la variance. 

Le biais est la différence entre la valeur prédite par le modèle et la valeur correcte. 

La variance est le degré de variation des prédictions lorsque des données différentes sont utilisées. 

Il s'agit de trouver un bon équilibre entre le biais et la variance.

Biais élevé -> sous-adaptation.

L'insuffisance d'adaptation se produit lorsque le modèle est trop simple pour tenir compte du bruit dans les données d'apprentissage. Cela peut se produire s'il n'y a pas assez de données ou pas assez de caractéristiques (colonnes), ou encore trop de bruit dans les données. Si un modèle n'est pas performant à la fois sur les données d'apprentissage et sur les données de test, cela signifie qu'il est sous-adapté.

Variance élevée -> surajustement.

L'overfitting se produit lorsque vous entraînez un modèle sur un ensemble de données et qu'il donne de très bons résultats, mais que si vous lui présentez ensuite de nouvelles données, il ne donne pas du tout de bons résultats. Cela peut se produire si le modèle est trop complexe et qu'il tente de s'adapter trop étroitement aux données d'apprentissage. Le modèle peut prédire très bien sur les données d'apprentissage, mais ne donne pas de bons résultats sur les données de test.

La validation croisée est une technique permettant de vérifier les performances d'un modèle.

La validation croisée consiste à entraîner votre modèle plusieurs fois, en utilisant à chaque fois différentes répartitions des données d'entraînement/de test. Votre ensemble de données est divisé en plusieurs plisou sous-ensembles. Ensuite, un pli est retenu comme ensemble de validation ou de test, et les autres plis sont utilisés pour la formation. Cette opération est effectuée plusieurs fois, de sorte que les ensembles de formation et de test changent à chaque fois. 

 

sciikit-learn fournit également une fonction métriques afin que vous puissiez facilement obtenir des scores de performance pour vos modèles. 

  • score de précision = prédictions correctes/total des prédictions
  • précision = vrais positifs/(vrais positifs + faux positifs)
  • rappel = vrais positifs/(vrais positifs + faux négatifs)
  • Score F1 = (2 x précision x rappel)/(précision + rappel)
  • spécificité = vrai négatif/ (vrais positifs + faux négatifs)
  • matrice de confusion - indique le nombre de vrais positifs, de vrais négatifs, de faux positifs et de faux négatifs

En vérifiant les mesures de différents algorithmes, vous pouvez choisir le meilleur modèle. 

PREDICTION !

Une fois que vous êtes satisfait du modèle, vous souhaitez l'utiliser dans votre application. 

Il est courant d'effectuer le prétraitement, la création et l'évaluation de votre modèle à l'aide de Python, dans un environnement tel que Jupyter Notebooks. À partir de là, vous pouvez exporter votre modèle sous forme de fichier.

Ensuite, dans votre application Streamlit, vous pouvez charger le modèle et l'utiliser pour faire des prédictions. 

Dans les activités de cette leçon, vous suivrez l'ensemble de ce processus en utilisant un ensemble de données sur les risques d'accident vasculaire cérébral. Vous verrez comment prétraiter les données, créer des modèles à l'aide de différents algorithmes, puis utiliser un modèle dans une simple application Streamlit pour prédire le risque d'accident vasculaire cérébral, compte tenu de certaines caractéristiques d'entrée. 

ACTIVITÉ 1 : FORMATION D'UN MODÈLE D'INTELLIGENCE ARTIFICIELLE DANS JUPYTER NOTEBOOK

Durée estimée : 60 minutes

Explorer un ensemble de données sur les risques d'AVC pour construire un modèle d'IA

Suivez l'une de ces vidéos, selon que vous êtes codage local sur votre ordinateur (vidéo 1) ou codage en ligne (vidéo 2) à :
  1. Téléchargez un ensemble de données de prédiction d'AVC à partir de Kaggle.
  2. Travaillez avec les données dans un carnet Jupyter pour :
    • Examiner les données
    • Prétraiter les données pour les préparer au modèle
    • Créer des modèles différents
    • Évaluer et choisir un modèle pour votre application
    • Exporter le modèle
Télécharger le carnet de notes

DÉFI

Essayez un modèle différent de ceux du carnet Jupyter. 

  1. Recherchez d'autres algorithmes de classification sur le site web scikit-learn et consultez d'autres exemples de construction de modèles sur Kaggle.
  2. Choisissez un algorithme et ajoutez le code à votre cahier pour créer le modèle.  
  3. Utilisez les métriques scikit-learn pour vérifier la précision. 

Quelles sont les performances de votre modèle ? Est-il meilleur que les autres algorithmes du carnet ?

ACTIVITÉ 2 : CONSTRUIRE UNE APPLICATION DE PRÉDICTION

Durée estimée : 45 minutes

Utilisez votre modèle dans une application Streamlit

Suivez l'une des vidéos ci-dessous pour créer une application web qui prédit le risque d'accident vasculaire cérébral en fonction des données fournies par l'utilisateur.
Choisissez la vidéo appropriée en fonction de la façon dont vous codez votre application, soit localement avec Visual Studio Code, soit en ligne avec Codespaces.

DÉFI

L'ensemble de données Iris est un ensemble de données classique qui classe les fleurs d'iris en trois espèces (setosa, versicolor et virginica) sur la base des dimensions des pétales et des sépales.

  1. Effectuez des recherches sur l'ensemble de données afin de connaître ses caractéristiques et ses cibles. 
  2. Vous pouvez télécharger l'ensemble de données et créer votre propre modèle ou utiliser ce modèle(fichier pickle) créé à l'aide des K-voisins les plus proches. Notez qu'aucun scaler n'a été nécessaire pour cet ensemble de données. Le fichier pickle ne contient que le modèle.
  3. Importez le modèle et créez une application Streamlit pour prédire l'espèce d'iris en fonction des quatre caractéristiques du jeu de données.

INSPIRATION TECHNOVATION

Voici quelques exemples étonnants de participants à Technovation qui ont utilisé Python et Streamlit pour créer des applications web intégrant des modèles d'apprentissage automatique. 

RÉFLEXION

Vous avez suivi tout le processus de prétraitement d'un ensemble de données, de construction de plusieurs modèles, d'évaluation et de choix de l'un d'entre eux pour l'utiliser dans une application. C'est BEAUCOUP de choses à apprendre en une seule leçon !

réflexion
De quel type de modèle pensez-vous avoir besoin pour votre solution - classification ou régression ?
Quelles sont les parties que vous avez eu du mal à comprendre ?
Quelles mesures pouvez-vous prendre dès maintenant pour en savoir plus et élaborer votre solution ?

RÉVISION DES TERMES CLÉS

  • Prétraitement - Prendre un ensemble de données et s'assurer que les données qu'il contient sont adaptées à la formation d'un modèle d'apprentissage automatique.
  • Algorithme de classification - algorithme utilisé pour former un modèle d'apprentissage automatique qui classifie ou prédit des valeurs discrètes
  • Algorithme de régression - algorithme utilisé pour former un modèle d'apprentissage automatique afin de prédire une valeur sur une plage continue
  • Biais - différence entre la valeur prédite par le modèle et la valeur correcte, due à des hypothèses incorrectes qui simplifient le modèle.
  • Variance - le degré de variabilité des prédictions d'un modèle, lorsqu'un modèle n'est pas en mesure de se généraliser face à de nouvelles données.
  • Sur ajustement - lorsque le modèle s'adapte trop bien aux données d'apprentissage et qu'il ne peut pas prédire correctement les nouvelles données, en raison d'une variance élevée dans le modèle.
  • Insuffisance d'adaptation - lorsqu'un modèle est trop simplifié et ne donne pas de bons résultats sur les données d'apprentissage ou de test, en raison d'un biais important ou d'hypothèses dans le modèle.
  •  

RESSOURCES SUPPLÉMENTAIRES

Apprentissage automatique 

  • Geeks for Geeks Machine Learning Tutorial - donne une excellente introduction et une vue d'ensemble de certains processus et de la terminologie de l'apprentissage automatique.
  • Simplilearn's Scikit-Learn tutorial - passe en revue un ensemble de données sur la qualité du vin pour s'entraîner à utiliser scikit-learn dans un carnet Jupyter.
  • Apprentissage automatique avec scikit-learn - une liste de lecture complète sur Youtube par Data School

Éclairé par la lumière du jour