Quantcast
Channel: Tutoriels Tanagra pour le Data Mining, le Machine Learning et la Data Science
Viewing all 365 articles
Browse latest View live

Régression ZIP sous R et Python

$
0
0
Ce tutoriel fait suite au support de cours consacré à la Zero-Inflated Poisson Regression, une technique adaptée à la modélisation d'une variable de comptage lorsque la valeur "0" est surreprésentée.

Nous travaillerons sous R dans un premier temps. Nous détaillons les différentes manières de modéliser une variable cible représentant un dénombrement. Nous appliquerons tour à tour la régression logistique, la régression de Poisson et la régression ZIP avec le package "pscl" (Political Science Computational Library). Nous analyserons les résultats pour essayer de comprendre l'intérêt des différentes approches. Dans un deuxième temps, nous reprenons dans les grandes lignes la même étude en travaillant sous Python cette fois-ci. Nous ferons appel au package "statsmodels". Nous constaterons – sans surprise – la convergence des résultats avec ceux de R.

Mots-clés : régression zip, zero-inflated poisson regression, régression de poisson, régression logistique, package pscl, package statsmodels, logiciel R, test de vuong
Données et programmes R / Python : Affairs
Références :
R. Rakotomalala, "Régression ZIP - Diapos", juin 2019.
R. Rakotomalala, "Régression de Poisson - Diapos", mai 2019.

Outils d'optimisation sous R

$
0
0
J'utilise quasiment toujours le tableur Excel pour disséquer les algorithmes de machine learning. Il n'y a rien de mieux je trouve pour décortiquer les formules. On ne peut pas rentrer des commandes au petit bonheur la chance, nous sommes obligés de tout comprendre pour pouvoir tout décomposer. Comme une grande partie des méthodes revient à optimiser une fonction de perte (ou de gain), je m'appuie alors sur le solveur. J'obtiens souvent des résultats satisfaisants, comme par exemple dans mon ouvrage – qui servira de référence – consacré à la “Pratique de la régression logistique” où l'on maximise la log-vraisemblance.

Je me suis demandé s'il existait un équivalent du solveur sous R. En cherchant un peu, je me suis rendu compte que oui, il s'agit de la fonction optim() du package “stats”, installé et chargé par défaut sous R. Tout comme son homologue sous Excel, il peut fonctionner avec seulement une fonction objectif et un vecteur de paramètres. Mais il peut aller plus loin, nous pouvons lui fournir d'autres informations pour qu'il soit plus efficace. Il sait produire également des résultats additionnels nécessaires à l'inférence statistique lorsque nous travaillons sur les algorithmes de régression par exemple.

Dans ce tutoriel, nous montrons l'utilisation des fonctions optim() et optimHess() pour la programmation de la régression logistique. Nous comparerons les résultats d'une part avec les sorties de la fonction glm() de R, d'autre part avec les fruits d'une petite implémentation maison de l'algorithme de Newton-Raphson.

Mots-clés : optim, optimHess, algorithme d'optimisation, bfgs, newton-raphson, log-vraisemblance, vecteur gardient, matrice hessienne, logiciel R, solveur excel, régression logistique
Didacticiel : Optimisation sous R
Données et programme R : optim et optimHess
Références :
R. Rakotomalala, "Pratique de la régression logistique", Version 2.0, mai 2017.

Économétrie - Projet Open Data

$
0
0
Suite à des circonstances particulières, il m'a fallu improviser une évaluation de mon cours d'économétrie une année. J'avais décidé de faire travailler mes étudiants sur la modélisation à partir des "Open Data". J'avais en-tête un double objectif : (1) les faire travailler sur la pratique de la régression linéaire multiple, qui était un peu le coeur du cours il faut dire ; (2) les amener à s'intéresser aux "Open Data", le potentiel d'études qu'elles (données ouvertes) recèlent, mais aussi la difficulté à les exploiter puisqu'elles ne sont pas explicitement collectées à des fins d'analyse.

