Explication des algorithmes d'apprentissage automatique

L'apprentissage automatique et l'apprentissage en profondeur ont été largement adoptés et encore plus largement incompris. Dans cet article, j'aimerais prendre du recul et expliquer à la fois l'apprentissage automatique et l'apprentissage profond en termes de base, discuter de certains des algorithmes d'apprentissage automatique les plus courants et expliquer comment ces algorithmes sont liés aux autres pièces du puzzle de la création de modèles prédictifs. à partir de données historiques.

Que sont les algorithmes d'apprentissage automatique?

Rappelez-vous que l'apprentissage automatique est une classe de méthodes permettant de créer automatiquement des modèles à partir de données. Les algorithmes d'apprentissage automatique sont les moteurs de l'apprentissage automatique, ce qui signifie que ce sont les algorithmes qui transforment un ensemble de données en modèle. Le type d'algorithme qui fonctionne le mieux (supervisé, non supervisé, classification, régression, etc.) dépend du type de problème que vous résolvez, des ressources informatiques disponibles et de la nature des données.

Comment fonctionne l'apprentissage automatique

Les algorithmes de programmation ordinaires indiquent à l'ordinateur ce qu'il doit faire d'une manière simple. Par exemple, les algorithmes de tri transforment des données non ordonnées en données classées selon certains critères, souvent l'ordre numérique ou alphabétique d'un ou plusieurs champs dans les données.

Les algorithmes de régression linéaire ajustent une ligne droite , ou une autre fonction linéaire dans ses paramètres comme un polynôme, aux données numériques, généralement en effectuant des inversions de matrice pour minimiser l'erreur quadratique entre la ligne et les données. L'erreur quadratique est utilisée comme métrique car vous ne vous souciez pas de savoir si la ligne de régression est au-dessus ou en dessous des points de données; vous ne vous souciez que de la distance entre la ligne et les points.

Les algorithmes de régression non linéaire, qui adaptent des courbes qui ne sont pas linéaires dans leurs paramètres aux données , sont un peu plus compliqués, car, contrairement aux problèmes de régression linéaire, ils ne peuvent pas être résolus avec une méthode déterministe. Au lieu de cela, les algorithmes de régression non linéaire implémentent une sorte de processus de minimisation itérative, souvent une variation sur la méthode de la descente la plus raide.    

La descente la plus raide calcule essentiellement l'erreur quadratique et son gradient aux valeurs de paramètre actuelles, choisit une taille de pas (aka taux d'apprentissage), suit la direction du gradient «en bas de la colline», puis recalcule l'erreur quadratique et son gradient au valeurs des paramètres. Finalement, avec de la chance, le processus converge. Les variantes sur la descente la plus raide tentent d'améliorer les propriétés de convergence.

Les algorithmes d'apprentissage automatique sont encore moins simples que la régression non linéaire, en partie parce que l'apprentissage automatique supprime la contrainte d'ajustement à une fonction mathématique spécifique, telle qu'un polynôme. Il existe deux grandes catégories de problèmes qui sont souvent résolus par l'apprentissage automatique: la régression et la classification. La régression concerne les données numériques (par exemple, quel est le revenu probable d'une personne ayant une adresse et une profession données?) Et la classification concerne les données non numériques (par exemple, le demandeur manquera-t-il à ce prêt?).

