Nous vivons à l’ère des données, qui profite d’une meilleure puissance de calcul des ordinateurs et de l’immensité des ressources de stockage. C’est de cela que nous faisons allusion lorsque nous parlons de Big Data. Ces données ou informations augmentent de jour en jour, mais le véritable défi consiste à leur donner un sens.

Les entreprises et les organisations tentent d’y faire face en construisant des systèmes intelligents utilisant les concepts et les méthodologies de la science des données, de l’extraction de données et de l’apprentissage automatique (machine learning). Parmi ceux-ci, l’apprentissage automatique, notamment avec Python, est le domaine le plus passionnant. Il ne serait pas faux d’appeler apprentissage automatique l’application et la science des algorithmes qui donnent un sens aux données.

Dans cet article, nous parlerons de ce qu’est-ce le Machine Learning, ses applications dans l’industrie, ses grands concepts et nous mettrons en pratique ses concepts avec le langage de programmation Python.

D’où vient ce besoin du machine learning ?

À l’heure actuelle, l’être humain est l’espèce la plus intelligente et la plus avancée sur terre, car il peut penser, évaluer et résoudre des problèmes complexes. L’Intelligence Artificielle est encore à son stade initial et n’a pas dépassé l’intelligence humaine dans de nombreux aspects. La question est donc de savoir pourquoi est-il nécessaire de faire apprendre les machines. La réponse la plus appropriée est pour « prendre des décisions, sur la base de données, avec efficacité et à grande échelle« .

Ces derniers temps, les organisations investissent massivement dans les nouvelles technologies telles que l’intelligence artificielle, l’apprentissage automatique et le deep learning afin d’obtenir des informations clés à partir des données pour effectuer plusieurs tâches et résoudre des problèmes. Nous pouvons appeler cela des décisions prises par des machines, notamment pour automatiser le processus. Ces décisions, guidées par les données, peuvent être utilisées, au lieu d’utiliser la logique de programmation, dans les problèmes qui ne peuvent pas être programmés de manière inhérente.

Actuellement, l’apprentissage automatique est utilisé dans les voitures à conduite autonome, la détection de la cyber fraude, la reconnaissance des visages, la suggestion d’amis par Facebook, etc. Plusieurs grandes entreprises comme Netflix et Amazon ont construit des modèles d’apprentissage automatique qui utilisent une grande quantité de données pour analyser les intérêts des utilisateurs et recommander des produits en conséquence.

Qu’est-ce que c’est que le machine learning ?

L’apprentissage automatique est considéré comme un sous-ensemble de l’intelligence artificielle qui s’intéresse principalement au développement d’algorithmes permettant à un ordinateur d’apprendre par lui-même à partir de données et d’expériences passées.

Nous pouvons le définir de manière résumée comme suit : 

L’apprentissage automatique permet à une machine d’apprendre automatiquement à partir de données, d’améliorer ses performances à partir d’expériences et de prédire des faits sans être explicitement programmée.

Quelles sont les applications du machine learning ?

Nous utilisons l’apprentissage automatique sans le savoir dans notre vie quotidienne en utilisant les outils suivants : Google Maps, Google Assistant, Alexa, etc. Nous détaillerons dans cette partie les applications les plus courantes du machine learning.

La reconnaissance d’images

La reconnaissance d’images est l’une des applications les plus courantes de l’apprentissage automatique. Elle est utilisée pour identifier des objets, des personnes, des lieux, des images numériques, etc. Le cas d’utilisation le plus connu est celui de Facebook.

Facebook nous offre une fonction de suggestion automatique de noms à chaque fois que nous téléchargeons une photo avec nos amis Facebook. La technologie derrière cela est l’algorithme de détection et de reconnaissance des visages de l’apprentissage automatique. Elle est basée sur le projet de Facebook appelé « Deep Face« .

La reconnaissance vocale

