Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Intelligence artificielle vulgarisée
  3. Bien classifier n'est pas une option
Extrait - Intelligence artificielle vulgarisée Le Machine Learning et le Deep Learning par la pratique
Extraits du livre
Intelligence artificielle vulgarisée Le Machine Learning et le Deep Learning par la pratique
2 avis
Revenir à la page d'achat du livre

Bien classifier n'est pas une option

Ce que nous allons découvrir et prérequis

Dans l’étude de cas précédente consacrée à la régression, nous avons évoqué l’univers imaginaire des Pokémons. À présent retour à la réalité. Le cas d’étude que nous allons suivre tout au long de ce chapitre va nous permettre de classifier un signal d’un sonar embarqué à bord d’un navire afin de déterminer si l’objet détecté est une mine ou bien un rocher. Autant dire que nous n’avons pas le droit à l’erreur !

Prérequis nécessaires pour bien aborder ce chapitre : avoir lu les chapitres Les fondamentaux du langage Python, Des statistiques pour comprendre les données et Principaux algorithmes du Machine Learning.

Origines et source du jeu d’observations

Le jeu d’observations que nous allons utiliser est issu des travaux de recherche de Terry Sejnowski et R. Paul Gordman en 1988 visant à déterminer le paramétrage d’un réseau de neurones capable de déterminer si un objet sondé par un sonar est une mine ou bien un rocher.

Dans ce chapitre, nous n’allons pas encore aborder le sujet passionnant des réseaux de neurones. Nous allons dans un premier temps utiliser des algorithmes du Machine Learning pour essayer d’établir les meilleures classifications possible.

Avant d’entrer dans le vif du sujet, il est important de rappeler le fonctionnement d’un sonar afin de comprendre les données que nous utiliserons dans notre prédiction.

Le fonctionnement d’un sonar est assez simple. Dans le cas d’un sonar sous-marin actif (il existe des sonars passifs uniquement en écoute), l’antenne du sonar envoie, dans l’eau, une énergie électrique convertie en onde sonore à une fréquence donnée. Lorsque cette onde sonore rencontre un objet, elle rebondit sur celui-ci puis est captée à nouveau par l’antenne du sonar qui se charge de transformer l’onde sonore reçue en énergie électrique (signal électrique).

Le jeu d’observations que nous allons utiliser contient pour chaque prédiction...

Un problème de classification et algorithmes de prédiction associés

Notre problème consiste à prédire si l’objet repéré par le sonar est un rocher ou une mine. Il n’y a donc que deux options possibles nous permettant de classer notre prédiction dans l’une ou l’autre catégorie. Il s’agit donc bien d’un problème de classification.

Nous pouvons à présent lister les algorithmes de prédiction candidats à la résolution de problème de classification évoqués dans le chapitre Principaux algorithmes du Machine Learning :

  • La régression logistique

  • Les arbres de décision

  • Les forêts aléatoires

  • Les K plus proches voisins

  • Les machines à vecteurs de supports

Démarche de résolution du problème

1. Définition du problème à résoudre

Le problème que nous devons résoudre a été identifié en début de chapitre et consiste à déterminer si l’objet détecté par un sonar embarqué à bord d’un navire est une mine ou un rocher.

Création d’un nouveau projet Python

Il va de soi que nous allons avoir besoin d’un nouveau projet Python pour répondre à notre problème. Nous vous laissons le soin de choisir le nom pour ce nouveau projet ainsi que le nom du fichier de script qui contiendra toutes les instructions.

En complément, nous vous invitons à télécharger et installer les modules suivants (comme nous avons procédé dans les chapitres précédents) :

  • Pandas

  • Numpy

  • MatplotLib

  • Scikit-learn

2. Acquisition des données d’apprentissage

Le jeu d’observation que nous allons utiliser est bien entendu téléchargeable depuis la page Informations générales.

Une fois le jeu d’observation obtenu, il convient à présent de référencer ce fichier dans notre projet en créant un nouveau répertoire nommé datas et en déplaçant le fichier dans ce nouveau répertoire.

Via les instructions ci-dessous, nous sommes alors en capacité de charger ce fichier dans un Dataframe du module Pandas en vue de l’analyser par la suite :

import pandas as pnd 
observations = pnd.read_csv("datas/sonar.all-data.csv") 

3. Préparer et nettoyer les données

a. De quelles données disposons-nous ?

Pour connaître les données dont nous disposons et leur signification, nous allons utiliser ces quelques lignes :

print(observations.columns.values) 

Ayant pour résultat :

['0.0200' '0.0371' '0.0428' '0.0207' '0.0954' '0.0986' '0.1539' '0.1601' 
 '0.3109' '0.2111' '0.1609' '0.1582' '0.2238' '0.0645' '0.0660' '0.2273' 
 '0.3100' '0.2999' '0.5078' '0.4797' '0.5783' '0.5071' '0.4328' '0.5550' ...

En résumé

Dans ce chapitre, à travers un jeu d’observations un peu particulier, nous avons pu découvrir la démarche commune à toute résolution de problème lié au Machine Learning, à savoir : la définition du problème, l’acquisition et la préparation des données, l’analyse des données et enfin le choix de l’algorithme.

Nous avons également abordé l’utilisation des algorithmes liés à la classification, sans paramétrage particulier pour chacun d’entre eux. Puis nous avons modifié un simple paramètre de l’algorithme de machine à vecteurs de supports ce qui a fait pencher la balance dans le choix de l’algorithme à utiliser.

Cela veut donc dire que la phase d’amélioration des différents algorithmes utilisés est primordiale. Sortant du cadre de cet ouvrage dédié à la vulgarisation de l’utilisation des différents algorithmes, les étapes d’optimisation et d’améliorations (tuning) ne seront pas abordées. Cependant, vous pourrez trouver une multitude d’exemples sur Internet et nous vous invitons à vous référer à la page dédiée à l’optimisation des algorithmes proposée par le module Scikit-Learn et consultable à...