Imaginez que vous ayez un problème lié aux données que vous voulez résoudre. Vous avez entendu parler de toutes les choses étonnantes que les algorithmes de machine learning peuvent réaliser et vous voulez essayer par vous-même. Cependant, vous n’avez aucune expérience ou connaissance préalable dans ce domaine. Vous commencez à chercher sur Google des termes tels que « modèles de machine learning » et « méthodologies machine learning ». Mais, au bout d’un certain temps, vous vous sentez prêt à abandonner, complètement perdu entre les différents algorithmes. Nous avions déjà parlé de machines learning à travers notre article sur les deepfakes.

Heureusement pour vous, je vais vous guider à travers trois grandes catégories d’algorithmes d’apprentissage automatique. Ces trois grandes catégories vous permettront de résoudre en toute confiance un large éventail de problèmes de science des données.

Dans le post suivant, nous allons parler des arbres de décision, des algorithmes de clustering et de la régression, souligner leurs différences, et comprendre comment choisir le modèle le plus adapté à votre cas.

Apprentissage supervisé ou non supervisé

La pierre angulaire de votre compréhension est la catégorisation des problèmes en deux grandes classes : l’apprentissage supervisé et l’apprentissage non supervisé. Tout problème de machine learning peut être attribué à l’une d’entre elles.

Dans le cas de l’apprentissage supervisé, nous avons un ensemble de données qui sera donné à un algorithme en entrée. Nous savons déjà à quoi doit ressembler le format de la sortie correcte. On fait l’hypothèse qu’il existe une relation entre l’entrée et la sortie. Comme nous le verrons plus tard, les problèmes de régression et de classification appartiennent à cette catégorie.

D’autre part, l’apprentissage non supervisé est appliqué dans les cas où nous n’avons aucune idée de ce à quoi doit ressembler la sortie. En fait, nous dérivons des structures à partir de données où l’effet des variables d’entrée n’est pas connu. Les problèmes de regroupement (clustering) sont les principaux représentants de cette classe.

Pour rendre la catégorisation ci-dessus plus claire, je vais vous donner quelques problèmes du monde réel et essayer de les classer en conséquence :

Exemple 1

Imaginez que vous dirigez une agence immobilière. Étant données les caractéristiques d’une nouvelle maison, vous voulez prédire à quel prix elle va être vendue en vous basant sur les ventes précédentes d’autres maisons que vous avez enregistrées. Votre ensemble de données d’entrée se compose des caractéristiques de plusieurs maisons, comme le nombre de salles de bain et la taille du terrain, tandis que la variable que vous voulez prédire, souvent appelée variable cible, est le prix. Comme vous connaissez les prix auxquels les maisons de l’ensemble de données ont été vendues, il s’agit d’un problème d’apprentissage supervisé, et plus précisément d’un problème de régression.

Exemple 2

Considérons les résultats d’une expérience médicale visant à prédire si une personne va développer une myopie. Pour cela, vous disposez de certaines mesures physiques et de l’hérédité. Dans ce cas, l’ensemble de données d’entrée est constitué des caractéristiques médicales de la personne et la variable cible est binaire. On va mettre 1 aux personnes qui sont susceptibles de développer une myopie et 0 pour celles qui ne le sont pas. Puisque vous connaissez à l’avance la valeur de la variable cible des participants à l’expérience. C’est-à-dire que vous savez s’ils sont myopes ou non, il s’agit à nouveau d’un problème d’apprentissage supervisé, et plus précisément d’un problème de classification.

Exemple 3

Supposons que vous ayez une entreprise avec de nombreux clients. Sur la base de leurs interactions récentes avec votre entreprise, des produits qu’ils ont achetés récemment et de leurs données démographiques, vous souhaitez former des groupes de clients similaires. Les clients pourront donc être traités différemment, par exemple en offrant des coupons de réduction exclusifs à certains d’entre eux. Dans ce cas, vous utiliserez les caractéristiques mentionnées ci-dessus comme données d’entrée d’un algorithme. Cet algorithme décidera du nombre ou du type de groupes à former. Il s’agit d’un exemple clair de problème d’apprentissage non supervisé. La raison est que nous n’avons pas d’indice a priori sur la façon dont le résultat devrait se présenter.

Ceci étant dit, il est maintenant temps de tenir ma promesse et de passer à des algorithmes plus spécifiques…

La régression