La reconnaissance vocale est un processus qui consiste à convertir des instructions vocales en texte, et elle est également connue sous le nom de « Speech to text » ou « Computer speech recognition« . Les assistants vocaux Google, Siri, Cortana et Alexa utilisent la technologie de reconnaissance vocale pour exécuter les instructions vocales.

Recommandation de produits

L’apprentissage automatique est largement utilisé par diverses entreprises de l’e-commerce et de divertissement telles qu’Amazon, Netflix, etc. pour recommander des produits à leurs utilisateurs. Chaque fois que nous recherchons un produit sur Amazon, nous commençons à recevoir une publicité pour le même produit lorsque nous surfons sur le même navigateur, et ce, grâce à l’apprentissage automatique.

modèle de recommandation Amazon
Modèle de recommandation d’Amazon, qui vous propose des produits en fonction de vos achats passés et de vos caractéristiques

Google comprend l’intérêt de l’utilisateur en utilisant divers algorithmes d’apprentissage automatique et suggère un produit en fonction de l’intérêt du client.

De même, lorsque nous utilisons Netflix, nous recevons des recommandations pour des séries de divertissement, des films, etc.

Les voitures à conduite autonome

L’une des applications la plus intéressante de l’apprentissage automatique est la voiture autonome. L’apprentissage automatique joue un rôle important dans les voitures à conduite autonome. Tesla, la société de construction automobile la plus populaire, travaille sur des voitures à conduite autonome. Elle utilise une méthode d’apprentissage non supervisée pour entraîner les modèles de voiture à détecter les personnes et les objets pendant la conduite.

La détection des fraudes

L’apprentissage automatique rend nos transactions en ligne sûres et sécurisées en détectant les transactions frauduleuses. Chaque fois que nous effectuons une transaction en ligne, il peut y avoir plusieurs façons de réaliser une transaction frauduleuse, comme de faux comptes, de faux identifiants, et de voler de l’argent au milieu d’une transaction. Pour détecter cela, le réseau neuronal Feed Forward nous aide en vérifiant s’il s’agit d’une transaction authentique ou d’une transaction frauduleuse.

Le diagnostique médical

Dans le domaine médical, l’apprentissage automatique est utilisé pour le diagnostic des maladies. Grâce à cela, la technologie médicale se développe très rapidement et est capable de construire des modèles 3D qui peuvent prédire la position exacte des lésions dans le cerveau.

Cela permet de détecter facilement les tumeurs cérébrales et autres maladies liées au cerveau.

Les différentes techniques de machine learning avec Python

Il existe différents algorithmes, techniques et méthodes de ML qui peuvent être utilisés pour construire des modèles afin de résoudre des problèmes de la vie réelle en utilisant des données. Dans cette section, nous allons aborder ces différents types de méthodes.

L’apprentissage supervisé

Les algorithmes ou méthodes d’apprentissage supervisé sont les algorithmes ML les plus couramment utilisés. Cette méthode ou algorithme d’apprentissage prend l’échantillon de données, c’est-à-dire les données d’apprentissage, et la sortie, c’est-à-dire les étiquettes ou les réponses, associée à chaque échantillon de données pendant le processus d’apprentissage.

L’objectif principal des algorithmes d’apprentissage supervisé est d’apprendre une association entre les échantillons de données d’entrée et les sorties correspondantes après avoir effectué plusieurs instances de données d’entraînement.

Par exemple, nous avons x comme variable d’entrée et y la variable de sortie. L’objectif d’un algorithme d’apprentissage supervisé est de trouver une fonction f de mise en correspondance de la variable d’entrée (x) avec la variable de sortie (Y), c’est-à-dire une expression du type Y=f(x). Ce qui permettra d’obtenir de nouvelles données d’entrée (x), nous pouvons facilement prédire la variable de sortie (Y) pour ces nouvelles données d’entrée.

Le fonctionnement de l’apprentissage supervisé peut être facilement compris grâce à l’exemple et au diagramme ci-dessous :

apprentissage supervisé

