samedi 30 novembre 2019

Auto-encodeur avec Keras sous Python

Ce tutoriel fait suite au support de cours consacré aux auto-encodeurs (cf. référence ci-dessous). Nous mettons en oeuvre la technique sur un jeu de données jouet (des automobiles pour ne pas changer) à l'aide des librairies tensorflow et keras pour Python.

Il y a différentes manières de considérer les auto-encodeurs. Dans notre cas, nous adoptons le point de vue de la description des données dans un espace de dimension réduite. Comme une alternative à l'ACP (analyse en composantes principales) en somme. L'objectif est de cerner au mieux les attentes que l'on pourrait avoir par rapport aux résultats qu'elle fournit dans ce contexte, notamment en matière de qualité de reconstitution des données.

Mots-clés : deep learning, auto-encodeur, autoencoder, réseau de neurones, perceptron, tensorflow, keras, python, acp, analyse en composantes principales
Code source + données : Cars Autoencoder
Références :
Tutoriel Tanagra, "Deep learning : les Auto-encodeurs", novembre 2019.

mercredi 27 novembre 2019

Deep learning : les auto-encodeurs

Un auto-encodeur est un réseau de neurones non-supervisé utilisé pour la réduction de dimension et la data visualisation. Il se présente comme un perceptron multicouches où les neurones des couches d'entrée et de sortie sont identiques, ils sont formés par les descripteurs. Le réseau peut comporter plusieurs couches intermédiaires, la couche centrale, de taille fortement réduite par rapport à la dimensionnalité initiale, constitue le "code" permettant de compresser l'information disponible aussi fidèlement que possible au sens d'un critère à optimiser.

Ce support de cours présente les principes sous-jacents à cette technique de deep learning. Le parallèle est fait avec l'ACP (analyse en composantes principales), l'intérêt des auto-encodeurs est de pouvoir proposer différents niveaux d'abstraction et de savoir appréhender les "pattern" non-linéaires.

Mots-clés : deep learning, réseaux de neurones, réduction de la dimensionnalité, visualisation des données, pattern non-linéaire, couches cachées, perceptron, filtrage du bruit
Support de cours : Auto-encodeur
Références :
Wikipedia, "Autoencoder".
Rakotomalala R., "Deep learning : perceptrons simples et multicouches", nov. 2018.

mercredi 20 novembre 2019

Discrétisation supervisée rapide

Nous nous intéressons à la discrétisation supervisée dans ce tutoriel, plus particulièrement à la méthode descendante MDLP de Fayyad et Irani (1993). Nous évaluons les solutions qu'elle propose sur deux bases de données et nous comparons les temps d'exécution sous R, à travers les packages "discretization" et "RWeka".

Une étude rapide de l'algorithme permet de faire le parallèle avec l'induction par arbre de décision. Fort de cette idée, nous proposons un algorithme de discrétisation basée sur rpart(). On peut toujours argumenter sur la qualité des solutions proposées, ce n'est pas notre propos. En revanche, il apparaît clairement que cette nouvelle approche s'avère autrement plus rapide sur les très grandes bases de données.

Mots-clés : discrétisation, apprentissage supervisé, logiciel R, package discretization, package rweka, mdlp, rpart, arbres de décision
Didacticiel : Discrétisation supervisée rapide
Code source + données : Discrétisation rpart
Références :
Tutoriel Tanagra, "La discrétisation des variables quantitatives", octobre 2014.
Tutoriel Tanagra, "Discrétisation – Comparaison de logiciels", février 2010.

jeudi 14 novembre 2019

JIT compilation sous Python

La compilation à la volée (JIT, just-in-time compilation) est un procédé qui permet de compiler dynamiquement, durant l'exécution, tout ou partie d'un code programme. Dans ce tutoriel, nous étudions le package Numba pour Python. Il permet de rendre plus performantes des portions de nos programmes (des fonctions essentiellement) en introduisant simplement des "directives de compilation", sans autres modifications du code. Nous verrons que l'outil est diablement intéressant et permet d'obtenir des gains spectaculaires. Il l'est d'autant plus que nous pouvons profiter de la parallélisation automatique des calculs dans certaines configurations.

Mots-clés : just-in-time compilation, JIT, python, package numba, régression linéaire, descente du gradient, package numpy, parallélisation
Didacticiel : JIT sous Python
Code source : Python - Numba
Références :
Numba, "A high Performance Python Compiler", http://numba.pydata.org/
Tutoriel Tanagra, "Programmer efficacement sous Python", avril 2019.

mardi 12 novembre 2019

Ateliers Master SISE : logiciel SAS

Comme de tradition (2016, 2017, 2018), nous commençons l’année (universitaire) par des ateliers consacrés aux outils de la data science en Master SISE. Nous nous intéressons au logiciel SAS cette fois-ci. Même si par ailleurs, notre priorité est la maîtrise des outils R et Python, il n’en reste pas moins que SAS représente un acteur important en France, au sein d’une certaine catégorie d’entreprises en tous les cas. Dans notre département (qui commence en L3), une UE (unité d’enseignement) lui est consacrée en Master 1 puis, en Master 2, il est utilisé dans quelques cours de statistique, mais guère plus. Il m’a semblé intéressant de faire travailler les étudiants sur ce thème pour consolider leurs connaissances et préparer au mieux l’année.

Les 6 séances ont été réparties en 3 thèmes : Manipulation des Données, Statistique Descriptive, Statistique Inférentielle. Pour chaque séance, nous disposons : d’un support de présentation, d’un sujet de travaux pratiques sur machine, d’un ou plusieurs jeux de données (fichier Excel ou CSV), d’un corrigé sous la forme de fichiers SAS, d’un tutoriel vidéo montrant les différentes étapes de la réalisation des tâches.

Je me répète tous les ans, mais je ne m’en lasse pas, merci aux étudiants du Master SISE pour cet excellent travail qui profitera à tout le monde.


Ateliers Master SISE : logiciel SAS
ThèmesPrésentationsExercicesDataset CorrigésTutoriels
Manip. Data 1
Manip. Data 2
Stat. Desc. 1
Stat. Desc. 2
Stat. Inf. 1
Stat. Inf. 2

lundi 11 novembre 2019

Python Machine Learning avec Orange

Orange est un logiciel bien connu des passionnés de data mining. On trouve de nombreux tutoriels en ligne, j’en ai écrit moi-même plusieurs. Moins connue en revanche est la possibilité d’utiliser les fonctions de la librairie Orange dans des programmes rédigés en Python. Pourtant, la fonctionnalité est disponible depuis longtemps, bien largement avant la vague Python dans la pratique du machine learning de ces dernières années.

Dans ce tutoriel, je montre son mode opératoire dans un problème simple d’apprentissage supervisé. Nous constaterons que le package Orange pour Python est assez simple d’utilisation et, dans ce cadre, se pose comme une alternative tout à fait valable aux libraires très populaires telles que "scikit-learn" ou le tandem "tensorflow / keras".

Mots-clés : python, package orange, régression logistique, induction de règles, apprentissage, test
Code source et données : Breast Cancer Wisconsin
Références :
Demsar J, Curk T, Erjavec A, Gorup C, Hocevar T, Milutinovic M, Mozina M, Polajnar M, Toplak M, Staric A, Stajdohar M, Umek L, Zagar L, Zbontar J, Zitnik M, Zupan B (2013), "Orange: Data Mining Toolbox in Python", Journal of Machine Learning Research 14(Aug): 2349−2353.