Maison >développement back-end >Tutoriel Python >Ingénierie des fonctionnalités : libérer la puissance des données pour des modèles d'apprentissage automatique supérieurs
L'ingénierie des fonctionnalités est le processus de sélection, de manipulation et de transformation de données brutes en fonctionnalités pouvant être utilisées dans l'apprentissage automatique, principalement dans l'apprentissage supervisé. Il se compose de cinq processus : création de fonctionnalités, transformations, extraction de fonctionnalités, analyse exploratoire des données et analyse comparative. Dans ce contexte, une « caractéristique » est toute entrée mesurable qui peut être utilisée dans un modèle prédictif. Cela peut être le son d'un animal, une couleur ou la voix de quelqu'un.
Cette technique permet aux data scientists d'extraire les informations les plus précieuses des données, ce qui garantit des prédictions plus précises et des informations exploitables.
Types de fonctionnalités
Comme indiqué ci-dessus, une caractéristique est tout point mesurable qui peut être utilisé dans un modèle prédictif. Passons en revue les types d'ingénierie de fonctionnalités pour l'apprentissage automatique-
Caractéristiques numériques : Ces caractéristiques sont des variables continues qui peuvent être mesurées sur une échelle. Par exemple : âge, poids, taille et revenu. Ces fonctionnalités peuvent être utilisées directement en machine learning.
Caractéristiques catégorielles : Ce sont des valeurs discrètes qui peuvent être regroupées en catégories. Ils incluent : le sexe, le code postal et la couleur. Les fonctionnalités catégorielles de l'apprentissage automatique doivent généralement être converties en fonctionnalités numériques avant de pouvoir être utilisées dans des algorithmes d'apprentissage automatique. Vous pouvez facilement le faire en utilisant l'encodage one-hot, label et ordinal.
Caractéristiques des séries chronologiques : Ces caractéristiques sont des mesures prises au fil du temps. Les fonctionnalités de séries chronologiques incluent les cours des actions, les données météorologiques et les relevés de capteurs. Ces fonctionnalités peuvent être utilisées pour former des modèles d'apprentissage automatique capables de prédire les valeurs futures ou d'identifier des modèles dans les données.
Fonctionnalités de texte : Ce sont des chaînes de texte qui peuvent représenter des mots, des expressions ou des phrases. Des exemples de fonctionnalités textuelles incluent les critiques de produits, les publications sur les réseaux sociaux et les dossiers médicaux. Vous pouvez utiliser les fonctionnalités de texte pour entraîner des modèles d'apprentissage automatique capables de comprendre la signification du texte ou de classer le texte dans différentes catégories.
L'un des processus les plus cruciaux du pipeline d'apprentissage automatique est : la sélection des fonctionnalités, qui est le processus de sélection des fonctionnalités les plus pertinentes dans un ensemble de données pour faciliter la formation du modèle. Il améliore les performances prédictives et la robustesse du modèle, le rendant moins susceptible d'être surajusté aux données d'entraînement. Le processus est crucial car il permet de réduire le surajustement, d'améliorer l'interprétabilité du modèle, d'améliorer la précision et de réduire les temps de formation.
Techniques d'ingénierie des fonctionnalités
Imputation
Cette technique traite de la gestion des valeurs/données manquantes. C'est l'un des problèmes que vous rencontrerez lors de la préparation de vos données pour le nettoyage et même la standardisation. Cela est principalement dû à des problèmes de confidentialité, à des erreurs humaines et même à des interruptions du flux de données. On peut le classer en deux catégories :
# impute Graduated and Family_Size features with most_frequent values from sklearn.impute import SimpleImputer impute_mode = SimpleImputer(strategy = 'most_frequent') impute_mode.fit(df[['Graduated', 'age']]) df[['Graduated', 'age']] = impute_mode.transform(df[['Graduated', 'age']])
# Impute Work_Experience feature by its mean in our dataset df['Work_Experience'] = df['Work_Experience'].fillna(df['Work_Experience'].mean())
Encodage
Il s'agit du processus de conversion de données catégorielles en données numériques (continues). Voici quelques-unes des techniques d'encodage des fonctionnalités :
Encodage d'étiquettes : L'encodage d'étiquettes est une méthode d'encodage de variables ou de caractéristiques dans un ensemble de données. Il s'agit de convertir des variables catégorielles en variables numériques.
Encodage à chaud : L'encodage à chaud est le processus par lequel les variables catégorielles sont converties en une forme pouvant être utilisée par les algorithmes ML.
Codage binaire : Le codage binaire est le processus de codage des données à l'aide du code binaire. En codage binaire, chaque caractère est représenté par une combinaison de 0 et de 1.
Mise à l'échelle et normalisation
La mise à l'échelle des caractéristiques est une méthode utilisée pour normaliser la plage de variables indépendantes ou de caractéristiques des données. En traitement des données, cette opération est également appelée normalisation des données et est généralement effectuée lors de l'étape de prétraitement des données. Par exemple, si vous avez plusieurs variables indépendantes comme l’âge, le salaire et la taille ; Avec leur plage de (18 à 100 ans), (25 000 à 75 000 euros) et (1 à 2 mètres) respectivement, la mise à l'échelle des caractéristiques les aiderait tous à être dans la même plage, par exemple centrés autour de 0 ou dans la plage (0,1) selon la technique de mise à l'échelle.
La normalisation est une technique de mise à l'échelle dans laquelle les valeurs sont décalées et redimensionnées afin qu'elles finissent par se situer entre 0 et 1. Elle est également connue sous le nom de mise à l'échelle Min-Max. Ici, Xmax et Xmin sont respectivement les valeurs maximale et minimale de la fonctionnalité.
Binning
Le binning (également appelé bucketing) est une technique d'ingénierie de fonctionnalités qui regroupe différentes sous-plages numériques dans des bacs ou des compartiments. Dans de nombreux cas, le regroupement transforme les données numériques en données catégorielles. Par exemple, considérons une caractéristique nommée X dont la valeur la plus basse est 15 et la valeur la plus élevée est 425. En utilisant le regroupement, vous pouvez représenter X avec les cinq catégories suivantes :
Le bac 1 s'étend sur la plage de 15 à 34, donc chaque valeur de X entre 15 et 34 se retrouve dans le bac 1. Un modèle formé sur ces bacs ne réagira pas différemment aux valeurs X de 17 et 29 puisque les deux valeurs sont dans le bac 1.
Réduction de dimensionnalité
Il s'agit d'une méthode permettant de représenter un ensemble de données donné en utilisant un nombre inférieur de caractéristiques (c'est-à-dire des dimensions) tout en capturant les propriétés significatives des données d'origine.1 Cela revient à supprimer les caractéristiques non pertinentes ou redondantes, ou simplement les données bruyantes, pour créer un modèle. avec un nombre inférieur de variables. Fondamentalement, transformer des données de grande dimension en données de faible dimension. Il existe deux approches principales pour la réduction de dimensionnalité -
Sélection des fonctionnalités : la sélection des fonctionnalités implique la sélection d'un sous-ensemble des fonctionnalités d'origine les plus pertinentes pour le problème en question. L’objectif est de réduire la dimensionnalité de l’ensemble de données tout en conservant les fonctionnalités les plus importantes. Il existe plusieurs méthodes de sélection de fonctionnalités, notamment les méthodes de filtrage, les méthodes wrapper et les méthodes intégrées. Les méthodes de filtrage classent les fonctionnalités en fonction de leur pertinence par rapport à la variable cible, les méthodes wrapper utilisent les performances du modèle comme critère de sélection des fonctionnalités et les méthodes intégrées combinent la sélection des fonctionnalités avec le processus de formation du modèle.
Extraction de fonctionnalités : L'extraction de fonctionnalités implique la création de nouvelles fonctionnalités en combinant ou en transformant les fonctionnalités d'origine. L’objectif est de créer un ensemble de fonctionnalités qui capturent l’essence des données originales dans un espace de dimension inférieure. Il existe plusieurs méthodes d'extraction de caractéristiques, notamment l'analyse en composantes principales (ACP), l'analyse discriminante linéaire (LDA) et l'intégration de voisins stochastiques distribués en t (t-SNE). La PCA est une technique populaire qui projette les caractéristiques originales sur un espace de dimension inférieure tout en préservant autant de variance que possible.
Outils d'ingénierie de fonctionnalités automatisés
Il existe plusieurs outils utilisés pour automatiser l'ingénierie des fonctionnalités, examinons certains d'entre eux.
FeatureTools -Il s'agit d'un framework Python open source populaire pour l'ingénierie automatisée des fonctionnalités. Il fonctionne sur plusieurs tables liées et applique diverses transformations pour la génération de fonctionnalités. L'ensemble du processus est réalisé à l'aide d'une technique appelée « Deep Feature Synthesis » (DFS) qui applique de manière récursive des transformations à travers des ensembles d'entités pour générer des fonctionnalités complexes.
Autofeat - Il s'agit d'une bibliothèque Python qui fournit une ingénierie et une sélection automatisées de fonctionnalités ainsi que des modèles tels que AutoFeatRegressor et AutoFeatClassifier. Ceux-ci sont construits avec de nombreux calculs scientifiques et nécessitent une bonne puissance de calcul. Voici quelques-unes des fonctionnalités de la bibliothèque :
AutoML - L'apprentissage automatique automatique en termes simples peut être défini comme un concept de recherche, avec des algorithmes de recherche spécialisés pour trouver les solutions optimales pour chaque composant du pipeline ML. Il comprend : l'ingénierie automatisée des fonctionnalités, l'optimisation automatisée des hyperparamètres, la recherche d'architecture neuronale (NAS
Problèmes courants et meilleures pratiques en matière d'ingénierie de fonctionnalités
Problèmes courants
Imaginez une entreprise qui souhaite utiliser l'apprentissage automatique pour prédire les ventes mensuelles. Ils saisissent des données telles que le nombre d'employés et la taille du bureau, qui n'ont aucun rapport avec le volume des ventes.
Correctif : évitez cela en effectuant une analyse approfondie des fonctionnalités pour comprendre quelles variables de données sont nécessaires et supprimez celles qui ne le sont pas.
Prenons l'exemple d'une application prévoyant la croissance future du nombre d'utilisateurs qui intègre 100 fonctionnalités dans son modèle, mais la plupart d'entre elles partagent des informations qui se chevauchent.
Correctif : contrez ce problème en utilisant des stratégies telles que la réduction de dimensionnalité et la sélection de fonctionnalités pour minimiser le nombre d'entrées, réduisant ainsi la complexité du modèle.
Imaginez qu'un prestataire de soins de santé utilise l'âge du patient et son niveau de revenu pour prédire le risque d'une certaine maladie, mais ne normalise pas ces caractéristiques, qui ont des échelles différentes.
Correctif : appliquez des techniques de mise à l'échelle des fonctionnalités pour amener toutes les variables à une échelle similaire afin d'éviter ce problème.
Par exemple, un détaillant en ligne prédisant le taux de désabonnement des clients utilise les données de l'historique des achats, mais ne traite pas les cas où les données d'achat sont absentes.
Correctif : mettez en œuvre des stratégies pour gérer les valeurs manquantes, telles que l'imputation de données, dans lesquelles vous remplacez les valeurs manquantes par des estimations statistiques.
Bonnes pratiques
Assurez-vous de gérer les données manquantes dans vos fonctionnalités de saisie : dans un cas réel où un projet vise à prédire les prix des logements, toutes les entrées de données ne peuvent pas contenir d'informations sur l'âge d'une maison. Au lieu de supprimer ces entrées, vous pouvez imputer les données manquantes en utilisant une stratégie telle que « l’imputation moyenne », où la valeur moyenne de l’âge de la maison issue de l’ensemble de données est utilisée. En gérant correctement les données manquantes au lieu de simplement les supprimer, le modèle disposera de plus de données à partir desquelles apprendre, ce qui pourrait conduire à de meilleures performances du modèle.
Utilisez l'encodage ponctuel pour les données catégorielles : par exemple, si nous avons une caractéristique « couleur » dans un ensemble de données sur les voitures, avec les valeurs possibles de « rouge », « bleu » et « vert », nous transformerions cela en trois fonctionnalités binaires distinctes : « is_red », « is_blue » et « is_green ». Cette stratégie permet au modèle d'interpréter correctement les données catégorielles, améliorant ainsi la qualité des résultats et des prédictions du modèle.
Envisagez la mise à l'échelle des fonctionnalités : à titre d'exemple réel, un ensemble de données permettant de prédire une maladie peut avoir un âge en années (1 100) et des mesures de niveau de glucose (70 180). La mise à l'échelle place ces deux caractéristiques sur la même échelle, permettant à chacune de contribuer de manière égale aux calculs de distance, comme dans l'algorithme K-plus proches voisins (KNN). La mise à l'échelle des fonctionnalités peut améliorer les performances de nombreux algorithmes d'apprentissage automatique, les rendant plus efficaces et réduisant le temps de calcul.
Créez des fonctionnalités d'interaction le cas échéant : un exemple pourrait inclure la prévision des interactions entre les prix de l'immobilier, ce qui peut être bénéfique. La création d'une nouvelle fonctionnalité qui multiplie le nombre de salles de bains par la superficie totale en pieds carrés peut donner au modèle de nouvelles informations précieuses. Les fonctionnalités d'interaction peuvent capturer des modèles dans les données que les modèles linéaires ne verraient pas autrement, améliorant ainsi potentiellement les performances du modèle.
Supprimer les fonctionnalités non pertinentes : dans un problème où nous devons prédire le prix d'un smartphone, la couleur du smartphone peut avoir peu d'impact sur la prédiction et peut être supprimée. La suppression des fonctionnalités non pertinentes peut simplifier votre modèle, le rendre plus rapide, plus interprétable et réduire le risque de surajustement.
L'ingénierie des fonctionnalités n'est pas seulement une étape de pré-traitement dans l'apprentissage automatique ; c’est un aspect fondamental qui peut faire ou défaire le succès de vos modèles. Des fonctionnalités bien conçues peuvent conduire à des prédictions plus précises et à une meilleure généralisation. Représentation des données : les fonctionnalités servent de base sur laquelle fonctionnent les algorithmes d'apprentissage automatique. En représentant efficacement les données, l'ingénierie des fonctionnalités permet aux algorithmes de discerner des modèles significatifs. Par conséquent, les data scientists en herbe, voire expérimentés, ainsi que les passionnés et ingénieurs de l'apprentissage automatique doivent reconnaître le rôle central que joue l'ingénierie des fonctionnalités dans l'extraction d'informations significatives à partir des données. En comprenant l'art de l'ingénierie des fonctionnalités et en l'appliquant correctement, on peut libérer le véritable potentiel des algorithmes d'apprentissage automatique et générer des solutions percutantes dans divers domaines.
Si vous avez des questions ou si vous souhaitez améliorer mon article, veuillez les laisser dans la section commentaires. Merci !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!