Sur la base des tâches à effectuer, les algorithmes d’apprentissage supervisé peuvent être divisés en deux grandes catégories :

  •    La Classification
  •    Et la Régression

Classification

L’objectif principal des tâches basées sur la classification est de prédire des étiquettes de sorties catégorielles ou des réponses pour les données d’entrée données. La sortie sera basée sur ce que le modèle a appris pendant la phase de formation. Comme nous savons que les réponses catégorielles en sortie signifient des valeurs discrètes et non ordonnées, chaque réponse en sortie appartiendra à une classe ou une catégorie spécifique. Nous aborderons la classification et les algorithmes associés en détail dans les sections suivantes.

Régression

L’objectif principal des algorithmes de régression est de prédire les étiquettes ou les réponses de sortie qui sont des valeurs numériques continues, pour les données d’entrée données. La sortie sera basée sur ce que le modèle a appris dans sa phase de formation. Fondamentalement, les modèles de régression utilisent les caractéristiques des données d’entrée (variables indépendantes) et leurs valeurs de sortie numériques continues correspondantes (variables dépendantes ou de résultat) pour apprendre une association spécifique entre les entrées et les sorties correspondantes.

L’apprentissage non supervisé

L’apprentissage non supervisé est un type d’apprentissage automatique dans lequel les modèles sont formés à l’aide d’un ensemble de données non étiquetées et sont autorisés à agir sur ces données sans aucune supervision.

L’objectif de l’apprentissage non supervisé est de trouver la structure sous-jacente d’un ensemble de données, de regrouper ces données en fonction de leurs similarités et de représenter cet ensemble de données dans un format compressé.

Le fonctionnement de l’apprentissage non supervisé peut être compris par le schéma ci-dessous :

apprentissage non-supervisé

Ici, nous avons pris des données d’entrée non étiquetées, ce qui signifie qu’elles ne sont pas catégorisées et que les sorties correspondantes ne sont pas données non plus. Maintenant, ces données d’entrée non étiquetées sont transmises au modèle d’apprentissage automatique afin de l’entraîner. Tout d’abord, il interprétera les données brutes pour trouver les modèles cachés des données et appliquera ensuite des algorithmes appropriés tels que le clustering k-means, l’arbre de décision, etc.

Une fois qu’il a appliqué l’algorithme approprié, l’algorithme divise les données en groupes en fonction des similarités et des différences entre les données.

Sur la base des tâches à effectuer, les algorithmes d’apprentissage non supervisé peuvent être divisés en deux grandes catégories :

Le clustering

Le clustering est une méthode permettant de regrouper les objets en clusters de telle sorte que les objets présentant le plus de similarités restent dans un groupe. Les objets d’un groupe doivent avoir moins, voire aucune similarité avec les objets d’un autre groupe. L’analyse par clusters trouve les points communs entre les données et les catégorise en fonction de la présence ou de l’absence de ces points communs.

L’association

Une règle d’association est une méthode d’apprentissage non supervisée qui est utilisée pour trouver les relations entre les variables dans une grande base de données. Elle détermine les éléments qui apparaissent ensemble dans une base de données. La règle d’association rend la stratégie de marketing plus efficace. Par exemple, les personnes qui achètent un article X (un pain, par exemple) ont également tendance à acheter un article Y (beurre/confiture). Un exemple typique de règle d’association est l’analyse du panier de la ménagère.

Nous allons maintenant à la mise en pratique du machine learning en Python. Mais avant de s’y attaquer, nous vous invitons à télécharger ce livre sur l’initiation à l’écosystème Hadoop.

Implémentation d’un projet de machine learning avec Python

Dans cette partie de l’article, nous verrons comment mener un projet de machine learning étape par étape. Nous allons étudier en particulier la méthode de classification de l’apprentissage supervisé.

Pour une meilleure compréhension de ce tutoriel vous devez avoir une connaissance de base sur le langage de programmation python et une connaissance globale de la libraire Scikit-Learn. Nos articles sur la programmation Python pour la data et sur Scikit-Learn vous donnera toutes les bases nécessaires.

