Apprentissage automatique sans Python, Anaconda et autres reptiles

Non, bien sûr, je ne suis pas sérieux. Il doit y avoir une limite à la mesure dans laquelle il est possible de simplifier un sujet. Mais pour les premières étapes, comprendre les concepts de base et « entrer » rapidement dans le sujet, cela peut être acceptable. Nous verrons à la fin comment nommer correctement ce matériel (options : « Machine learning pour les nuls », « Analyse des données à partir des couches », « Algorithmes pour les plus petits »).

Jusqu'au point. A écrit plusieurs programmes d'application dans MS Excel pour la visualisation et la représentation visuelle des processus qui se produisent dans différentes méthodes d'apprentissage automatique lors de l'analyse des données. Voir, c'est croire, après tout, comme le disent les porteurs de la culture qui a développé la plupart de ces méthodes (pas toutes d'ailleurs. La « machine à vecteurs de support » la plus puissante, ou SVM, machine à vecteurs de support est l'invention de notre compatriote Vladimir Vapnik, de l'Institut de gestion de Moscou (d'ailleurs, né en 1963 ! Aujourd'hui, il enseigne et travaille aux États-Unis).

Trois dossiers à examiner

1. K-means clustering

Les problèmes de ce type font référence à un « apprentissage non supervisé », lorsqu’il faut diviser les données initiales en un certain nombre de catégories connues à l’avance, mais que l’on n’a pas de « bonnes réponses » ; il faut les extraire des données elles-mêmes. . Le problème classique fondamental de la recherche de sous-espèces de fleurs d'iris (Ronald Fisher, 1936 !), qui est considéré comme le premier signe de ce domaine de connaissances, est précisément de cette nature.

La méthode est assez simple. Nous avons un ensemble d'objets représentés sous forme de vecteurs (ensembles de N nombres). Dans les iris, ce sont des ensembles de 4 nombres qui caractérisent la fleur : respectivement la longueur et la largeur des lobes externe et interne du périanthe (Iris de Fischer — Wikipédia). La métrique cartésienne habituelle est choisie comme distance, ou mesure de proximité entre objets.

Ensuite, les centres de cluster sont sélectionnés de manière aléatoire (ou non, voir ci-dessous) et les distances entre chaque objet et les centres de cluster sont calculées. Chaque objet à une étape d'itération donnée est marqué comme appartenant au centre le plus proche. Ensuite, le centre de chaque cluster est transféré à la moyenne arithmétique des coordonnées de ses membres (par analogie avec la physique, on l'appelle aussi le « centre de masse »), et la procédure est répétée.

Le processus converge assez rapidement. En images en deux dimensions, cela ressemble à ceci :

1. Répartition aléatoire initiale des points sur le plan et nombre de clusters

Apprentissage automatique sans Python, Anaconda et autres reptiles

2. Spécifier les centres de cluster et attribuer des points à leurs clusters

Apprentissage automatique sans Python, Anaconda et autres reptiles

3. Transférer les coordonnées des centres du cluster, recalculer l'affiliation des points jusqu'à ce que les centres se stabilisent. La trajectoire du centre du cluster vers sa position finale est visible.

Apprentissage automatique sans Python, Anaconda et autres reptiles

A tout moment, vous pouvez définir de nouveaux centres de cluster (sans générer une nouvelle répartition des points !) et constater que le processus de partitionnement n'est pas toujours univoque. Mathématiquement, cela signifie que pour la fonction à optimiser (la somme des distances au carré des points aux centres de leurs clusters), on trouve non pas un minimum global, mais un minimum local. Ce problème peut être surmonté soit par un choix non aléatoire des centres de cluster initiaux, soit en énumérant les centres possibles (parfois il est avantageux de les placer exactement à l'un des points, alors au moins on a la garantie qu'on ne se retrouvera pas vide groupes). Dans tous les cas, un ensemble fini a toujours un minimum.

Vous pouvez jouer avec ce fichier sur ce lien (n'oubliez pas d'activer la prise en charge des macros. Les fichiers ont été analysés contre les virus)

Description de la méthode sur Wikipédia - méthode k-means

