Vous devez avoir entendu le dicton « les déchets entrent, les déchets sortent ». Ce dicton s’applique en effet lors de la formation de modèles d’apprentissage automatique. Si nous formons des modèles d’apprentissage automatique à l’aide de données non pertinentes, même les meilleurs algorithmes d’apprentissage automatique ne nous aideront pas beaucoup. À l’inverse, l’utilisation de fonctionnalités significatives et bien conçues peut permettre d’obtenir des performances supérieures, même avec un simple algorithme d’apprentissage automatique. Alors, comment pouvons-nous créer ces fonctionnalités significatives qui maximiseront les performances de notre modèle ? La réponse est l’ingénierie des fonctionnalités. Travailler sur l'ingénierie des fonctionnalités est particulièrement important lorsque vous travaillez avec des algorithmes d'apprentissage automatique traditionnels, tels que la régression, les arbres de décision, les machines vectorielles de support et d'autres qui nécessitent des entrées numériques. Cependant, la création de ces entrées numériques ne concerne pas seulement les compétences en matière de données. C'est un processus qui exige de la créativité et des connaissances dans le domaine et qui fait appel autant à l'art qu'à la science.
D'une manière générale, nous pouvons diviser l'ingénierie des fonctionnalités en deux composants : 1) créer de nouvelles fonctionnalités et 2) traiter ces fonctionnalités pour les faire fonctionner de manière optimale avec l'algorithme machine considéré. Dans cet article, nous aborderons ces deux composants de l'ingénierie des fonctionnalités pour les ensembles de données transversaux, structurés et non NLP.
La collecte de données brutes peut être épuisante et, à la fin de cette tâche, nous serons peut-être trop fatigués pour investir plus de temps et d'énergie dans la création de fonctionnalités supplémentaires. Mais c’est là que nous devons résister à la tentation de nous lancer directement dans la formation de modèles. Je vous promets que cela en vaudra la peine ! À ce stade, nous devrions faire une pause et nous demander : « Si je devais faire les prédictions manuellement en fonction de ma connaissance du domaine, quelles fonctionnalités m'auraient aidé à faire du bon travail ? Poser cette question peut ouvrir des possibilités de création de nouvelles fonctionnalités significatives que notre modèle aurait pu manquer autrement. Une fois que nous avons examiné les fonctionnalités supplémentaires dont nous pourrions bénéficier, nous pouvons exploiter les techniques ci-dessous pour créer de nouvelles fonctionnalités à partir des données brutes.
Comme son nom l'indique, cette technique nous aide à combiner plusieurs points de données pour créer une vue plus globale. Nous appliquons généralement des agrégations sur des données numériques continues à l'aide de fonctions standard telles que le nombre, la somme, la moyenne, le minimum, le maximum, le centile, l'écart type et le coefficient de variation. Chaque fonction peut capturer différents éléments d'information, et la meilleure fonction à utiliser dépend du cas d'utilisation spécifique. Souvent, nous pouvons appliquer l’agrégation sur une période ou une fenêtre d’événement particulière qui est significative dans le contexte de ce problème.
Prenons un exemple où nous souhaitons prédire si une transaction par carte de crédit donnée est frauduleuse. Pour ce cas d'utilisation, nous pouvons sans aucun doute utiliser des fonctionnalités spécifiques aux transactions, mais parallèlement à ces fonctionnalités, nous pouvons également bénéficier de la création de fonctionnalités agrégées au niveau du client telles que :
Nombre de fois où le client a été victime d'une fraude au cours des cinq dernières années : un client qui a déjà été victime d'une fraude à plusieurs reprises peut être plus susceptible d'être à nouveau victime d'une fraude. Par conséquent, l’utilisation de cette vue agrégée au niveau du client peut fournir des signaux de prédiction appropriés.
Montant médian des cinq dernières transactions : souvent, lorsqu'une carte de crédit est compromise, les fraudeurs peuvent tenter plusieurs transactions de faible valeur pour tester la carte. Aujourd’hui, une seule transaction de faible valeur est très courante et n’est peut-être pas un signe de fraude, mais si nous constatons plusieurs transactions de ce type à la suite, cela peut indiquer une carte de crédit compromise.
Dans de nombreux types de problèmes, la modification d’un modèle défini constitue un signal précieux pour la prédiction ou la détection d’anomalies. Les différences et les ratios sont des techniques efficaces pour représenter les changements dans les caractéristiques numériques. Tout comme l'agrégation, nous pouvons également appliquer ces techniques sur une fenêtre temporelle significative dans le contexte de ce problème.
Exemples:
Différence entre le pourcentage de nouvelles transactions marchandes au cours de la dernière heure et le pourcentage de nouvelles transactions marchandes au cours des 30 derniers jours : un pourcentage élevé de nouvelles transactions marchandes en succession rapide peut indiquer un risque de fraude en soi, mais lorsque nous voyons que ce comportement a changé par rapport au comportement historique du client, cela devient un signal encore plus apparent.
Rapport entre le nombre de transactions du jour actuel et le nombre médian de transactions quotidiennes des 30 derniers jours : lorsqu'une carte de crédit est compromise, elle aura probablement de nombreuses transactions dans un court laps de temps, ce qui peut ne pas être conforme à l'utilisation passée de la carte de crédit. Un rapport considérablement élevé entre le nombre de transactions du jour en cours et le nombre de transactions quotidiennes médianes des 30 derniers jours peut indiquer des modèles d'utilisation frauduleux.
Nous pouvons utiliser la technique de calcul de l'âge pour convertir les fonctionnalités de date ou d'horodatage en fonctionnalités numériques en prenant la différence entre deux horodatages ou dates. Nous pouvons également utiliser cette technique pour convertir certaines caractéristiques non numériques en caractéristiques numériques significatives si la durée d'occupation associée aux valeurs des caractéristiques peut constituer un signal précieux pour la prédiction.
Exemples:
Les fonctionnalités indicatrices ou booléennes ont des valeurs binaires {1, 0} ou {Vrai, Faux}. Les fonctionnalités des indicateurs sont très courantes et sont utilisées pour représenter différents types d’informations binaires. Dans certains cas, nous pouvons déjà avoir de telles caractéristiques binaires sous forme numérique, tandis que dans d’autres cas, elles peuvent avoir des valeurs non numériques. Pour utiliser les fonctionnalités binaires non numériques pour la formation du modèle, tout ce que nous avons à faire est de les mapper à des valeurs numériques.
Au-delà de ces occurrences et utilisations courantes des caractéristiques des indicateurs, nous pouvons exploiter le codage des indicateurs comme outil pour représenter une comparaison entre des points de données non numériques. Cet attribut le rend particulièrement puissant car il nous permet de mesurer les changements dans les caractéristiques non numériques.
Exemples:
Échec de la vérification lors d'un événement de connexion récent : un événement de connexion échoué récent peut être associé à un risque plus élevé de transactions frauduleuses. Dans ce cas, les données brutes peuvent avoir des valeurs Oui ou Non pour cette fonctionnalité ; tout ce que nous avons à faire ici est de mapper ces valeurs sur 1 ou 0.
Changement de pays depuis la dernière transaction : un changement de pays peut indiquer une carte de crédit compromise. Ici, la création d'une fonctionnalité d'indicateur représentant un changement dans la fonctionnalité non numérique « emplacement du pays » capturera ces informations de changement de pays.
Cette technique peut être appliquée si nos données de caractéristiques sont sous forme catégorielle, numérique ou non numérique. La forme numérique-catégorienelle fait référence à des données numériques contenant des données non continues ou non mesurées, telles que des codes de région géographique, des identifiants de magasin et d'autres types de données similaires. Une technique de codage à chaud peut convertir ces fonctionnalités en un ensemble de fonctionnalités d'indicateurs que nous pouvons utiliser dans la formation de modèles d'apprentissage automatique. L'application d'un codage à chaud sur une fonctionnalité catégorielle créera une nouvelle fonctionnalité binaire pour chaque catégorie de cette variable catégorielle. Étant donné que le nombre de nouvelles fonctionnalités augmente à mesure que le nombre de catégories augmente, cette technique convient aux fonctionnalités avec un faible nombre de catégories, surtout si nous disposons d'un ensemble de données plus petit. L'une des règles empiriques standard suggère d'appliquer cette technique si nous avons au moins dix enregistrements par catégorie.
Exemples:
Cette technique est appliquée au même type de fonctionnalités auxquelles nous appliquerions le codage one-hot, mais présente certains avantages et inconvénients par rapport au codage one-hot. Lorsque le nombre de catégories est élevé (cardinalité élevée), l’utilisation d’un codage à chaud augmentera de manière indésirable le nombre de fonctionnalités, ce qui peut conduire à un surajustement du modèle. L’encodage cible peut être une technique efficace dans de tels cas, à condition que l’on travaille sur un problème d’apprentissage supervisé. Il s'agit d'une technique qui mappe la valeur de chaque catégorie à la valeur attendue de la cible pour cette catégorie. Si vous travaillez avec un problème de régression avec une cible continue, ce calcul mappe la catégorie à la valeur cible moyenne pour cette catégorie. Dans le cas d'un problème de classification avec une cible binaire, le codage de la cible mappera la catégorie à la probabilité d'événement positif de cette catégorie. Contrairement au one-hot encoding, cette technique présente l’avantage de ne pas augmenter le nombre de fonctionnalités. L’inconvénient de cette technique est qu’elle ne peut être appliquée qu’à des problèmes d’apprentissage supervisé. L'application de cette technique peut également rendre le modèle vulnérable au surajustement, en particulier si le nombre d'observations dans certaines catégories est faible.
Exemples:
Une fois que nous avons créé les nouvelles fonctionnalités à partir des données brutes, l'étape suivante consiste à les traiter pour optimiser les performances du modèle. Nous y parvenons grâce au traitement des fonctionnalités comme indiqué dans la section suivante.
Le traitement des fonctionnalités fait référence à une série d'étapes de traitement des données qui garantissent que les modèles d'apprentissage automatique s'adaptent aux données comme prévu. Bien que certaines de ces étapes de traitement soient nécessaires lors de l'utilisation de certains algorithmes d'apprentissage automatique, d'autres garantissent que nous atteignons une bonne chimie de travail entre les fonctionnalités et l'algorithme d'apprentissage automatique considéré. Dans cette section, discutons de certaines étapes courantes de traitement des fonctionnalités et des raisons pour lesquelles nous en avons besoin.
Plusieurs algorithmes d’apprentissage automatique, notamment paramétriques tels que les modèles de régression, sont gravement impactés par les valeurs aberrantes. Ces algorithmes d'apprentissage automatique tentent de prendre en compte les valeurs aberrantes, affectant gravement les paramètres du modèle et compromettant les performances globales. Pour traiter les valeurs aberrantes, il faut d’abord les identifier. Nous pouvons détecter les valeurs aberrantes pour une caractéristique spécifique en appliquant certaines règles empiriques, comme avoir une valeur absolue supérieure à la moyenne plus trois écarts types ou une valeur en dehors de la valeur de moustache la plus proche (valeur du quartile le plus proche plus 1,5 fois la valeur de l'intervalle interquartile). Une fois que nous avons identifié les valeurs aberrantes dans une caractéristique spécifique, nous pouvons utiliser certaines des techniques ci-dessous pour traiter les valeurs aberrantes :
Notez qu'il existe des techniques pour détecter les observations qui sont des valeurs aberrantes multivariées (valeurs aberrantes par rapport à plusieurs caractéristiques), mais elles sont plus complexes et n'ajoutent généralement pas beaucoup de valeur en termes de formation de modèles d'apprentissage automatique. Notez également que les valeurs aberrantes ne sont pas un problème lorsque vous travaillez avec la plupart des modèles d'apprentissage automatique non paramétriques tels que les machines vectorielles de support et les algorithmes basés sur des arbres tels que les arbres de décision, les forêts aléatoires et XGBoost.
Les données manquantes sont très courantes dans les ensembles de données du monde réel. La plupart des algorithmes d'apprentissage automatique traditionnels, à l'exception de quelques-uns comme XGBoost, n'autorisent pas les valeurs manquantes dans les ensembles de données d'entraînement. Ainsi, la correction des valeurs manquantes est l’une des tâches de routine de la modélisation de l’apprentissage automatique. Il existe plusieurs techniques pour traiter les valeurs manquantes ; cependant, avant de mettre en œuvre une quelconque technique, il est important de comprendre la cause des données manquantes ou, à tout le moins, de savoir si les données manquent de manière aléatoire. Si les données ne manquent pas au hasard, ce qui signifie que certains sous-groupes sont plus susceptibles de manquer de données, il peut être difficile d'imputer des valeurs à ces sous-groupes, surtout s'il y a peu ou pas de données disponibles. Si les données manquent au hasard, nous pouvons utiliser certaines des techniques de traitement courantes décrites ci-dessous. Ils ont tous des avantages et des inconvénients, et c'est à nous de décider quelle méthode convient le mieux à notre cas d'utilisation.
Souvent, les fonctionnalités que nous utilisons dans les modèles d’apprentissage automatique ont des plages différentes. Si nous les utilisons sans mise à l'échelle, les caractéristiques avec de grandes valeurs absolues domineront le résultat de la prédiction. Au lieu de cela, pour donner à chaque fonctionnalité une opportunité équitable de contribuer au résultat de la prédiction, nous devons mettre toutes les fonctionnalités sur la même échelle. Les deux techniques de mise à l'échelle les plus courantes sont :
Notez que les algorithmes basés sur des arbres tels que les arbres de décision, la forêt aléatoire, XGBoost et autres peuvent fonctionner avec des données non mises à l'échelle et n'ont pas besoin d'être mis à l'échelle lors de l'utilisation de ces algorithmes.
Aujourd’hui, nous disposons d’énormes données et nous pouvons créer une vaste collection de fonctionnalités pour entraîner nos modèles. Pour la plupart des algorithmes, disposer de plus de fonctionnalités est une bonne chose car cela offre plus d’options pour améliorer les performances du modèle. Cependant, cela n’est pas vrai pour tous les algorithmes. Les algorithmes basés sur des mesures de distance souffrent du fléau de la dimensionnalité : à mesure que le nombre de caractéristiques augmente considérablement, la valeur de distance entre les deux observations perd tout son sens. Ainsi, pour utiliser des algorithmes basés sur des mesures de distance, nous devons nous assurer que nous n’utilisons pas un grand nombre de fonctionnalités. Si notre ensemble de données comporte un grand nombre de fonctionnalités et si nous ne savons pas lesquelles conserver et lesquelles supprimer, nous pouvons utiliser des techniques telles que l'analyse en composantes principales (ACP). PCA transforme l'ensemble des anciennes fonctionnalités en un ensemble de nouvelles fonctionnalités. Il crée de nouvelles fonctionnalités telles que celle avec les valeurs propres les plus élevées capture la plupart des informations des anciennes fonctionnalités. Nous pouvons alors conserver uniquement les quelques nouvelles fonctionnalités les plus importantes et supprimer les autres.
D'autres techniques statistiques, telles que l'analyse d'association et les algorithmes de sélection de fonctionnalités, peuvent être utilisées dans les problèmes d'apprentissage supervisé pour réduire le nombre de fonctionnalités. Cependant, ils ne capturent généralement pas le même niveau d’informations que la PCA avec le même nombre de fonctionnalités.
Cette étape est une exception car elle s'applique uniquement à la cible et non aux fonctionnalités. De plus, la plupart des algorithmes d'apprentissage automatique n'ont aucune restriction sur la distribution de la cible, mais certains, comme la régression linéaire, exigent que la cible soit distribuée normalement. La régression linéaire suppose que les valeurs d'erreur sont symétriques et concentrées autour de zéro pour tous les points de données (tout comme la forme de la distribution normale), et une variable cible normalement distribuée garantit que cette hypothèse est respectée. Nous pouvons comprendre la distribution de notre cible en traçant un histogramme. Les tests statistiques comme le test de Shapiro-Wilk nous renseignent sur la normalité en testant cette hypothèse. Dans le cas où notre cible n'est pas normalement distribuée, nous pouvons essayer diverses transformations telles que la transformation logarithmique, la transformation carrée, la transformation racine carrée et d'autres pour vérifier quelles transformations rendent la distribution cible normale. Il existe également une transformation Box-Cox qui teste plusieurs valeurs de paramètres, et nous pouvons choisir celle qui transforme le mieux la distribution de notre cible en normale.
Remarque : Bien que nous puissions implémenter les étapes de traitement des fonctionnalités dans n'importe quel ordre, nous devons soigneusement considérer la séquence de leur application. Par exemple, un traitement des valeurs manquantes utilisant une substitution de moyenne de valeurs peut être mis en œuvre avant ou après la détection de valeurs aberrantes. Cependant, la valeur moyenne utilisée pour la substitution peut différer selon que l'on traite les valeurs manquantes avant ou après le traitement des valeurs aberrantes. La séquence de traitement des fonctionnalités décrite dans cet article traite les problèmes dans l'ordre de l'impact qu'ils peuvent avoir sur les étapes de traitement successives. Ainsi, suivre cette séquence devrait généralement être efficace pour résoudre la plupart des problèmes.
Comme mentionné en introduction, l’ingénierie des fonctionnalités est une dimension du machine learning qui permet de contrôler les performances du modèle à un degré exceptionnel. Pour exploiter tout le potentiel de l'ingénierie des fonctionnalités, nous avons appris diverses techniques dans cet article pour créer de nouvelles fonctionnalités et les traiter afin de fonctionner de manière optimale avec les modèles d'apprentissage automatique. Quels que soient les principes et techniques d'ingénierie des fonctionnalités de cet article que vous choisissez d'utiliser, le message important ici est de comprendre que l'apprentissage automatique ne consiste pas seulement à demander à l'algorithme de comprendre les modèles. Il s’agit de permettre à l’algorithme de faire son travail efficacement en fournissant le type de données dont il a besoin.