Qu’est-ce que la classification en machine learning avec Python ?

L’algorithme de classification est une technique d’apprentissage supervisé qui est utilisée pour identifier la catégorie de nouvelles observations sur la base de données d’apprentissage. Dans la classification, un programme apprend à partir d’un ensemble de données ou d’observations données, puis classe les nouvelles observations dans un certain nombre de classes ou de groupes. Par exemple, Oui ou Non, 0 ou 1, Spam ou Non Spam, chat ou chien, etc. Les classes peuvent être appelées cibles/étiquettes ou catégories.

Contrairement à la régression, la variable de sortie de la classification est une catégorie, et non une valeur, comme « vert ou bleu », « fruit ou animal », etc. L’algorithme de classification étant une technique d’apprentissage supervisé, il prend des données d’entrée étiquetées, ce qui signifie qu’il contient des entrées avec la sortie correspondante.

Le meilleur exemple d’un algorithme de classification ML est le détecteur de spam par courriel.

Les algorithmes de classification peuvent être divisés en deux catégories principales :

Modèles linéaires :

  •         Régression logistique
  •         Support Vector Machines – SVM

Modèles non linéaires :

  •        K-Nearest Neighbors (K plus proche voisins)
  •         Kernel SVM
  •         Naïve Bayes (réseaux bayésiens)
  •         Classification par arbre de décision
  •         Classification Random Forest

Dans cette partie, nous essayerons de résoudre un problème d’apprentissage automatique en Python avec le modèle des K-Nearest Neighbors (K plus proche voisins).

L’algorithme KNN (K-Nearest Neighbors) est un algorithme d’apprentissage automatique supervisé simple et non paramétrique qui peut être utilisé pour résoudre les problèmes de classification et de régression.

Nous allons maintenant vous présenter le projet qui consiste à détecter des fruits à partir de plusieurs caractéristiques. Sur la base de la valeur de la masse, de la largeur, de la hauteur et du score de couleur, nous allons déterminer si un fruit est une pomme, une mandarine, une orange ou un citron. Pour cela nous allons procéder en étapes :

Étape 1 : Charger l’ensemble de données

Importez la bibliothèque pandas pour créer un Dataframe. L’ensemble de données est au format txt. Nous pouvons utiliser la méthode read_table() pour extraire les données et les présenter sous dorme Dataframe. Le code est le suivant :

import pandas as pd
df= pd.read_table("fruits.txt")
df

On obtient le Dataframe suivant :

Étape 2 : Analyse des données

Cet ensemble de données est composé de 7 colonnes. Tapez la commande

df.columns 

pour afficher les 7 colonnes.

Index(['fruit_label', 'fruit_name', 'fruit_subtype', 'mass', 'width', 'height',
       'color_score'],
      dtype='object')
  • Fruit Label
  • Fruit Name
  • Fruit Subtype
  • Mass
  • Width
  • Height
  • Color Score

Pour prendre les valeurs uniques des données de la colonne nom_fruit, utilisez la méthode unique() de la bibliothèque pandas. Nous l’utiliserons sur la colonne fruit_name. Elle retournera un tableau NumPy avec les valeurs uniques de la colonne.

nom_fruits = df['fruit_name'].unique()
nom_fruits

On obtient donc la sortie suivante :

array(['apple', 'mandarin', 'orange', 'lemon'], dtype=object)

La suite consiste à récupérer le nombre d’apparition de ces fruits dans l’ensemble de données :

nombres_fruits = df.groupby(df['fruit_name'], sort = False).size()
nombres_fruits

On obtient la sortie suivante :

fruit_name
apple       19
mandarin     5
orange      19
lemon       16
dtype: int64

Étape 3 : Visualisation des données

Essayons de visualiser maintenant sous forme de graphique les noms des fruits en fonction de leur nombre d’apparition. Pour ce faire, vous devez importer la librairie matplotlib et écrire le code suivant :

