Glossaire#

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 X=g ( f (X ) )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 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 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) :

L’inventeur du deep learning est Yoshua Bengio:

Voir aussi :

Quelques blogs :

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 : Puzzles algorithmiques.

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 Qu’est-ce qu’un type immuable ou immutable ?, Question à propos de trie.

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 Interprétabilité des modèles.

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#

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 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 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 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 SQLStructured 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 : Optimisation de code avec cffi, numba, cython.

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 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.