.. index:: glossary, glossaire .. _l-glossaire: .. _l-glossary: Glossaire ========= .. glossary:: algorithme Un `algorithme `_ est une suite finie et non ambigüe d'opérations ou d'instructions permettant de résoudre un problème. Antlr4 `Antlr4 `_ est un outil qui permet de construire des grammaires ou des compilateurs. Cela peut servir à interpréter un code écrit dans un langage existant, pour le réécrire avec un meilleur format par exemple ou lui ajouter quelques fonctionnalités. On peut également vouloir définir rapidement un langage de script pour sa propre application. Dans les deux cas, cet outil permet éviter de réécrire son propre parseur et donc d'aller beaucoup plus vite. Il est intuitif. Voir `Using Antlr4 to write a grammar `_. auto-encoders Le concept d'`auto-encoders `_ est associé au deep learning. C'est aussi un moyen de réduire le bruit dans les données *X* ou de les compresser en considérant la fonction :math:`X=g ( f (X ) )` où *g* est une fonction pseudo inverse de *f*. La fonction *f* est une sorte de projection dans un espace de dimension inférieur à celui de départ. La fonction *g* reconstruit *X* à partir de sa projection. Après cette première étape d'apprentissage, les données transformées :math:`f(X)` sont moins bruitées et sont souvent de meilleurs features que les données initiales. Cette étape est assez utile pour transformer des données discrètes (voire binaires) en données continues, ce que les algorithmes d'optimisation à base de gradient préfèrent. Voir aussi `Tutorial on auto-encoders `_. bandits Le bandit manchot fait référence aux machines à sou dans les casinos. Tout l'enjeu de cette méthode consiste à maximiser ces gains en améliorant sa stratégie au fur et à mesure. Tout au long du jeu, il devient possible d'estimer la probabilité d'apparition des combinaisons gagnantes avec de plus en plus de précision. Voir `bandit manchot `_ ou `multi-armed bandit `_ en anglais. benchmark `banc d'essai `_ cache Mécanisme qui consiste à mémoriser un résultat coûteux à produire. Lorqu'il n'est pas possible de tout stocker en mémoire, il faut choisir les informations les plus susceptibles d'être demandées. Voir `algorithme de cache `_. Cheat Sheet Sorte d'anti-sèche. Quelques exemples pour le machine learning : `8 Best Machine Learning Cheat Sheets `_, `Cheat Sheets Python `_ Ce mot-clé fonctionne très bien quand on cherche des informations sur un language, un module... Essayez avec *python cheatsheet* sur n'importe quel moteur de recherche. Un des meilleurs sites que j'aie trouvés est celui-ci : `Data Science Cheat Sheets `_, on y trouve également : `Experts' Favorite Data Science Techniques `_. coût Le coût d'un algorithme est le nombre d'opérations qu'il effectue lorsqu'il est exécuté. Ce coût dépend des données qu'il manipule. Il s'exprime en règle générale en fonction de la taille des données. Le plus souvent, on ne cherche pas le nombre exact d'opérations mais un nombre approché (notation en :math:`O(.)`). La plupart du temps, ce coût correspond au nombre d'exécution d'une instuction incluse dans la boucle la plus imbriquée. DropBox `DropBox `_, stockage dans le cloud. Pour récupérer automatiquement des fichiers, voir `Download a file from Dropbox with Python `_. Deep Learning Le concept `Deep Learning `_ évoque souvent des réseaux de neurones à plusieurs couches dont on retrouve l'histoire et les principaux concepts dans le livre `Deep Learning: Methods and Applications `_. Deep learning signifie aussi des algorithmes gourmands en calculs et ils sont très rarement codés en Python seul mais en C++ et Python (wrapper) : - `Deep Learning Tutorials `_ (python) (voir aussi `github/yaoli/GSN `_) - `Vowpal Wabbit `_ (C++) - `Tutorial on auto-encoders `_ L'inventeur du deep learning est Yoshua Bengio: - `Yoshuas Bengion's talk `_. - `LeNet 5 `_ (probably the first known deep network) Voir aussi : - `Sequence to Sequence Learning with Neural Networks `_, Ilya Sutskever, Oriol Vinyals, Quoc V. Le - `Why does Deep Learning work? - A perspective from Group Theory `_, Arnab Paul, Suresh Venkatasubramanian - `Deeply-Supervised Nets `_, Chen-Yu Lee, Saining Xie, Patrick Gallagher, Zhengyou Zhang, Zhuowen Tu Quelques blogs : - `Image Scaling using Deep Convolutional Neural Networks `_ Deep Q Network (DQN) Deep Learning + Reinforcement Learning. Voir `DQN `_. Lire `Human-level control through deep reinforcement learning `_, in Nature Volume 518, `Deep Reinforcement Learning from Self-Play in Imperfect-Information Games `_ (ArXiv) Dijkstra Plus connu pour l'algorithme du plus court chemin dans un graphe, `Edsger Dijkstra `_, il a contribué à faire ce que le programmation est aujourd'hui. Il faut lire `A Case against the GO TO statement `_ `The humble programmer `_ (traduction française `Le programmeur modeste `_). Il est aussi l'auteur d'`aphorisme `_ très sensés pour la plupart des programmeurs. ENSAE ParisTech Ecole Nationale de la Statistique et de l'Administration Economique (`ENSAE `_) entretien Quelques révisions à faire afin de préparer un entretien : :ref:`l-puzzlealgo2A`. expression régulière Chercher un mot dans un texte est facile, chercher un nombres réelles ou un date est plus complexe car toutes les séquences de chiffres ne sont pas des nombres ou des dates. Dans ce cas, il faut utiliser un outil plus adaptés comme les `expressions régulières `_ qui permettent de chercher ou remplacer des motifs ce qu'illustre parfaitement l'article `8 Regular Expressions You Should Know `_. FAQ *Frequently Asked Questions*, titre de sections très souvent utilisés pour regroupés les questions envoyées par les utilisateurs d'un produit. Gated recurrent unit `Gated recurrent unit `_ (GRU), mécanisme utilisé dans les réseaux de neurones récurrents pour propager ou non le signal venant des observations précédentes. Git Logiciel de suivi de source utilisé par exemple par GitHub. Il est décentralisé. Chaque contributeur est libre de proposer ou d'importer une modification faite par un autre. GitHub `GitHub `_ est un service web d'hébergement et de gestion de développement de logiciels, utilisant le programme `Git `_. C'est ce service qui héberge les sources de ce tutoriel sur Python. Il sert essentiellement à deux choses : travailler à plusieurs et pouvoir facilement fusionner les modifications de chacun, conserver l'historique des modifications. Voici par exemple un changement sur la librairie `pyensae `_ : `add method plot `_. glouton Un `algorithme glouton `_ est un algorithme qui suit le principe de faire, étape par étape, un choix optimum local (*wikipedia*). Ce terme est un peu trompeur parfois dans la mesure où il englobe des algorithmes rapides comme lents. ggplot `ggplot2 `_ est une librairie de graphiques sous R. Elle est accessible via `matplotlib `_. Voir `A few tricks with matplotlib `_. GPU `GPU `_ = Graphics Processing Unit. Ils sont très utilisés pour les réseaux de neurones et les algorithmes de Monte Carlo. Voir `Building Deep Neural Networks in the Cloud with Azure GPU VMs, MXNet and Microsoft R Server `_. greedy Voir glouton. GRU Voir Gated recurrent unit. Hadoop Logiciel de distribution de traitement de données. Voir `Hadoop `_. HDFS Hadoop File System : système de fichiers distribué propre à Hadoop : `commandes HDFS `_. Hive Langage haut niveau pour implémenter des tâches Map/Reduce traitant des tables de données : `Hive `_. Immuable voir Immutable Immutable On dit qu'un type est **immutable** s'il ne peut être modifié. Un tuple est **immutable**, c'est un tableau dont on ne peut pas changer les éléments contrairement à une liste. Voir aussi :ref:`Qu'est-ce qu'un type immuable ou immutable ? `, :ref:`question_1A_2014_1`. Information bottleneck method `Information bottleneck method `_, outils mathématiques pour réduire la complexité d'un modèle de machine learning tout en conservant de bonnes performances. Voir :ref:`l-interpretabilite-ml`. Internet Of Things Voir `Internet des Objets `_. Les objets qui nous entourent enregistrent des données et en retour nous permettent de mieux interagir avec notre environnement. IoT Voir Internet Of Things Jenkins :epkg:`Jenkins` est un logicial d'automatisation de build (et de tâches). Voir `Build automation with Jenkins `_. JIT Just In Time (Compilation). Some modules such as `Cython `_ offers the possibility to speed up a Python programming by converting some part of it in C++. It is then compiled and executed. See also: `Python Just In Time Compilation `_. Knuth `Donald Knuth `_ est l'auteur de `The Art of Computer Programming `_. C'est une des grandes figures de l'informatique. Il est également l'inventeur du langage `TeX `_. Markdown Langage utilisé par les notebooks et pour cette documentation écrit en `rst `_. Sa syntaxe est décrite à `Markdown: Syntax `_. A l'instar du langage Python, il utilise l'indentation pour marquer la séparation entre les blocs. Mock Il est difficile de tester un programme qui lance des requêtes sur un service sans que ce service soit activé comme par exemple récupérer des données financières sur Internet sans Internet. Lorsqu'on veut s'assuser qu'une fonction qui communique avec un service fonctionne, on créé ce qu'on appelle un mock : on créé un faux service qui retourne des réponses assez courtes afin de tester la partie qu'on a besoin de tester. Ce genre de système permet de tester séparément le service et la partie qui communique avec ce service. Lire également `Mock Object `_, `Unit test et Mock `_. Mutable Voir Immutable. Natural Language Processing Ensemble de méthodes traitent du `langage naturel `_. Les opérations les plus courantes consistent à `séparer un texte en mots `_, à `normaliser `_, à faire du `stemming `_, à enlever les `mots de liaison `_ qui n'apportent pas de sens au texte. Après ce nettoyage, on peut faire du `text mining `_, de l'`analyse de sentiments `_... NLP Voir Natural Language Processing NLTK *Natural Language Toolkit*. La librairie `NTLK `_ est sans doute la plus connue lorsqu'il s'agit de traiter le langage. optimisation L'`optimisation `_ se résume le plus souvent à maximiser ou minimiser une fonction réelle dépendant de plusieurs paramètres. Il s'agit de trouver les paramètres optimaux : ceuw qui permettent d'obtenir le minimum ou maximum trouvé. La plupart des problèmes de machine learning se résume à un problème d'optimisation. Parmi les différentes types de problèmes, on distingue les problèmes linéaire, quadratique, non linéaire, avec ou sans contraintes. Lire le blog :ref:`Optimisation avec contraintes, cvxopt, pulp, NLopt, ... `. pair programming Voir `pair programming `_. PCFG *Probabilistic Context-Free Grammars*. Les grammaires permettent de *tagger* les mots d'un texte : en s'appuyant sur des règles de proximité, on arrive à reconnaître des noms, des verbes ou autre entités sémantiques. Voir `Probabilistic Context-Free Grammars (PCFGs) `_. Voir aussi le module `NTLK `_. PIG Langage haut niveau pour implémenter des tâches avec plusieurs Map/Reduce : `PIG `_. Pokemon C'est un jeu qui est régulièrement choisi par les élèves en tant que projet information. `TP: Pokemon, attrappez-les tous ! `_, voir aussi :ref:`Site Web avec des Pokemons `. PR voir Pull Request Pull Request Terme prope à `Git `_ (`GitHub `_, `BitBucket `_, `GitLab `_). Cela veut dire que quelqu'un a forké un projet open source, l'a modifié et a demandé à son concepteur d'intégrer ses modifications. Il a envoyé une `pull request `_. pyensae C'est un module que j'ai développé à l'attention des élèves de l'ENSAE (`documentation `_). Il sert le plus souvent à télécharger des documents depuis le site `www.xavierdupre.fr `_ et plus précisément des documents accessibles depuis ce lien `documents `_. PyQt `PyQt `_ est considéré comme le standard en matière d'interface grahique. C'est d'abord un concept d'interface graphique qu'on retrouve en Python sous deux implémentation : `PyQt4 `_, `PyQt5 `_ (licence GPL), `PySide `_ (licence LGPL). Il existe d'autres alternatives comme `Phoenix `_ mais moins populaires donc moins maintenus. pyquickhelper Ce module est utilisé par `pyensae `_. Il sert principalement à générer cette documentation. Il effectue des tâches avant et après la génération de la documentation avec `Sphinx `_. Python Langage de programmation interprété. C'est le langage utilisé pour le support de ce cours. `Site officiel `_. C'est un `langage impératif `_. Un tutoriel : `Python Notes `_. Recurrent Neural Network (RNN) `The Unreasonable Effectiveness of Recurrent Neural Networks `_ regular expression Voir expression régulière. Resilient Distributed Datasets (RDD) Voir `Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing `_. reStructuredText Voir Sphinx. RNN Voir Recurrent Neural Network. Rossum `Guido van Rossum `_ est l'inventeur du langage `Python `_. rst rst = `reStructuredText `_, voir Sphinx score Le score n'a pas de définition théorique et il dépend de chaque modèle. Prenons l'exemple d'une classification avec LDA, le résultat est un hyperplan qui sépare deux classes. On détermine le meilleur hyperplan possible sur une base d'apprentissage. Le score dans ce cas est la distance d'un point à cet hyperplan mais c'est une définition propre au modèle LDA. D'une manière générale, un classifier réalise une partition, il permet de tracer des frontière entre les classes. Le score indique si on est plus ou moins proche de cette frontière. Plus on est proche, moins le classifieur est sûr de sa réponse. Voilà en résumé l'idée du score. Donc le score est un chiffre qui exprime la proximité d'une observation à la frontière de la classe dans laquelle elle est classée. La frontière est apprise sur la base d'apprentissage, l'observation provient de n'importe quelle base. Sérialisation La `sérialisation `_ est le fait de transcrire une structure de données parfois cyclique (comme un graphe) en une seule séquence d'octets. On s'en sert surtout pour transmettre ces données (via internet) ou les stocker. SIMD Voir SSE. skewed join Voir :ref:`Map Reduce et Skew Join `, `Données antipathiques `_. Spark Couche logicielle au-dessus de Hadoop permettent de distribuer des calculs. Se distingue de Hadoop grâce aux *Resilient Distributed Datasets* (RDD) qui sont plus efficace. Voir `Spark `_. sparse Les matrices `sparse `_ (ou creuses) sont des matrices de grandes dimensions dont la plupart des coefficients sont nuls. En tenant compte de cette information, il est possible de réduire la taille de stockages et d'optimiser le calcul matriciel. Il n'existe pas encore de modules standard pour gérer ce cas. Quelques liens : `sparse et pandas `_, `sparse matrix avec scipy `_, `Handling huge matrices in Python `_, `sparse matrix et cvxopt `_, `présentation de blaze `_, `blaze `_ (peut-être le futur de `numpy `_), `Introducing Blaze - HMDA Practice `_ Sphinx `Sphinx `_ est un moteur qui génère de la documentation à partir de fichier au format `reStructuredText `_. Voir également `Restructured Text (reST) and Sphinx CheatSheet `_. Dans le cadre de ce cours, `Sphinx `_ est un module Python qui permet de générer la documentation de la grande majorité des modules Python incluant ce cours. Le langage de la documentation est `RST `_ (reStructuredText). Quelques exemples : `Cheat Sheet `_, `Sphinx and RST syntax guide `_. SQL Le `SQL `_ où *Structured Query Language* est un language dédié aux `base de données relationnelles `_. Sa logique est plus proche de la `programmation fonctionnelle `_. SSE SSE ou `Streaming SIMD Extensions `_ est un jeu d'instructions processeur qui permet de faire des calculs sur des vecteurs avec un coût équivalent à celui d'opérations entre nombres flottants. L'article `Fast Interesection of Sorted Lists Using SSE Instructions `_ montre un contexte dans lequel elles sont utiles. Elles sont aussi utilisées dans le notebook : :ref:`cffilinearregressionrst`. Stemmer Un *stemmer* permet de réduire les différentes formes d'un mot. Les mots apparaissent au singulier, au pluriel, collés à une apostrophes, conjugués... Il n'est pas toujours évident de dire si un document contient un mot précis. C'est pourquoi on effectue une étape de nettoyage qui consite à séparer un texte en mot et à les réduire à une forme canonique. Cette seconde étape est appelée le *stemming*. `NLP & Sentiment Analysis `_ Stemming Voir stemmer. Stroustrup `Bjarne Stroustrup `_ est l'inventeur du langage `C++ `_. SVN `SVN `_ est un logiciel de suivi de source, de même que Git. Il est centralisé : une modification doit d'abord être appliquée à la branche centrale avant de pouvoir être propagée aux autres branches. Theano Librairie de calcul GPU pour Python. Voir `theano `_. Torch Librairie de deep learning pour Lua. Voir `Torch `_. Voir également `Torch vs Theano `_. transport Théorie du transport, *m* usines, *n* entrepôts, on définit :math:`c(i,j)` le coût de transport d'une usine à un entrepôt, comment optimiser l'acheminement ? Lire `Transport optimal de mesure : coup de neuf pour un très vieux problème `_ de Cédric Villani. warnings Non-blocking error but it should be read and the cause removed. See `Python: Use Warnings! `_. Wheel Nouveau format pour installer des modules Python. Voir `Install a Python module with Wheel `_.