import matplotlib.pyplot as plt
plt.bar(nom_fruits, nombres_fruits, color=['r','blue','orange','y'])
plt.title('Diagramme: Fruits vs Nombre')
plt.xlabel('Nom des fruits')
plt.ylabel('Nombre')
plt.show()

Le graphique qui en résulte sera :

Étape 4 : Diviser en valeurs d’entrée et de sortie

Considérez une variable x pour prendre les caractéristiques de l’ensemble de données et une autre variable y pour les valeurs cibles des données. Nous allons utiliser l’opérateur iloc pour faire la même chose. L’opérateur iloc récupère les lignes spécifiées du cadre de données. Ces valeurs peuvent être converties en tableaux Numpy en utilisant l’attribut values.

Les colonnes 3 à 6 sont considérées comme des caractéristiques et la colonne 1 est traitée comme une sortie.

x = df.iloc[:,[3,4,5,6]].values
y = df.iloc[:,1].values
print(x,y)

Étape 5 : Diviser les données d’entraînement et de test

données d'apprentissage et données de test

Nous pouvons entraîner le modèle en utilisant des données que nous appelons données d’entraînement ou ensemble d’entraînement. Les données d’apprentissage sont celles qui présentent déjà la valeur réelle que le modèle aurait dû prédire. L’algorithme modifie donc la valeur des paramètres pour tenir compte des données de l’ensemble d’apprentissage.

Mais comment savoir si, après l’apprentissage, le modèle est globalement bon ?

Pour cela, nous avons des données de test/ensemble de test qui sont essentiellement des données différentes dont nous connaissons les valeurs mais qui n’ont jamais été montrées au modèle auparavant. Ainsi, si le modèle, après la formation, est performant sur l’ensemble de test, nous pouvons dire que le modèle d’apprentissage automatique est bon.

Nous pouvons diviser les données en utilisant la fonction train_test_split de la bibliothèque model_selection du paquet Sklearn. Elle prend 4 variables en sortie que nous avons nommé comme suit :

    x_train – Données de formation en entrée

    x_test – Données de test en entrée

    y_train – Données de formation en sortie

    y_test – Données de test en sortie

Il y a un autre paramètre appelé random_state qui est utilisé pour initialiser le générateur de nombres aléatoires interne. Il décidera également pour la division des données en valeurs d’entraînement et de test.

from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x,y,random_state = 0)

Les données de test sont prises par défaut à 0,25 des données d’origine, sauf si une autre valeur est spécifiée. Par conséquent, la valeur de formation sera de 75% des données originales et la valeur de test sera de 25% des données originales.

Étape 6 : Normalisation des données

L’objectif de la normalisation est de modifier les valeurs des colonnes numériques d’entrée dans l’ensemble de données à une échelle commune, sans déformer les différences dans les plages de valeurs. Pour l’apprentissage automatique, la normalisation n’est pas nécessaire pour chaque ensemble de données. Elle n’est nécessaire que lorsque les caractéristiques ont des plages différentes, comme dans notre ensemble de données. Nous allons utiliser la technique de normalisation Min Max.

La normalisation Min Max est une stratégie de normalisation qui transforme linéairement l’entrée y= (x-min)/(max-min), où min et max sont les valeurs minimum et maximum dans X, où X est l’ensemble des valeurs observées de x. Lorsque x=max, alors y=1. Cela signifie que la valeur minimale de X est mise en correspondance avec 0 et que la valeur maximale de X est mise en correspondance avec 1.

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
x_train = scaler.fit_transform(x_train)
x_test = scaler.transform(x_test)

Étape 7 : Appelez le classificateur KNN

Cette partie de l’apprentissage automatique consiste à exécuter un classificateur. Nous allons utiliser l’algorithme K-Nearest Neighbors Classifier.

En utilisant le package Sklearn, importez KNearestClassifier de la bibliothèque neighbors. Ici aussi, nous considérons que la valeur de n_voisins est de 7, car les données d’apprentissage comportent 44 lignes. La manière efficace de choisir k est de prendre la racine carrée des données de formation et de considérer le nombre impair le plus proche.