Pour commencer, la régression n’est pas un apprentissage supervisé unique. C’est plutôt une catégorie entière d’algorithmes de machine learning à laquelle appartiennent de nombreuses techniques.

L’idée principale de la régression est que, compte tenu de certaines variables d’entrée, nous prédisons la valeur de la cible. Dans le cas de la régression, la variable cible est continue. Cela signifie qu’elle peut prendre n’importe quelle valeur dans une plage spécifiée. Les variables d’entrée, quant à elles, peuvent être discrètes ou continues.

Parmi les techniques de régression, les plus populaires sont la régression linéaire et la régression logistique. Examinons-les de plus près.

La régression linéaire

Dans la régression linéaire, qui est un des algorithmes de machine learning, nous essayons d’établir une relation entre les variables d’entrée et la cible. La relation est exprimée par une ligne droite, généralement appelée ligne de régression.

Par exemple, en supposant que nous ayons deux variables d’entrée X1 et X2 et une variable cible Y, cette relation peut être exprimée mathématiquement comme suit :

Y = a*X1 + b*X2 +c

Compte tenu des valeurs de X1 et X2, nous cherchons à ajuster a, b et c. Le but est que le Y prédit soit aussi proche que possible de la valeur réelle.

Alors, un exemple !

Supposons que nous disposions du célèbre ensemble de données Iris. Cet ensemble de données contient des mesures concernant la taille du sépale et du pétale de fleurs d’iris appartenant à différents types, à savoir Setosa, Versicolor et Virginica.

À l’aide du logiciel R, voici un exemple de code de régression linéaire. Ce code va prédire la longueur du sépale à partir de la largeur et de la longueur du pétale.

Mathématiquement, nous allons utiliser les valeurs a et b dans la relation suivante :

Longueur du sépale = a * Largeur du pétale + b Longueur du pétale +c*.

Le code correspondant est :

# Charger les librairies requises
library(ggplot2)
# Charger le jeu de données Iris
data(iris)
# Regarder les 10 premières observations de l'ensemble de données.
head(iris)
# Ajuster la ligne de régression
fitted_model <- lm(Sepal.Length ~ Petal.Width + Petal.Length, data = iris)
# Obtenir des détails sur les paramètres du modèle sélectionné
summary(fitted_model)
# Tracer les données selon la ligne de régression 
 ggplot(iris, aes(x = Petal.Width, y = Petal.Length, color = Species)) +
    geom_point(alpha = 6/10) +
    stat_smooth(method = "lm", fill="blue", colour="grey50", size=0.5, alpha = 0.1)

Les résultats de la régression linéaire sont illustrés dans le graphique suivant. Les points noirs représentent les points de données initiaux tandis que la ligne bleue est la ligne de régression ajustée. Elle est tracée pour les valeurs estimées a = -0,31955, b = 0,54178, et c = 4,19058. Ces valeurs donnent les meilleures prédictions possibles pour la variable cible, c’est-à-dire la longueur du sépale.

À partir de maintenant, nous serons en mesure de faire des prédictions concernant la longueur du sépale pour de nouveaux points en appliquant simplement les valeurs de la longueur et de la largeur du pétale dans la relation linéaire définie.

régression linéaire iris
Exemple de régression linéaire avec R

La régression logistique

L’idée principale est ici exactement la même que pour la régression linéaire. La différence est que la ligne de régression n’est plus droite. Au lieu de cela, la relation mathématique que nous essayons d’établir est de la forme suivante :

Y=g(a\times X1+b\times X2)

…où g() est la fonction logistique mais nous n’allons pas rentrer dans les détails de cette fonction.

En raison des propriétés de la fonction logistique, la fonction Y est continue, comprise entre [0,1]. Elle peut être interprété comme la probabilité qu’un événement se produise. Donc 1 si l’évènement se produit, 0 sinon.

Voici un exemple

Je sais que vous aimez les exemples, alors je vais vous en montrer un de plus ! Cette fois, nous allons expérimenter avec l’ensemble de données mtcars. Cet ensemble de données sur R donne la consommation de carburant et dix aspects de la conception et des performances automobiles pour 32 automobiles fabriquées en 1973-1974.

À l’aide de R, nous allons prédire la probabilité qu’une automobile ait une transmission automatique (am = 0) ou manuelle (am = 1) en fonction de si le moteur est en V ou en S (straight) et de Miles / gallon (unité de consommation). Voici la formule :