Les étudiants ont si bien travaillé que j'ai reconduit le dispositif l'année suivante en rajoutant une soutenance pour que les étudiants puissent présenter et de défendre leur travail. Ils ont beaucoup d'imagination pour dégoter des sujets originaux voire épiques qui ont le mérite de titiller ma curiosité.

Je mets en ligne le cahier des charges que je diffusais auprès des étudiants (souvent des personnes me contactent pour avoir des idées de mémoire, je me dis que le thème universel des "open data" peut inspirer). Dans notre timing, suite à ma présentation du format de l'évaluation, ils avaient deux semaines pour me proposer un sujet qui tient la route, que je devais valider, puis deux semaines supplémentaires pour finaliser l'étude et me rendre un rapport. Les soutenances avaient lieu la semaine suivante. Sachant qu'en parallèle, ne l'oublions pas, ils suivent les autres enseignements et subissent d'autres évaluations sous des formes diverses et variées.

Enfin, très important, je proscrivais l'utilisation des bases déjà préparées que l'on retrouve sur les sites dépôts dédiés aux challenges ou à l'étude des algorithmes de machine learning. Elles sont très bien dans le cadre restreint des compétitions et des comparaisons, mais elles ne reflètent en rien la démarche la modélisation dans une étude réelle, contexte où la préparation des données tient une place primordiale et conditionne la qualité des résultats.

Les étudiants peuvent utiliser les outils qu'ils souhaitent. Ils s'appuient sur R ou Python souvent, mais plusieurs ont fait le choix de Gretl. La seule règle imposée était que je puisse reproduire les calculs à l'identique.

Cahier des charges : Projet Open Data - Modélisation

Économétrie - Classe inversée

$
0
0
Lorsque j'avais commencé mon cours d'économétrie ("théorie et pratique de la régression linéaire simple et multiple" serait plus approprié) il y a une quinzaine d'années, je disposais de 24h pour les CM (cours magistraux) et 12h pour les TD (travaux dirigés, sur machine en ce qui me concerne). C'était Byzance. Puis, au fil du temps sont arrivées les restrictions, de plus en plus oppressantes, au point que ces dernières années on m'accordait (on accordait aux étudiants) 8.75h CM et 10.5h TD. Je me suis toujours battu pour préserver les exercices sur machine, primordiales à mon sens, parce que les étudiants sont dans l'action, parce que je peux être au plus près d'eux pour échanger et parler des aspects opérationnels que l'on ne traite jamais dans les manuels d'économétrie. Il m'a bien fallu lâcher du lest d'un autre côté. C'est tombé sur les CM. Aussi peu d'heures (5 séances d'1h45) pour traiter de la corrélation, la régression simple, la régression multiple et l'appréhension des problèmes pratiques (expertise des résidus, colinéarité, sélection de variables, identification des points atypiques ; des thèmes de niveau L3, ni plus ni moins), on en rigolerait si ce n'était pas au détriment des étudiants.

Pour le coup, je me suis dit qu'il fallait absolument trouver une autre manière de réaliser mon cours d'économétrie, sinon on allait droit dans le mur. Ça tombe sous le sens finalement. Quel intérêt aujourd'hui de faire des CM lénifiants où les étudiants grattent avec un profond ennui, alors qu'ils ont à disposition de très nombreux supports sur le web, y compris d'excellents (pour certains) cours filmés réalisés par d'éminents collègues, en français (faites une recherche avec les mots-clés "régression linéaire" sur YouTube, juste pour voir), en anglais, dans d'autres langues. Je me suis dit que c'était là une occasion d'appliquer les principes de la pédagogie inversée (ou classe inversée), séduisante en théorie, mais dont la mise en œuvre n'est pas toujours évidente parce que nous devons forcément composer avec des contraintes de tout ordre, y compris matérielles. Pour ma part, j'avais une soixantaine d'étudiants, dans des salles où il est impossible de modifier la configuration du mobilier pour les organiser en groupes (notre service du patrimoine a certainement beaucoup de qualités, mais l'humour n'en fait pas partie).