2. Approximation par polynômes et décomposition des données. Reconversion

Scientifique remarquable et vulgarisateur de la science des données K.V. Vorontsov décrit brièvement les méthodes d'apprentissage automatique comme « la science du dessin de courbes à travers des points ». Dans cet exemple, nous trouverons un modèle dans les données en utilisant la méthode des moindres carrés.

La technique de division des données sources en « entraînement » et « contrôle » est présentée, ainsi qu'un phénomène tel que le recyclage ou le « réajustement » aux données. Avec une approximation correcte, nous aurons une certaine erreur sur les données d'entraînement et une erreur légèrement plus importante sur les données de contrôle. S'il est incorrect, cela entraîne un ajustement précis des données d'entraînement et une énorme erreur sur les données de test.

(C'est un fait bien connu qu'à travers N points on peut tracer une seule courbe du N-1ème degré, et cette méthode dans le cas général ne donne pas le résultat souhaité. Polynôme d'interpolation de Lagrange sur Wikipédia)

1. Définir la distribution initiale

Apprentissage automatique sans Python, Anaconda et autres reptiles

2. Nous divisons les points en « entraînement » et « contrôle » dans un rapport de 70 à 30.

Apprentissage automatique sans Python, Anaconda et autres reptiles

3. On trace la courbe d'approximation le long des points d'entraînement, on voit l'erreur qu'elle donne sur les données de contrôle

Apprentissage automatique sans Python, Anaconda et autres reptiles

4. Nous traçons une courbe exacte passant par les points d'entraînement, et nous voyons une erreur monstrueuse sur les données de contrôle (et zéro sur les données d'entraînement, mais à quoi ça sert ?).

Apprentissage automatique sans Python, Anaconda et autres reptiles

Bien entendu, l'option la plus simple est représentée avec une seule division en sous-ensembles « entraînement » et « contrôle » ; dans le cas général, cela est fait plusieurs fois pour le meilleur ajustement des coefficients.

Le fichier est disponible ici, analysé par antivirus. Activer les macros pour un fonctionnement correct

3. Descente de gradient et dynamique de changement d'erreur

Il y aura un cas en 4 dimensions et une régression linéaire. Les coefficients de régression linéaire seront déterminés étape par étape en utilisant la méthode de descente de gradient, initialement tous les coefficients sont nuls. Un graphique séparé montre la dynamique de réduction des erreurs à mesure que les coefficients sont ajustés de plus en plus précisément. Il est possible de visualiser les quatre projections en 2 dimensions.

Si vous définissez le pas de descente du gradient trop grand, vous pouvez voir qu'à chaque fois nous sauterons le minimum et arriverons au résultat en un plus grand nombre de pas, même si à la fin nous y arriverons quand même (à moins que nous ne retardions également le pas de descente beaucoup - alors l'algorithme ira " à la pelle"). Et le graphique de l'erreur en fonction du pas d'itération ne sera pas fluide, mais « saccadé ».

1. Générez des données, définissez l'étape de descente du gradient

Apprentissage automatique sans Python, Anaconda et autres reptiles

2. Avec la sélection correcte du pas de descente de pente, nous atteignons rapidement et en douceur le minimum

Apprentissage automatique sans Python, Anaconda et autres reptiles

3. Si le pas de descente du gradient est mal sélectionné, on dépasse le maximum, le graphique d'erreur est « saccadé », la convergence prend un plus grand nombre de pas

Apprentissage automatique sans Python, Anaconda et autres reptiles
и

Apprentissage automatique sans Python, Anaconda et autres reptiles

4. Si nous sélectionnons complètement incorrectement le pas de descente de gradient, nous nous éloignons du minimum

Apprentissage automatique sans Python, Anaconda et autres reptiles

(Pour reproduire le processus en utilisant les valeurs de pas de descente de gradient affichées dans les images, cochez la case « données de référence »).

Le fichier est sur ce lien, vous devez activer les macros, il n'y a pas de virus.

Selon la communauté respectée, une telle simplification et une telle méthode de présentation du matériel sont-elles acceptables ? Est-ce que cela vaut la peine de traduire l’article en anglais ?

Source: habr.com

Ajouter un commentaire