Maison >développement back-end >Tutoriel Python >mois de Machine Learning et au-delà : Machine Learning A-Z
Avant même de commencer à étudier correctement l'apprentissage automatique l'été dernier, j'ai déjà acheté plusieurs cours d'apprentissage automatique sur Udemy. Le plus basique de ces cours était le Machine Learning A-Z : AI, Python & R, c'est donc devenu mon point de départ. Ce cours a constitué une parfaite introduction au domaine, couvrant un large éventail de techniques classiques d'apprentissage automatique et un peu d'apprentissage profond.
En général, en tant que programmeurs, nous travaillons avec des données structurées. Cependant, le monde est intrinsèquement désordonné. L’apprentissage automatique s’avère être un outil précieux pour traiter des informations non structurées. J'ai été très impressionné par le cours car il introduisait un tout nouveau monde d'approches qui donnaient l'impression d'acquérir un super pouvoir.
Le cours explique le processus d'apprentissage automatique étape par étape. L’étape initiale et cruciale du processus est le prétraitement des données, qui a lieu avant même que des algorithmes puissent être appliqués.
Le tout début du prétraitement est le fractionnement des données. Il est courant de diviser l'ensemble de données en trois parties : formation, validation et test. Un ensemble d'entraînement est utilisé pour l'entraînement d'un modèle, un ensemble de validation aide à évaluer le surapprentissage pendant l'entraînement et un ensemble de test est utilisé pour évaluer les performances du modèle après entraînement.
La gestion des données manquantes est un autre aspect critique. Selon la situation et la quantité de données manquantes, il existe deux options principales :
De plus, il est souvent important d'effectuer une mise à l'échelle des fonctionnalités, car certains algorithmes d'apprentissage automatique sont sensibles à l'échelle des données d'entrée. Par exemple, les algorithmes qui calculent les distances entre les points de données, comme les K-Nearest Neighbours (K-NN), seront biaisés en faveur de variables à plus grande échelle si les données ne sont pas ajustées pour compenser cela. La mise à l'échelle des fonctionnalités permet de garantir que la gamme de variables indépendantes contribue de manière égale à l'analyse. Cela peut être fait grâce à des méthodes telles que la normalisation ou la standardisation. La normalisation redimensionne les caractéristiques sur une plage fixe, généralement de 0 à 1. La normalisation ajuste toutes les caractéristiques pour avoir une moyenne de 0 et un écart type de 1.
Ces étapes de prétraitement sont nécessaires pour créer des modèles d'apprentissage automatique robustes qui fonctionnent bien dans des scénarios du monde réel.
Les modèles de régression sont un type d'outil statistique utilisé pour prédire un résultat continu basé sur une ou plusieurs variables d'entrée. Ils sont fondamentaux pour prévoir et déterminer la force des relations entre les variables. Ces modèles fonctionnent en créant une équation qui correspond le mieux aux données observées. J'ai déjà eu quelques expériences avec les modèles de régression, notamment avec la Régression linéaire grâce aux cours de statistiques que j'ai suivis il y a des années.
LaRégression polynomiale étend la régression linéaire en ajoutant des termes avec des puissances supérieures à un. Cela permet au modèle de s'adapter à un plus large éventail de formes de données, capturant des relations plus complexes entre les variables. Cependant, les polynômes de degré plus élevé peuvent conduire à un surajustement, dans lequel le modèle s'ajuste trop étroitement aux données d'entraînement et fonctionne mal sur des données invisibles. Cela se produit parce que le modèle apprend le bruit des données d'entraînement, le prenant pour des relations réelles.
Ensuite, le cours présente la Support Vector Regression (SVR), un modèle puissant qui peut encapsuler des relations non linéaires avec un risque plus faible de surajustement et peut modéliser des relations exponentielles. L'objectif principal de SVR est de créer une ligne de prédiction qui correspond le plus possible à la plupart des points de données tout en essayant de garder la ligne aussi lisse et plate que possible. En d'autres termes, SVR essaie de trouver un équilibre entre suivre de près les données d'entraînement et éviter les modèles trop complexes qui pourraient ne pas fonctionner correctement sur de nouvelles données invisibles. Pour ce faire, il autorise une petite marge d’erreur, à l’intérieur de laquelle les écarts sont acceptables. Cela fait du SVR un choix robuste pour prédire des valeurs continues, en particulier lorsque les données sont complexes ou présentent une grande variabilité.
Après cela, les arbres de décision et les forêts aléatoires sont introduits. Généralement connues pour la classification, ces techniques sont également applicables dans les contextes de régression. Le cours explique comment ces modèles peuvent prédire un résultat basé sur des règles de décision déduites des caractéristiques des données. Les Arbres de décision et les Forêts aléatoires créent des modèles basés sur une série de décisions binaires à partir des caractéristiques de l'ensemble de données. Cette approche peut conduire à des modèles qui s'adaptent bien aux données d'entraînement mais ne parviennent pas à se généraliser à de nouvelles données car le processus de prise de décision est arbitraire et ne capture pas nécessairement les relations mathématiques sous-jacentes entre les variables.
D'autre part, des méthodes comme SVR et Régression polynomiale visent à identifier les relations mathématiques inhérentes aux données. Par exemple, SVR essaie d'ajuster la meilleure courbe possible dans une certaine marge d'erreur, et la régression polynomiale peut modéliser les relations qui suivent une équation polynomiale. Si la véritable relation entre les variables est mathématique, ces méthodes seront probablement plus efficaces avec moins de risque de surapprentissage. Cette capacité à découvrir et à exploiter des relations mathématiques rend la SVR, la Linéaire et la Régression polynomiale plus robustes pour prédire les résultats où les relations entre les données sous-jacentes sont fortes et claires.
La section sur la régression se termine par des stratégies pour choisir le meilleur modèle. L'expérimentation de différentes approches et l'évaluation de leurs performances sur des données de test sont toujours recommandées, car une expérimentation reste le seul moyen de sélectionner un modèle véritablement optimal.
La classification implique de prédire une réponse catégorielle basée sur des variables d'entrée.
LaRégression logistique, malgré son nom, est une technique de classification de base, idéale pour les problèmes de classification binaire. Il est utilisé pour prédire des résultats qui ont deux états possibles, par exemple oui/non, vrai/faux. Il fonctionne en modélisant la probabilité de la classe par défaut, généralement appelée 1, en fonction des caractéristiques d'entrée. La Régression logistique applique la fonction logistique à la sortie d'une équation linéaire, produisant un score de probabilité compris entre 0 et 1. Ce modèle est robuste, simple et efficace pour les problèmes de classification binaire.
Le prochain modèle du cours est K-Nearest Neighbours (K-NN). Il classe un point de données en fonction de la façon dont ses voisins sont classés, capable de gérer des problèmes multi-classes et des limites de décision plus complexes.
Le cours couvre également les Machines à vecteurs de support (SVM) pour la classification, expliquant l'utilisation de différents noyaux pour gérer la classification linéaire et non linéaire. Support Vector Machine construit un hyperplan dans un espace multidimensionnel pour séparer différentes classes. SVM fonctionne bien dans les espaces de grande dimension. Il est polyvalent grâce à sa capacité à utiliser différentes fonctions du noyau pour rendre l'hyperplan plus adaptable aux données. Par exemple, les noyaux linéaires sont parfaits pour les données linéairement séparables, tandis que les noyaux de fonction de base radiale (RBF) peuvent cartographier des relations non linéaires.
La classification et le clustering sont deux méthodes d'organisation des données mais servent des objectifs différents. La classification est une approche d'apprentissage supervisé où le modèle est formé sur des données étiquetées. Cela signifie que le modèle apprend à partir d'exemples auxquels une catégorie ou une classe est déjà attribuée. Sa tâche est de prédire la catégorie des nouvelles données en fonction de ce qu'elle a appris. Par exemple, un modèle de classification peut déterminer si les e-mails sont du spam ou non, sur la base d'un entraînement avec un ensemble de données d'e-mails étiquetés en conséquence.
Le clustering, quant à lui, est une technique d'apprentissage non supervisé qui consiste à regrouper un ensemble d'objets de telle manière que les objets d'un même groupe soient plus similaires les uns aux autres qu'à ceux des autres groupes. . Il est utilisé lorsque nous n’avons pas d’étiquettes prédéfinies pour les données. Le modèle lui-même découvre les regroupements inhérents aux données. Un exemple de regroupement pourrait consister à segmenter les clients en groupes en fonction de leur comportement d'achat sans connaissance préalable des différents types de clients.
Les deux méthodes sont fondamentales dans l'analyse des données :
K-Means est une technique de clustering populaire qui partitionne les données en K clusters distincts et sans chevauchement en fonction de leurs caractéristiques. Le processus implique l'initialisation aléatoire de K points en tant que centres de cluster et l'attribution de chaque point de données au cluster le plus proche en fonction de la distance euclidienne. Les centres de cluster sont ensuite recalculés comme la moyenne des points attribués, et ce processus se répète jusqu'à ce que les centroïdes se stabilisent et ne bougent plus de manière significative. Cette méthode est particulièrement efficace pour les grands ensembles de données et est largement utilisée en raison de sa simplicité et de son efficacité. K-Means fonctionne mieux avec des données où les clusters sont sphériques et de taille uniforme, ce qui le rend moins efficace avec des formes de cluster complexes.
LeClustering hiérarchique, contrairement au K-Means, ne nécessite pas de préciser à l'avance le nombre de clusters. Il construit une hiérarchie de clusters soit par une méthode de division, soit par une méthode d'agglomération.
Dans l'approche agglomérative, chaque point de données commence comme son propre cluster, et les paires de clusters sont fusionnées à mesure que l'on monte dans la hiérarchie. Le processus se poursuit jusqu'à ce que tous les points soient fusionnés en un seul cluster au sommet de la hiérarchie. Cette méthode est utile pour identifier le niveau de similarité entre les points de données et est représentée visuellement à l'aide d'un dendrogramme, qui peut aider à déterminer le nombre de grappes en coupant le dendrogramme à un niveau approprié.
La méthode de division du clustering hiérarchique, également connue sous le nom de clustering descendant, commence par toutes les observations dans un seul cluster et divise progressivement le cluster en plus petites. Cette approche commence au sommet de la hiérarchie et descend, ce qui la rend conceptuellement simple : chaque division est conçue pour créer les clusters les plus distincts et les plus cohérents possibles à chaque niveau de division.
En pratique, la méthode de division consiste à examiner le cluster à chaque étape et à choisir le meilleur point pour le diviser. Cela implique de mesurer la distance entre les observations au sein du cluster et d'identifier la plus grande distance comme point à diviser. Le processus se poursuit de manière récursive, divisant chaque cluster suivant jusqu'à ce que chaque observation constitue son propre cluster ou jusqu'à ce qu'un nombre spécifié de clusters soit atteint. Elle nécessite généralement plus de calculs que l'approche agglomérative, car elle nécessite une vue globale des données à chaque division, ce qui la rend moins couramment utilisée dans de très grands ensembles de données.
LeLe regroupement hiérarchique est particulièrement utile pour les ensembles de données plus petits ou lorsque les relations entre les points de données doivent être examinées de près, comme en sciences biologiques ou lors du regroupement de données historiques.
L'apprentissage profond est un sous-ensemble de l'apprentissage automatique qui utilise des réseaux de neurones comportant de nombreuses couches. C’est très différent des techniques classiques d’apprentissage automatique. Alors que l’apprentissage automatique classique se concentre sur des fonctionnalités qui sont souvent sélectionnées et conçues manuellement, l’apprentissage profond vise à entraîner les réseaux neuronaux à apprendre des fonctionnalités. Les modèles automatisent l'extraction de fonctionnalités en créant des modèles complexes à partir de modèles plus simples. Cela rend l’apprentissage profond exceptionnellement puissant pour des tâches telles que la reconnaissance d’images et de parole, où les données d’entrée sont hautement dimensionnelles et les relations au sein des données sont complexes. Cependant, la formation de modèles d’apprentissage profond nécessite de grandes quantités d’informations.
Un élément fondamental de l'apprentissage profond est le réseau neuronal densément connecté vers l'avant, ou Réseau de neurones artificiels (ANN). Dans ces réseaux, les neurones sont disposés en couches, la première couche recevant les données d’entrée et la dernière produisant la sortie. Chaque neurone d'une couche se connecte à chaque neurone de la couche suivante, ce qui rend le réseau « densément connecté ». Ces neurones ont des poids et des biais qui s'ajustent à mesure que le réseau apprend des données au cours du processus de formation. La sortie de chaque neurone est calculée par une fonction d'activation non linéaire, qui introduit la possibilité de capturer des relations non linéaires dans les données.
Les couches de neurones, dans les ANN, peuvent être représentées par des vecteurs constitués des poids et des biais. Les données sont propagées à travers ces couches en utilisant la multiplication matricielle. Une sortie de chaque couche est calculée en multipliant les données d'entrée par la matrice de pondération, puis en ajoutant un terme de biais. Cette sortie passe ensuite par une fonction d'activation avant d'être envoyée à la couche suivante.
La fonction d'activation est cruciale car elle introduit la non-linéarité dans le modèle, permettant au réseau d'apprendre et de modéliser des relations complexes et non linéaires dans les données. Sans fonctions d'activation non linéaires, le réseau, quelle que soit sa profondeur, se comporterait toujours comme un perceptron monocouche, qui ne peut apprendre que les limites linéaires.
Une alternative aux ANN de base est le réseau neuronal convolutif (CNN). Contrairement aux réseaux densément connectés où chaque entrée est connectée à chaque neurone, les CNN fonctionnent sur des volumes de pixels et utilisent des filtres pour créer des cartes de caractéristiques qui résument la présence des caractéristiques détectées dans l'entrée, telles que les bords des images. Cela rend les CNN très efficaces pour les tâches impliquant des hiérarchies spatiales, car ils réduisent le nombre de paramètres nécessaires, réduisant ainsi la charge de calcul.
LesRéseaux de neurones convolutifs sont des types spécialisés de réseaux de neurones destinés au traitement de données ayant une topologie de type grille, telles que des images. Les CNN utilisent des filtres qui effectuent des opérations de convolution lorsque le filtre glisse sur l'entrée pour créer une carte de caractéristiques qui résume la présence des caractéristiques détectées dans l'entrée. Cela les rend exceptionnellement efficaces pour les tâches liées à l’image.
LesCNN exploitent l'opération mathématique de convolution, une technique fondamentale dans le traitement du signal numérique. Dans le contexte du DSP, la convolution est utilisée pour modifier un signal par un filtre, en extrayant des caractéristiques importantes. De même, dans les CNN, la convolution consiste à appliquer un filtre sur une image pour produire une carte de caractéristiques. Ce processus permet effectivement au réseau de détecter des similitudes ou des caractéristiques spécifiques dans l'image qui correspondent au filtre. Par exemple, un filtre peut être appris à détecter des bords ou des formes spécifiques.
Au fur et à mesure que l'image d'entrée est traitée à travers des couches convolutives successives, le CNN utilise plusieurs filtres à chaque couche pour rechercher des modèles de plus en plus complexes. Le premier calque peut détecter des bords ou des textures simples, tandis que les calques plus profonds peuvent reconnaître des caractéristiques plus complexes comme des parties d'objets ou des objets entiers.
Descente de gradient est un algorithme d'optimisation fondamental utilisé dans la formation des réseaux de neurones et d'autres modèles d'apprentissage automatique. Il fonctionne en ajustant de manière itérative les paramètres du modèle pour minimiser la fonction de perte, qui mesure dans quelle mesure les prédictions du modèle correspondent aux données réelles. À chaque étape, l'algorithme calcule le gradient de la fonction de perte par rapport aux paramètres du modèle et déplace les paramètres dans la direction qui réduit la perte.
LaLa rétropropagation est la technique utilisée pour calculer efficacement ces gradients dans les réseaux de neurones. Cela comporte deux phases :
Ce processus exploite la règle de chaîne du calcul pour estimer les gradients, garantissant que chaque poids est ajusté proportionnellement à sa contribution à l'erreur globale. Ensemble, la Gradient Descent et la Backpropagation permettent aux réseaux de neurones d'apprendre à partir des données en améliorant leur précision de manière itérative.
Les fonctions de perte jouent un rôle essentiel dans l'orientation du processus de formation. Elle est également connue sous le nom de fonction de coût ou fonction d’erreur. Il quantifie la différence entre les sorties prévues du réseau et les valeurs cibles réelles. Cette métrique fournit une mesure concrète des performances du réseau. Le but de la formation est de minimiser cette perte, optimisant ainsi les paramètres du modèle.
Les fonctions de perte couramment utilisées dans les ANN varient en fonction du type spécifique de tâche :
Un défi important lors de la construction de réseaux de neurones profonds est le problème du gradient de disparition. Les gradients utilisés dans le processus de formation peuvent devenir trop faibles, empêchant les poids de modifier leurs valeurs, ce qui empêche le réseau de mettre à jour suffisamment les paramètres.
Ce problème est particulièrement important avec les fonctions d'activation sigmoïde ou tanh. Pour atténuer cela, le deep learning a adopté la fonction d'activation de la unité linéaire rectifiée (ReLu). ReLu est défini comme ReLU(x)=max(0,x), où x représente l'entrée d'un neurone. Cette fonction permet de maintenir un gradient plus fort pendant l'entraînement, permettant ainsi aux réseaux plus profonds d'apprendre efficacement sans que les gradients ne disparaissent. Cette simplicité et cette efficacité dans la promotion de la non-linéarité sans affecter l'échelle du gradient font de ReLu un choix populaire dans les architectures d'apprentissage en profondeur.
Le cours a progressé vers une variété de techniques d'apprentissage automatique plus spécialisées, chacune adaptée à des applications et des domaines spécifiques.
Traitement du langage naturel (NLP) implique l'application de techniques informatiques à l'analyse et à la synthèse du langage naturel et de la parole. L'un des principaux défis liés à l'utilisation de l'apprentissage automatique pour la NLP est que les données textuelles sont intrinsèquement non structurées et de grande dimension. Le texte doit être converti dans un format numérique que les algorithmes d'apprentissage automatique peuvent traiter, une tâche compliquée par les nuances du langage telles que la syntaxe, la sémantique et le contexte.
The Bag of Words (BoW) résout ce problème en transformant le texte en vecteurs de longueur fixe en comptant la fréquence à laquelle chaque mot apparaît dans un document, en ignorant l'ordre et le contexte des mots. Cette méthode simplifie les données textuelles, les rendant gérables pour les modèles d'apprentissage automatique de base et servant de technique fondamentale pour les tâches de classification de texte, telles que la détection du spam ou l'analyse des sentiments. Cependant, la simplicité du modèle BoW, son mépris de l'ordre des mots et du contexte sémantique limitent son efficacité pour des tâches linguistiques plus complexes.
L'apprentissage par renforcement (RL) est un type d'apprentissage automatique dans lequel un agent apprend à prendre des décisions en interagissant avec un environnement. Il diffère de l'apprentissage supervisé, puisque les paires entrée/sortie correctes ne sont jamais présentées, ni les actions sous-optimales explicitement corrigées. Cette stratégie évolue en équilibrant l'exploration, l'essai de nouvelles choses et l'exploitation, en utilisant des informations connues, dans les processus de prise de décision.
L'agent prend des mesures basées sur une politique, reçoit des commentaires sous forme de récompenses ou de punitions, et met à jour sa politique pour maximiser les récompenses à long terme. Deux stratégies notables dans RL qui aident à gérer le dilemme exploration-exploitation sont la Upper Confidence Bound (UCB) et le Thompson Sampling.
UCB est un algorithme qui donne la priorité à l'exploration en sélectionnant les actions qui offrent des récompenses élevées ou qui n'ont pas été souvent essayées. L’idée est d’équilibrer les récompenses connues avec la possibilité de trouver des récompenses plus élevées dans des actions moins éprouvées. UCB fait cela en construisant des limites de confiance autour des estimations des récompenses d'action et en choisissant l'action avec la limite de confiance supérieure la plus élevée. Cette approche réduit systématiquement l'incertitude et améliore la prise de décision au fil du temps.
Thompson Sampling adopte une approche bayésienne du problème d'exploration-exploitation. Cela implique un échantillonnage à partir des distributions a posteriori des récompenses pour chaque action et la sélection de l'action avec l'échantillon le plus élevé. Cette méthode permet une exploration plus probabiliste basée sur la performance connue des actions, en équilibrant dynamiquement entre l'exploration de nouvelles actions et l'exploitation des actions connues en fonction de leurs distributions de probabilité de récompense.
UCB et Thompson Sampling sont des techniques puissantes dans les situations où l'environnement d'apprentissage est initialement inconnu de l'agent, permettant une exploration systématique et un apprentissage optimisé basé sur les commentaires reçus du environnement. Ces méthodes sont particulièrement utiles dans des scénarios de prise de décision en temps réel comme les tests A/B ou le routage réseau.
PCA est une technique statistique utilisée pour réduire la dimensionnalité tout en préservant autant de variance que possible. Il fonctionne en identifiant ce que l'on appelle les composantes principales - les directions dans lesquelles la variance des données est maximisée. Il réduit la dimension des données en transformant les variables d'origine en un nouvel ensemble de variables orthogonales. L'orthogonalité permet à cette nouvelle variable d'être aussi non corrélée que possible et de prendre en compte la variance maximale des données. Ceci est particulièrement utile pour réduire le nombre de variables dans les données tout en conservant les relations qui contribuent le plus à leur variance. En transformant les données en un nouvel ensemble de dimensions avec une complexité réduite, PCA aide à visualiser des données de grande dimension, à accélérer l'apprentissage des algorithmes et à supprimer le bruit.
LDA, d'autre part, est également une technique de réduction de dimensionnalité mais se concentre davantage sur la maximisation de la séparabilité entre les catégories connues. Il tente de modéliser la différence entre les classes de données. LDA y parvient en trouvant une combinaison linéaire de fonctionnalités qui sépare les classes. La combinaison résultante peut être utilisée comme classificateur linéaire ou pour la réduction de dimensionnalité avant une classification ultérieure.
Le PCA et le LDA servent des objectifs légèrement différents :
La dernière partie du cours explore les stratégies avancées de sélection de modèles et présente le boosting. Boosting fonctionne en combinant plusieurs apprenants faibles en un modèle plus fort de manière séquentielle. Chaque apprenant de la séquence se concentre sur les erreurs commises par le précédent, améliorant progressivement la précision du modèle. Les apprenants sont généralement des modèles simples comme des arbres de décision, et chacun contribue progressivement à la décision finale, rendant l'ensemble plus fort que n'importe quel modèle individuel seul.
L'une des implémentations les plus populaires de cette technique est Extreme Gradient Boosting (XGBoost), qui se distingue par son efficience et son efficacité dans un large éventail de tâches de modélisation prédictive.
Le cours « Machine Learning A-Z : AI, Python & R » est un excellent point de départ pour toute personne intéressée par le machine learning. Il couvre de nombreux sujets importants et donne un aperçu général, mais ce n’est que le début.
Terminer ce cours ne fera pas de vous un expert prêt pour un travail spécialisé en apprentissage automatique. Considérez-le plutôt comme une première étape. Il vous aide à comprendre les bases et vous montre quelles parties de l'apprentissage automatique pourraient vous intéresser le plus.
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!