Après réflexion, j'ai opté pour la version suivante de la classe inversée. Les étudiants sont organisés en groupes. Une semaine avant la séance, je leur transmets une liste de supports à lire, accompagnée d'une série d'exercices à réaliser. Le jour dit, je fais un rappel de cours très succinct (une quinzaine de minutes) en mettant l'accent sur les points importants. Puis, les étudiants, au titre de leur groupe, passent au tableau pour la correction des exercices sur la base du volontariat. Chaque passage avec succès correspond à un bonus sur la note finale de la matière.

Je n'étais pas vraiment convaincu de l'intérêt du rappel de cours, mais les étudiants ont insisté pour que je resitue les thèmes de la séance. Dans l'idéal, l'étudiant qui passe au tableau devrait effectuer une correction commentée. Dans les faits, il a tendance à écrire silencieusement à toute vitesse les équations et les résultats. Souvent les étudiants s'attachent au "comment faire" au détriment du "pourquoi le faire ainsi". Pendant qu'ils écrivent donc, je m'applique à les aider en les poussant à expliquer leur démarche ou en commentant moi-même, afin de positionner la question traitée par rapport au chapitre de cours concerné.

Ça a plutôt bien marché finalement, surtout parce que les étudiants ont adhéré au mode de fonctionnement. C'est heureux parce qu'un enseignement n'a aucun sens si on n'a pas leur assentiment. J'avais aussi la crainte que les séances se transforment en activité de recopie des corrections, mais la plupart ont joué le jeu et se sont beaucoup investis. Il m'a même fallu instaurer des règles de passage au tableau pour que les bonus soient équitablement répartis.

Je mets en ligne aujourd'hui la liste des exercices pour les 4 séances "CM" du cours d'économétrie (je consacrais la séance 5 des "CM"à la correction conjointe d'annales d'examen). L'objectif pédagogique est d'aiguiller les étudiants sur les différents thèmes du programme de L3. J'y joins les corrigés (sous Excel, tout le monde connaît mon attachement aux vertus pédagogiques du tableur pour l'initiation à la statistique) que je diffusais après coup afin que les étudiants disposent d'un repère commun. J'avoue que j'ai un peu du mal à m'y retrouver moi-même après tant d'années. Il se peut que certains exercices aient été glanés sur d'autres sites web ou encore dans des ouvrages de référence, je suis désolé de ne pas pouvoir créditer leurs auteurs faute de pouvoir les retrouver, mais je les remercie quoiqu'il en soit.

Exercices corrigés - Économétrie
ThèmeSujetCorrigé
Séance n°1. Corrélation de Pearson. Estimation, intervalle de confiance, tests, corrélation partielle, corrélation de Spearman.
Séance n°2. Régression linéaire simple. Estimation des coefficients, intervalle de confiance, tests de significativité, prédiction ponctuelle et par intervalle.
Séance n°3. Régression linéaire multiple. Estimation des coefficients, intervalle de confiance, tests de significativité, tests généralisés sur les coefficients, prédiction ponctuelle et par intervalle, rupture de structure, test de Chow.
Séance n°4. Pratique de la régression. Etude des résidus, colinéarité et sélection de variables, points atypiques et influents, traitement des exogènes qualitatives.

Big Data, Machine Learning...

$
0
0
Cette fiche de lecture est consacrée au dernier ouvrage de Stéphane Tufféry, "Big Data, Machine Learning et Apprentissage profond", Technip, 2019.

Mots clés : machine learning, big data, apprentissage profond, deep learning, programmation R, logiciel R, packages spécialisés, image mining, reconnaissance d'images, text mining, analyse des réseaux sociaux, traitement des gros volumes de données, data science
Fiche de lecture : Big Data, Machine Learning et Apprentissage Profond

Deep Learning avec Keras sous Knime

$
0
0
"En dehors de R et Python, point de salut alors pour le deep learning ?" me demande, un brin inquiet, un internaute. J'ai compris quand j'ai voulu le rediriger vers d'autres langages (Java, C++) qu'il était surtout réfractaire à la programmation. Sa vraie question était plutôt de savoir s'il était possible d'exploiter les librairies de deep learning, comme le fameux tandem tensorflow / keras par exemple, sans passer par le codage informatique.