am = g(a \times  mpg + b \times vs +c)

Voici le code associé en langage R :

# Charger les librairies requises
library(ggplot2)
# Charger la donnée
data(mtcars)
# Conserver un sous-ensemble des caractéristiques des données qui portent sur les mesures qui nous intéressent.
cars <- subset(mtcars, select=c(mpg, am, vs))
# Ajuster la ligne de régression logistique
fitted_model <- glm(am ~ mpg+vs, data=cars, family=binomial(link="logit"))
# Tracer les résultats
ggplot(cars, aes(x=mpg, y=vs, colour = am)) + geom_point(alpha = 6/10) +
 stat_smooth(method="glm",fill="blue", colour="grey50", size=0.5, alpha = 0.1, method.args=list(family="binomial"))

Les résultats sont présentés dans le graphique suivant. Les points noirs représentent les points initiaux de l’ensemble de données. La ligne bleue est la ligne de régression logistique ajustée pour les valeurs estimées a = 0,5359, b = -2,7957 et c = – 9,9183.

Regréssion logistique exemple
Un exemple de régression logistique fait sur R

Nous pouvons observer que, comme mentionné précédemment, les valeurs de sortie de la régression logistique se situent uniquement dans l’intervalle [0,1] en raison de la forme de la ligne de régression.

Pour toute nouvelle automobile avec des mesures données pour V/S et Miles / gallon, nous pouvons maintenant prédire la probabilité que cette voiture aura une transmission automatique. Pas mal non ?

Arbres de décision

Les arbres de décision sont le deuxième type d’algorithmes de machine learning que nous allons étudier. Ils sont divisés en arbres de régression et de classification, et peuvent donc être utilisés dans les deux grands problèmes d’apprentissage supervisé.

Il est vrai que les arbres de décision sont l’un des algorithmes les plus intuitifs, car ils imitent la façon dont les gens décident dans de nombreux cas. Ce qu’ils font essentiellement, c’est dessiner une « carte » de tous les chemins possibles avec le résultat correspondant dans chaque cas.

Une représentation graphique aidera à mieux comprendre ce dont nous parlons exactement.

Arbre de décision exemple
Forme d’un arbre de décision

Sur la base d’un arbre comme celui-ci, l’algorithme peut décider du chemin à suivre à chaque étape en fonction de la valeur du critère correspondant. La façon dont l’algorithme choisit les critères de division ainsi que les seuils respectifs à chaque niveau dépend de la façon dont la variable candidate est informative pour la variable cible et de la configuration qui minimise l’erreur de la prédiction produite.

Voici encore un autre exemple !

Cette fois, l’ensemble de données examiné est readingSkills. Il comprend des informations sur les étudiants qui ont passé un certain examen ainsi que leur score. Nous allons classer les étudiants en locuteurs natifs (nativeSpeaker = 1) ou en étrangers (nativeSpeaker= 0). Pour cela, nous allons utiliser plusieurs mesures, notamment leur score au test, leur taille de chaussures et leur âge.

Pour cette implémentation dans R, nous devons d’abord installer la librairie party.

# Inclure les libraires nécessaires
library(party)
library(partykit)
# Regarder les dix premières observations de l'ensemble de données.
print(head(readingSkills))
input.dat <- readingSkills[c(1:105),]
# Faire croître l'arbre de décision
output.tree <- ctree(
 nativeSpeaker ~ age + shoeSize + score,
 data = input.dat)
# Tracer les résultats
plot(as.simpleparty(output.tree))

Nous pouvons constater que le premier critère de division utilisé est le score, en raison de sa grande importance dans la prédiction de la variable cible. La taille des chaussures n’a pas été prise en considération par le modèle, car elle ne fournissait aucune information utile concernant la langue.

Résultats de l’arbre de décision

Maintenant, si nous avons un nouvel étudiant et que nous connaissons son âge et son score au test, nous pouvons prédire s’il est un locuteur natif ou non !

Algorithmes de clustering

Jusqu’à présent, nous n’avons que parlé des problèmes d’apprentissage supervisé. Maintenant, nous passons à l’étude des algorithmes de clustering, un sous-ensemble des méthodes d’apprentissage non supervisé.

Donc, juste une petite révision… Avec le clustering, supposons que nous avons des données initiales à notre disposition. Nous voulons alors former des groupes cohérents. Les points de données appartenant à un groupe doivent être similaires et différents des points de données des autres groupes.

