in

t-SNE à partir de zéro (avec NumPy) – Acquérir une compréhension approfondie de… | par Jacob Pieniazek | Avril 2023


COMPRENDRE L’ALGORITHME t-SNE : DE LA THÉORIE À L’IMPLÉMENTATION EN PYTHON

INTRODUCTION

Pour bien comprendre un algorithme statistique ou méthodologie, il est souvent bénéfique de l’implémenter soi-même. Cela peut être chronophage et fastidieux, et il existe souvent des implémentations existantes. Néanmoins, implémenter l’algorithme soi-même peut réellement renforcer la compréhension de ses fonctionnements internes. Cet article est pour ceux qui souhaitent comprendre l’algorithme t-SNE en traduisant les mathématiques du papier d’origine en code Python.

UNE BRÈVE INTRODUCTION À t-SNE

t-SNE (t-distributed stochastic neighbor embedding) est un outil de réduction de dimensionnalité utilisé pour les ensembles de données avec un grand nombre de dimensions. Il permet de visualiser les données sous une forme plus simple, généralement en 2 dimensions, ce qui peut être particulièrement utile pour les données non linéairement séparables. La méthode s’appuie sur des approches de réduction de dimensionnalité non-linéaire telles que l’apprentissage de variété pour visualiser et comprendre la structure sous-jacente de l’ensemble de données.

UNE DESCRIPTION DE L’ALGORITHME t-SNE

L’algorithme SNE (stochastic neighbor embedding) a été développé il y a 6 ans avant l’algorithme t-SNE. Sa formalisation est basée sur les approches non-linéaires dites d’apprentissage de variété.

t-SNE améliore SNE en minimisant les divergences de Kullback-Leibler entre les probabilités jointes plutôt que les probabilités conditionnelles. Les auteurs se réfèrent à cette approche comme “symétrique SNE” car elle garantit que les probabilités communes p_ij = p_ji. Cela donne une fonction de coût plus facile à optimiser. De plus, t-SNE calcule les similarités entre les points en utilisant une distribution de Student-t avec une liberté de degré plutôt qu’une fonction Gaussienne dans l’espace de faible dimensionnalité. Cette amélioration aide à résoudre le “problème d’encombrement” et à améliorer la résolution de l’optimisation.

IMPLÉMENTATION DE L’ALGORITHME t-SNE EN PYTHON

Dans cet article, nous allons implémenter la version originale de l’algorithme t-SNE présentée dans le papier de Laurens van der Maaten & Geoffrey Hinton en Python. Nous allons d’abord implémenter l’algorithme 1 étape par étape, qui couvrira 95% de l’algorithme principal. Nous aborderons ensuite les deux améliorations supplémentaires : Early Exaggeration et Adaptive Learning Rates.

REMARQUE

Cet article ne propose pas une introduction conceptuelle et une exploration strictement de t-SNE : il y a suffisamment d’autres ressources. Néanmoins, nous ferons de notre mieux pour relier les équations mathématiques à leurs contreparties intuitives et conceptuelles à chaque étape de la mise en oeuvre en Python. Il ne s’agit pas d’une discussion complète sur les applications et les avantages et les inconvénients de t-SNE, ni de la comparaison directe de t-SNE avec d’autres techniques de réduction de dimensionnalité. Nous ne ferons qu’effleurer brièvement ces sujets dans tout l’article sans entrer dans les détails.

CONCLUSION

L’implémentation des algorithmes statistiques est un moyen efficace de renforcer la compréhension des fonctionnements internes, même si elle peut prendre du temps et être fastidieuse. Nous avons implémenté l’algorithme t-SNE dans cet article en nous appuyant sur la version originale présentée dans le papier de Laurens van der Maaten & Geoffrey Hinton et en nous concentrant sur la compréhension des fondamentaux de l’algorithme en se basant sur l’explication mathématique et la traduction en Python.

What do you think?

Written by Barbara

Leave a Reply

Your email address will not be published. Required fields are marked *

Meta licencie 10 000 employés de plus dans une série de coupes.

Connor Roy est le véritable cœur de Succession.