La réponse est oui. Dans ce tutoriel, nous verrons comment installer et rendre exploitables ces librairies dans le logiciel Knime, un de mes outils libres favoris pour la data science. Les opérations usuelles de manipulation de données, de modélisation et d'évaluation sont représentées par un "workflow" où les traitements sont symbolisés par des composants (nodes), et l'enchaînement des traitements par les liens entre ces nœuds. On parle alors de "programmation visuelle", moins traumatisante que l'écriture de ligne de code. Pour ce qui est de Knime, plus qu'une simple succession d'opérations, il s'agit bien de programmation puisqu'il est possible de définir des structures algorithmiques telles que les actions conditionnelles, des boucles, et même des fonctions sous forme de meta-nodes regroupant des actions.

Mots-clés : Knime, deep learning, tensorflow, keras, perceptron simple et multicouche, analyse prédictive
Didacticiel : Keras sous Knime
Données et workflow Knime : Keras workflow
Références :
Knime - Keras Integration -- https://www.knime.com/deeplearning/keras
Tutoriel Tanagra, "Deep Learning - Tensorflow et Keras sous R", avril 2018.
Tutoriel Tanagra, "Deep Learning avec Tensorflow et Keras (Python)", avril 2018.

Réseaux de neurones convolutifs sous Knime

$
0
0
Ecrire un tutoriel sur l'utilisation des réseaux de neurones convolutifs (CNN - Convolutional Neural Networks) - un des représentants les plus fameux du deep learning - pour le classement d'images me titillait depuis un moment déjà. Mais il y a tellement de choses à lire et à écrire que je repoussais sans cesse. La lecture récente du dernier ouvrage de Stéphane Tufféry (Tufféry, 2019) et la découverte des composants de deep learning sous KNIME (Keras, Tensorflow) m'ont poussé à me lancer.

Il existe de nombreux didacticiels en ligne, notamment sur l'utilisation des CNN en Python sur des bases qui font référence telles que MNIST ou "Cats and Dogs". Stéphane dans son ouvrage effectue les mêmes analyses, mais sous R. Ça ne sert à rien de les réitérer. Mon idée était de me démarquer en proposant une étude simplifiée sur une base moins usitée, en schématisant les étapes autant que possible, et en réalisant l'ensemble des traitements sans écrire une seule ligne de code. Je suis R et Python addict, entendons-nous bien, mais varier les plaisirs ne peut pas faire de mal. KNIME convient parfaitement dans ce cadre.

Mots-clés : deep learning, image mining, catégorisation d'images, réseau de neurones à convolution, car detection dataset, keras, tensorflow
Workflow Knime : Car detection - Knime
Références :
Knime - Keras Integration -- https://www.knime.com/deeplearning/keras
Tutoriel Tanagra, "Deep Learning avec Keras sous Knime", juillet 2019.
Tutoriel Tanagra, "Image mining avec Knime", juin 2016.

Performances des boucles sous R

$
0
0
J'assure mon cours de "Programmation R" en Master à cette époque de l'année. Lorsque j'aborde la question des boucles, je dis traditionnellement que ce n'est pas une bonne idée, le temps d'exécution étant souvent prohibitif. Je conseille aux étudiants de modifier leur code de manière à exploiter les aptitudes des fonctions de la famille des apply. Nous réalisons ensuite une série d'exercices pour voir comment ce type d'adaptation pourrait se mettre en place.

J'ai dû relativiser cette affirmation dans la période récente, parce que l'interpréteur R a énormément progressé avec les versions 3.4.0 puis 3.5.0. Depuis la 3.4.0 notamment, les boucles sont maintenant compilées à la volée (just-in-time), améliorant considérablement les temps de traitement sans que l'on ait à modifier en quoique ce soit notre code.

J'avais par le passé étudié les outils et astuces pour programmer efficacement sous R. Dans ce tutoriel, nous nous pencherons plus en détail sur la question des boucles en comparant les performances de la structure for() avec une solution passant par un sapply(). Je prendrai comme prétexte la programmation de l'algorithme de tri par sélection pour illustrer mon propos.