Les problèmes de prédiction (par exemple, quel sera le prix d'ouverture des actions Microsoft demain?) Sont un sous-ensemble de problèmes de régression pour les données de séries chronologiques. Les problèmes de classification sont parfois divisés en problèmes binaires (oui ou non) et multi-catégories (animaux, végétaux ou minéraux).

Apprentissage supervisé vs apprentissage non supervisé

Indépendamment de ces divisions, il existe deux autres types d'algorithmes d'apprentissage automatique: supervisé et non supervisé. Dans l' apprentissage supervisé , vous fournissez un ensemble de données d'entraînement avec des réponses, comme un ensemble d'images d'animaux avec les noms des animaux. Le but de cette formation serait un modèle qui pourrait identifier correctement une image (d'une sorte d'animal qui a été inclus dans l'ensemble de formation) qu'il n'avait pas vu auparavant.

Dans l'apprentissage non supervisé , l'algorithme parcourt les données elles-mêmes et essaie de produire des résultats significatifs. Le résultat peut être, par exemple, un ensemble de clusters de points de données qui pourraient être liés au sein de chaque cluster. Cela fonctionne mieux lorsque les clusters ne se chevauchent pas.

La formation et l'évaluation transforment les algorithmes d'apprentissage supervisé en modèles en optimisant leurs paramètres pour trouver l'ensemble de valeurs qui correspond le mieux à la vérité terrain de vos données. Les algorithmes reposent souvent sur des variantes de descente la plus raide pour leurs optimiseurs, par exemple la descente de gradient stochastique (SGD), qui est essentiellement la descente la plus raide effectuée plusieurs fois à partir de points de départ aléatoires. Les améliorations courantes sur SGD ajoutent des facteurs qui corrigent la direction du gradient en fonction de l'élan ou ajustent le taux d'apprentissage en fonction de la progression d'un passage à travers les données (appelé une époque) à l'autre.

Nettoyage des données pour l'apprentissage automatique

Il n'existe pas de données propres à l'état sauvage. Pour être utiles pour l'apprentissage automatique, les données doivent être filtrées de manière agressive. Par exemple, vous voudrez:

  1. Examinez les données et excluez toutes les colonnes contenant beaucoup de données manquantes.
  2. Examinez à nouveau les données et choisissez les colonnes que vous souhaitez utiliser pour votre prédiction. (C'est quelque chose que vous voudrez peut-être varier lorsque vous itérez.)
  3. Excluez toutes les lignes qui contiennent encore des données manquantes dans les colonnes restantes.
  4. Corrigez les fautes de frappe évidentes et fusionnez les réponses équivalentes. Par exemple, les États-Unis, les États-Unis, les États-Unis et l'Amérique doivent être fusionnés en une seule catégorie.
  5. Excluez les lignes contenant des données hors limites. Par exemple, si vous analysez les trajets en taxi dans la ville de New York, vous souhaiterez filtrer les lignes avec des latitudes et des longitudes de prise ou de débarquement situées en dehors de la zone de délimitation de la zone métropolitaine.

Vous pouvez faire beaucoup plus, mais cela dépendra des données collectées. Cela peut être fastidieux, mais si vous configurez une étape de nettoyage des données dans votre pipeline d'apprentissage automatique, vous pouvez la modifier et la répéter à volonté.

Encodage et normalisation des données pour l'apprentissage automatique

Pour utiliser des données catégorielles pour la classification des machines, vous devez encoder les étiquettes de texte dans un autre formulaire. Il existe deux encodages courants.

L'un est le codage d'étiquette , ce qui signifie que chaque valeur d'étiquette de texte est remplacée par un nombre. L'autre est un codage à chaud , ce qui signifie que chaque valeur d'étiquette de texte est transformée en une colonne avec une valeur binaire (1 ou 0). La plupart des frameworks d'apprentissage automatique ont des fonctions qui effectuent la conversion pour vous. En général, le codage à chaud est préféré, car le codage d'étiquettes peut parfois confondre l'algorithme d'apprentissage automatique en pensant que la colonne codée est ordonnée.

Pour utiliser des données numériques pour la régression de la machine, vous devez généralement normaliser les données. Sinon, les nombres avec des plages plus grandes peuvent avoir tendance à dominer la distance euclidienne entre les vecteurs de caractéristiques , leurs effets peuvent être amplifiés aux dépens des autres champs, et l'optimisation de la descente la plus raide peut avoir des difficultés à converger. Il existe un certain nombre de façons de normaliser et de standardiser les données pour ML, y compris la normalisation min-max, la normalisation moyenne, la normalisation et la mise à l'échelle à la longueur unitaire. Ce processus est souvent appelé mise à l'échelle des fonctionnalités .

Que sont les fonctionnalités d'apprentissage automatique?

Puisque j'ai mentionné les vecteurs de caractéristiques dans la section précédente, je devrais expliquer ce qu'ils sont. Tout d'abord, une caractéristique est une propriété individuelle mesurable ou une caractéristique d'un phénomène observé. Le concept de «caractéristique» est lié à celui de variable explicative, qui est utilisée dans des techniques statistiques telles que la régression linéaire. Les vecteurs d'entités combinent toutes les entités d'une seule ligne en un vecteur numérique.

Une partie de l'art de choisir des fonctionnalités consiste à choisir un ensemble minimum de variables indépendantes qui expliquent le problème. Si deux variables sont fortement corrélées, soit elles doivent être combinées en une seule entité, soit l'une doit être supprimée. Parfois, les gens effectuent une analyse en composantes principales pour convertir des variables corrélées en un ensemble de variables linéairement non corrélées.

Certaines des transformations que les gens utilisent pour construire de nouvelles entités ou réduire la dimensionnalité des vecteurs d'entités sont simples. Par exemple, soustrayez Year of Birthde Year of Deathet vous construisez Age at Death, qui est une variable indépendante principale pour l'analyse de la durée de vie et de la mortalité. Dans d'autres cas, la construction de caractéristiques peut ne pas être si évidente.

Algorithmes d'apprentissage automatique courants

Il existe des dizaines d'algorithmes d'apprentissage automatique, allant de la complexité de la régression linéaire et de la régression logistique aux réseaux et ensembles de neurones profonds (combinaisons d'autres modèles). Cependant, certains des algorithmes les plus courants incluent:

  • Régression linéaire, aka régression des moindres carrés (pour les données numériques)
  • Régression logistique (pour la classification binaire)
  • Analyse discriminante linéaire (pour la classification multi-catégories)
  • Arbres de décision (pour la classification et la régression)
  • Naïve Bayes (pour la classification et la régression)
  • K-Nearest Neighbours, aka KNN (pour la classification et la régression)
  • Quantification vectorielle d'apprentissage, aka LVQ (pour la classification et la régression)
  • Support Vector Machines, aka SVM (pour la classification binaire)
  • Random Forests, un type d'algorithme d'ensemble «ensachage» (pour la classification et la régression)
  • Les méthodes de stimulation, notamment AdaBoost et XGBoost, sont des algorithmes d'ensemble qui créent une série de modèles où chaque nouveau modèle tente de corriger les erreurs du modèle précédent (à la fois pour la classification et la régression)

Où sont les réseaux neuronaux et les réseaux neuronaux profonds dont nous entendons tant parler? Ils ont tendance à être gourmands en calcul au point de nécessiter des GPU ou d'autres matériels spécialisés, vous ne devriez donc les utiliser que pour des problèmes spécialisés, tels que la classification d'images et la reconnaissance vocale, qui ne sont pas bien adaptés aux algorithmes plus simples. Notez que «profond» signifie qu'il existe de nombreuses couches cachées dans le réseau neuronal.

Pour en savoir plus sur les réseaux de neurones et le deep learning, voir "Ce que signifie vraiment le deep learning".

Hyperparamètres pour les algorithmes d'apprentissage automatique

Les algorithmes d'apprentissage automatique s'entraînent sur les données pour trouver le meilleur ensemble de pondérations pour chaque variable indépendante qui affecte la valeur ou la classe prédite. Les algorithmes eux-mêmes ont des variables, appelées hyperparamètres. Ils sont appelés hyperparamètres, par opposition aux paramètres, car ils contrôlent le fonctionnement de l'algorithme plutôt que les poids déterminés.

L'hyperparamètre le plus important est souvent le taux d'apprentissage, qui détermine la taille de pas utilisée lors de la recherche du prochain ensemble de poids à essayer lors de l'optimisation. Si le taux d'apprentissage est trop élevé, la descente du gradient peut rapidement converger vers un plateau ou un point sous-optimal. Si le taux d'apprentissage est trop faible, la descente de gradient peut caler et ne jamais converger complètement.

De nombreux autres hyperparamètres courants dépendent des algorithmes utilisés. La plupart des algorithmes ont des paramètres d'arrêt, tels que le nombre maximal d'époques, ou la durée maximale d'exécution, ou l'amélioration minimale d'une époque à l'autre. Des algorithmes spécifiques ont des hyperparamètres qui contrôlent la forme de leur recherche. Par exemple, un classificateur de forêt aléatoire a des hyperparamètres pour les échantillons minimum par feuille, la profondeur maximum, les échantillons minimum à une division, la fraction de poids minimum pour une feuille, et environ 8 autres.

Réglage des hyperparamètres

Plusieurs plates-formes d'apprentissage automatique de production offrent désormais un réglage automatique des hyperparamètres. Essentiellement, vous indiquez au système quels hyperparamètres vous souhaitez faire varier, et éventuellement quelle métrique vous souhaitez optimiser, et le système balaie ces hyperparamètres sur autant d'exécutions que vous le permettez. (Le réglage des hyperparamètres de Google Cloud extrait la métrique appropriée du modèle TensorFlow, vous n'avez donc pas à la spécifier.)

Il existe trois algorithmes de recherche pour les hyperparamètres de balayage: l'optimisation bayésienne, la recherche de grille et la recherche aléatoire. L'optimisation bayésienne a tendance à être la plus efficace.

On pourrait penser que régler autant d'hyperparamètres que possible vous donnerait la meilleure réponse. Cependant, à moins que vous n'utilisiez votre propre matériel personnel, cela pourrait être très coûteux. Il y a des rendements décroissants, en tout cas. Avec l'expérience, vous découvrirez quels hyperparamètres sont les plus importants pour vos données et le choix des algorithmes.

Apprentissage automatique automatisé

En parlant de choix d'algorithmes, il n'y a qu'une seule façon de savoir quel algorithme ou quel ensemble d'algorithmes vous donnera le meilleur modèle pour vos données, et c'est de les essayer tous. Si vous essayez également toutes les normalisations et choix de fonctionnalités possibles, vous êtes confronté à une explosion combinatoire.

Tout essayer n'est pas pratique à faire manuellement, c'est pourquoi les fournisseurs d'outils d'apprentissage automatique ont bien sûr déployé beaucoup d'efforts pour publier des systèmes AutoML. Les meilleurs combinent l'ingénierie des fonctionnalités avec des balayages sur les algorithmes et les normalisations. Le réglage des hyperparamètres du ou des meilleurs modèles est souvent laissé pour plus tard. Cependant, l'ingénierie des fonctionnalités est un problème difficile à automatiser et tous les systèmes AutoML ne le gèrent pas.

En résumé, les algorithmes d'apprentissage automatique ne sont qu'une pièce du puzzle d'apprentissage automatique. En plus de la sélection d'algorithme (manuelle ou automatique), vous devrez gérer les optimiseurs, le nettoyage des données, la sélection des fonctionnalités, la normalisation des fonctionnalités et (éventuellement) le réglage des hyperparamètres.

Une fois que vous avez géré tout cela et créé un modèle qui fonctionne pour vos données, il sera temps de déployer le modèle, puis de le mettre à jour à mesure que les conditions changent. La gestion des modèles d'apprentissage automatique en production est cependant une toute autre boîte de vers.