from sklearn.neighbors import KNeighborsClassifier
model = KNeighborsClassifier(n_neighbors= 7, metric= 'euclidean')

Étape 8 : Ajuster le modèle

L’ajustement d’un modèle signifie que vous faites en sorte que votre algorithme apprenne la relation entre les caractéristiques et les cibles afin de pouvoir prédire les valeurs futures d’une cible.

model.fit(x_train,y_train)

Étape 9 : Prédiction pour l’ensemble de données de test

Nous pouvons prédire la classe pour les instances de données de test en utilisant notre modèle de classification finalisé dans scikit-learn à l’aide de la fonction predict().

y_pred = model.predict(x_test)
y_pred
array(['orange', 'orange', 'lemon', 'lemon', 'apple', 'apple', 'apple',
       'lemon', 'orange', 'apple', 'mandarin', 'apple', 'orange',
       'orange', 'apple'], dtype=object)

y_test
array(['orange', 'orange', 'lemon', 'orange', 'apple', 'apple', 'orange',
       'lemon', 'orange', 'apple', 'mandarin', 'apple', 'orange',
       'orange', 'orange'], dtype=object)

Vous pouvez vérifier la sortie prédite avec la sortie réelle de l’ensemble de données de test qui est stocké dans la variable y_test.

Étape 10 : Score de précision et matrice de confusion

À partir de la sortie ci-dessus, nous pouvons voir que certaines valeurs prédites ne correspondent pas à la valeur réelle. Nous pouvons comparer les deux classes et trouver la précision.

from sklearn.metrics import accuracy_score
accuracy_score(y_test,y_pred)*100

On obtient donc :

80.0

Nous pouvons conclure à partir de ce résultat que pour 100 valeurs, 80 valeurs seront prédites correctement.

Nous pouvons même mettre cela sous la forme d’une matrice appelée matrice de confusion pour mieux le comprendre.

from sklearn.metrics import confusion_matrix
confusion_matrix(y_test,y_pred)

On obtient la matrice suivante :

array([[4, 0, 0, 0],
       [0, 2, 0, 0],
       [0, 0, 1, 0],
       [2, 1, 0, 5]])

Dans cet article, nous avons effectué un tour d’horizon complet des algorithmes d’apprentissage automatique pour l’analyse des données et les applications intelligentes.

Conformément à notre objectif, nous avons brièvement discuté de la manière dont les différents types de méthodes d’apprentissage automatique peuvent être utilisés pour trouver des solutions à divers problèmes du monde réel.

Un modèle d’apprentissage automatique réussi dépend à la fois des données et des performances des algorithmes d’apprentissage. Les algorithmes d’apprentissage sophistiqués doivent ensuite être formés à l’aide des données du monde réel collectées et des connaissances liées à l’application cible avant que le système ne puisse aider à la prise de décision intelligente.

Nous avons également abordé plusieurs domaines d’application populaires basés sur les techniques d’apprentissage automatique afin de mettre en évidence leur applicabilité dans divers problèmes du monde réel.

Nous espérons que vous avez compris l’intérêt du machine learning dans le marché et son intérêt dans votre carrière, notamment dans le domaine du Big Data. Pour aller plus loin dans le Big Data, nous vous proposons cette formation sur Scala.

Categories: Data Science

Juvénal JVC

Juvénal est spécialisé depuis 2011 dans la valorisation à large échelle des données. Son but est d'aider les professionnels de la data à développer les compétences indispensables pour réussir dans le Big Data. Il travaille actuellement comme Lead Data Engineer auprès des grands comptes. Lorsqu'il n'est pas en voyage, Juvénal rédige des livres ou est en train de préparer la sortie d'un de  ses livres. Vous pouvez télécharger un extrait de son dernier livre en date ici : https://www.data-transitionnumerique.com/extrait-ecosystme-hadoop/

>