Mots-clés : logiciel R, langage R, programmation, sapply, boucles
Didacticiel : Boucles sous R
Code source : Loop in R
Références :
R. Rakotomalala, "Cours de Programmation R".
Tutoriel Tanagra, "Programmer efficacement sous R", février 2019.

Machine Learning - Outils pour l'enseignement

$
0
0
Je dois intervenir ce vendredi 18 octobre 2019 au séminaire de la SFDS consacré au "Machine Learning appliqué à l'Agro-Industrie". Je parlerai surtout des outils que je préconise et que j'utilise moi-même pour mes enseignements en lien avec la data science dans nos formations. Au préalable, j'essaie de cerner le phénomène "machine learning". Il constitue un terreau de nouvelles applications qui nécessitent des nouvelles fonctionnalités des outils. Lesquels doivent dépasser les attendus des "simples" logiciels de stats que nous connaissons depuis bien longtemps déjà.

Ma démonstration aboutit un peu à une ode à R et Python quand-même. Mais bon, reconstruire les évidences est parfois instructif m'a-t-on dit. Prendre du recul permet de remettre en perspective nos choix et nos décisions. Dans le cas de ces deux logiciels, au-delà des aspects pédagogiques et de leurs aptitudes, leur forte pénétration dans les entreprises et, de ce fait, leur présence explicite dans les offres d'emplois qui ciblent nos étudiants, sont des éléments d'appréciation primordiaux qui n'étaient pas évidents il y a quelques années encore, lorsqu'on parlait de logiciels libres dans le domaine du machine learning et de la data science. De même, l'ouverture vers la programmation qu'offre ces outils se révèle décisive dans la formation de nos étudiants. Nous pouvons ainsi doubler la compétence en traitements avec la capacité à produire du code performant.

Pour illustrer mon propos, je décrirai quelques projets réalisés par mes étudiants dans le cadre académique du Master SISE. Leur savoir-faire allié à l'efficacité opérationnelle de R et Python leur permettent de réaliser des véritables prouesses en temps réduit.

Support de l'intervention : Slides Machine Learning - Outils
Mots-clés : logiciel R, Python, machine learning, formation, master data science, science des données, big data analytics, logiciels libres

Ateliers Master SISE : logiciel SAS

$
0
0
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

Python Machine Learning avec Orange

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

Ateliers Master SISE : logiciel SAS

$
0
0
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

JIT compilation sous Python

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

Discrétisation supervisée rapide

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

Deep learning : les auto-encodeurs

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

Auto-encodeur avec Keras sous Python

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

Deep learning avec PyTorch sous Python

$
0
0
Dans ce document, nous nous attelons à l'instanciation, l'apprentissage et l'évaluation de perceptrons simples et multicouches avec PyTorch. Nous travaillons à partir d'un fichier de données que nous devons importer et préparer au préalable. Toutes les étapes seront détaillées. J'insisterai sur la manipulation des "tensor", le format de vecteurs et matrices qu'utilise la librairie pour ses manipulations internes. Je m'attarderai également sur la construction un peu particulière des réseaux qui nécessite une connaissance (très basique, n'exagérons rien) des mécanismes de classes (l'héritage et la surcharge des méthodes) sous Python.

Mots-clés : deep learning, perceptron simple et multicouche, réseau de neurones, pytorch, python
Didacticiel : PyTorch for deep learning
Code source + données : Breast PyTorch
Références :
PyTorch, https://pytorch.org/
Tutoriel Tanagra, "Deep learning : perceptrons simples et multicouches", novembre 2018.

Deep learning : l'algorithme Word2Vec

$
0
0
Le prolongement lexical ou word embedding est une technique de text mining qui permet de décrire les termes d'un corpus à l'aide d'un vecteur de valeurs numériques (de taille paramétrable), de manière à ce que les termes qui apparaissent dans des contextes similaires soient proches (au sens d'une distance quelconque, la distance cosinus par exemple).