L’algorithme que nous allons étudier s’appelle « K-means ». K représente le nombre de groupes produits, et est l’une des méthodes de clustering les plus populaires. Vous vous souvenez de l’ensemble de données Iris que nous avons utilisé dans l’exemple précédent ? Nous allons l’utiliser à nouveau.

Encore un exemple avec Iris

Pour les besoins de notre étude, nous avons tracé tous les points de données de l’ensemble de données en utilisant leurs mesures de pétales, comme indiqué ci-dessous :

Iris dataset
Représentation du jeu de données Iris

En nous basant uniquement sur les mesures des pétales, nous allons regrouper les points de données en trois groupes à l’aide du clustering 3-means.

Comment fonctionne l’algorithme K-means ?

Comment fonctionne le 3-means, ou plus généralement, l’algorithme K-means ? L’ensemble du processus peut être résumé en quelques étapes simples :

  • 1 : initialisation : Pour k=3 clusters, l’algorithme sélectionne au hasard trois points comme centroïdes pour chaque cluster.
  • 2 : affectation des clusters : L’algorithme passe en revue le reste des points de données et affecte chacun d’entre eux au cluster le plus proche.
  • 3 : déplacement du centroïde : Après l’affectation des clusters, le centroïde de chaque cluster est déplacé vers la moyenne de tous les points appartenant au cluster.

Les étapes 2 et 3 sont répétées plusieurs fois jusqu’à ce qu’il n’y ait plus de changement à faire concernant l’affectation des clusters. L’implémentation de l’algorithme K-means dans R est facile et peut être réalisée avec le code suivant :

# Charger les librairies nécessaires
library(ggplot2)
library(datasets)
# Charger les données
data(iris)
# mettre en place un "seed" pour rendre les résultats reproductibles
set.seed(20)
# Implémenter K-means avec 3 clusters
iris_cl <- kmeans(iris[, 3:4], 3, nstart = 20)
iris_cl$cluster <- as.factor(iris_cl$cluster)
# Tracer les points par couleur en fonction des clusters prédits
ggplot(iris, aes(Petal.Length, Petal.Width, color = iris_cl$cluster)) + geom_point()

D’après le résultat, nous pouvons voir que l’algorithme a divisé les données en trois clusters, indiqués par trois couleurs différentes. Nous pouvons également observer que ces clusters ont été formés en fonction de la taille des pétales. Plus précisément, le cluster rouge comprend les fleurs avec de petits pétales. Le cluster vert, pour sa part, les iris avec des pétales relativement grands. Tandis que le cluster bleu a les iris avec des pétales de taille moyenne.

Clustering exemple
Exemple de clustering avec K-means

Ce qu’il est important de noter à ce stade, c’est que dans tout regroupement, l’interprétation des groupes formés nécessite des connaissances spécialisées dans le domaine. Dans notre cas, si vous n’êtes pas botaniste, vous ne réaliserez probablement pas que le K-means a réussi à classer les iris dans leurs différents types, c’est-à-dire Setosa, Versicolor et Virginica, sans avoir la moindre connaissance à leur sujet !

Donc, si nous traçons à nouveau les données, cette fois-ci colorées par leur espèce, nous verrons la similitude des groupes.

clustering exemple 2
Clustering avec les vraies espèces

En résumé

Nous avons parcouru un long chemin depuis le début. Nous avons parlé de divers algorithmes de machine learning. En allant de la régression (linéaire et logistique), en passant par les arbres de décision et en finissant par le clustering K-means. Nous avons également mis en place des implémentations simples, mais puissantes, de chacune de ces méthodes dans le logiciel R.

Alors, quels sont les avantages de chaque algorithme par rapport aux autres ? Lequel devriez-vous choisir pour un problème réel ?

  • Tout d’abord, les méthodes présentées ne sont pas des algorithmes jouets – elles sont largement utilisées dans les systèmes de production du monde entier et, selon la tâche à accomplir, elles peuvent être très puissantes.
  • Deuxièmement, pour répondre à la question ci-dessus, vous devez préciser ce que vous entendez exactement par « avantages », car les avantages relatifs de chaque méthode peuvent être exprimés dans de nombreux contextes, à savoir l’interprétabilité, la robustesse, le temps de calcul, etc.

Découvrez nos autres articles sur le même thème

Source : Article inspiré de cet article en anglais

Laisser un commentaire