Dans ce support,  je présente la méthode word2vec basée sur un algorithme de deep learning (réseau de neurones multicouche). Elle traduit la notion de contexte par le voisinage des mots dont on peut moduler l'amplitude. De la description des termes, nous pouvons dériver une description matricielle des documents, tableau de données à partir de laquelle nous pouvons appliquer les techniques usuelles de machine learning (catégorisation, clustering, etc.).

Mots-clés : word embedding, prolongement de mots, prolongement lexical, word2vec, text mining, réduction de la dimensionnalité, deep learning
Support de cours : Word2Vec – Deep Learning
Références :
Tomas Mikolov, Kai Chen, Greg Corrado, and Jeffrey Dean. "Efficient Estimation of Word Representations in Vector Space." In Proc. of Workshop at ICLR. (Sep 2013).

Word2Vec avec H2O sous Python

$
0
0
Ce tutoriel fait suite au support de cours consacré au prolongement lexical (word embedding) où nous avions étudié l'algorithme "Word2Vec" dans le cadre de la fouille de textes (text mining ; on parle aussi de NLP, natural language processing). Nous mettons en œuvre la technique sur un jeu de données jouet tiré de l'ouvrage de Coelho et Richert (2015). Le premier objectif est de représenter les termes du corpus dans un espace de dimension réduite en les contextualisant c.-à-d. en tenant compte de leur voisinage. Le second consiste à calculer les coordonnées des documents pour apprécier leurs proximités dans ce nouvel espace de représentation ainsi défini.

Nous nous appuyons sur la librairie H2O pour Python. Nous l'avions déjà exploré à plusieurs reprises précédemment (par ex. "Machine Learning avec H2O", janvier 2019). L'enjeu dans notre contexte est de savoir préparer correctement le corpus pour que l'on puisse faire appel aux fonctions dédiées. Cette tâche est quand-même assez particulière sous H20. Nous y porterons toute notre attention – de la manière la plus didactique possible, voire scolaire – pour ne pas perdre le lecteur en route.

Mots-clés : word2vec, word embedding, prolongement des mots, prolongement lexical, deep learning, python, package h2o, package nltk, text mining, nlp
Didacticiel : Word2Vec avec H2O
Code source + données : H2O + NLTK - Prog. Python
Références :
Tutoriel Tanagra, "Deep learning : l'algorithme Word2Vec", décembre 2019.

Implémentation du Naive Bayes sous R

$
0
0
J'ai fait travailler mes étudiants sur la programmation sous R du classifieur bayésien naïf récemment. Schématiquement, la méthode est relativement simple à implémenter, surtout lorsque toutes les variables explicatives sont qualitatives. Il en est de même lorsqu'elles sont toutes quantitatives. Il y a en revanche des choix stratégiques à mettre en place lorsqu'elles sont mixtes. Je pensais que la principale difficulté viendrait de cette partie. Non en réalité. Je me suis rendu compte après coup que le principal écueil était de développer une implémentation performante du déploiement, lorsque nous appliquons le modèle sur des individus supplémentaires. Parce que R possède des caractéristiques qui lui sont propres, les temps d'exécution peuvent varier dans des proportions très importantes selon notre habilité à en tirer profit.

Dans ce tutoriel, nous nous penchons sur la programmation des fonctions fit() - construction du modèle sur un jeu de données - et predict() - application du modèle en prédiction sur un jeu de données - du Naive Bayes. La variable cible est forcément qualitative. Nous nous en tiendrons au cas des variables explicatives qualitatives. L'objectif n'est pas de proposer une resucée du naive bayes. Plusieurs packages disponibles sur le CRAN s'en chargent très bien. Il s'agit surtout pour nous d'étudier l'impact des choix d'implémentation sur les temps d'exécution sous R.

Mots-clés : programmation R, logiciel R, modèle d'indépendance conditionnelle, naive bayes classifier, classification naïve bayésienne
Didacticiel : Naive Bayes sous R
Code source + Données : Heart - Large - Long
Références :
Tutoriel Tanagra, "Le classifieur Bayésien Naïf revisité", mars 2010.
Tutoriel Tanagra, "Programmer efficacement sous R", février 2019.
Viewing all 365 articles
Browse latest View live