dimanche 13 janvier 2019

Stacking avec R

Ce tutoriel fait suite au support de cours consacré au stacking. L'idée, rappelons-le, est de faire coopérer des modèles en prédiction en espérant que les erreurs se compenseront. L'ensemble serait alors plus performant que les modèles sous-jacents qui le composent, pris individuellement. A la différence du boosting ou du bagging, nous créons les classifieurs à partir de la même version des données d'entraînement (sans pondération ou autres modifications), la diversité nécessaire à la complémentarité provient de l'utilisation d'algorithmes de familles différentes. Dans les exemples que nous explorerons, le pool comprendra un arbre de décision, une analyse discriminante linéaire, et un SVM avec un noyau RBF. On peut penser que ces approches possèdent des caractéristiques suffisamment dissemblables pour qu'en classement, elles ne soient pas constamment unanimes (si les modèles sont unanimes, les faire coopérer ne sert à rien).

Nous étudierons le stacking de deux manières dans ce document. Dans un premier temps, nous programmerons à partir de zéro les différentes manières de combiner les modèles (vote ‘'hard'', vote ‘'soft'', métamodèle). Au-delà du plaisir à le faire, l'objectif est de décortiquer les étapes pour s'assurer la bonne compréhension des approches. Ensuite seulement, dans un deuxième temps, nous utiliserons les outils spécialisés (caretEnsemble, H2O). Le fait de détailler les opérations précédemment permettra de mieux appréhender les paramètres et les opérations préalables que nécessitent l'appel des fonctions dédiées au stacking dans ces packages.

Mots-clés : stacking, stacked ensemble, modèles ensemblistes, logiciel R, caretEnsemble, h2o, arbre de décision, analyse discriminante linéaire, svm, noyau rbf
Didacticiel : Stacking avec R
Données et programme R : spambase + prog. R
Références :
Wolpert D., "Stacked Generalization", Neural Networks, 5:241:259, 1992.

mardi 8 janvier 2019

Stacking

Combiner des modèles prédictifs pour les rendre collectivement plus performants est une idée qui a largement fait son chemin auprès des data scientists. Les approches bagging, boosting, sont souvent mises en avant. Elles reposent sur le principe de l'application du même algorithme d'apprentissage sur différentes variantes des données (ex. par pondération des observations) de manière à obtenir un pool de classifieurs présentant une hétérogénéité satisfaisante.

Une autre piste existe. On peut s'appuyer sur la diversité des algorithmes eux-mêmes pour produire l'ensemble de classifieurs. On pourrait par exemple utiliser, un arbre de décision, une analyse discriminante linéaire et un support vector machine avec un noyau RBF. L'efficacité globale dépend alors de l'efficacité individuelle des modèles et de leur hétérogénéité (décorrélation si l'on se réfère à la terminologie de random forest).

Dans ce support, nous traçons les grandes lignes de l'approche. L'agrégation des modèles tient alors une place centrale. Elle peut reposer sur un vote simple ou pondéré. Elle peut aussi, et c'est le principe du stacking, être modélisé à partir des prédictions des classifieurs qui constituent le pool. On aurait alors un modèle de modèles, un métamodèle prédictif.

Mots-clés : ensemble de modèles, métamodèle, stacking, stacked ensemble, vote simple, vote pondéré, python, scikit-learn, h2o
Support de cours : Stacking - Diapos
Références :
H2O Documentation, "Stacked Ensembles".

vendredi 4 janvier 2019

Machine Learning avec H2O (Python)

H2O est une plate-forme JAVA de machine learning. Elle propose des outils pour la manipulation et la préparation de données, des algorithmes de modélisation, supervisées, non-supervisées ou de réduction de dimensionnalité. Nous pouvons accéder à ses fonctionnalités en mode client-serveur via différents langages de programmation avec le mécanisme des API (application programming interface). Nous nous appuierons sur Python dans ce tutoriel, mais nous aurions pu réaliser entièrement la même trame sous R.

Ce tutoriel comporte trois grandes parties : nous évaluerons son aptitude à paralléliser ses algorithmes d’analyse prédictive ; nous étudierons ensuite dans le détail ces approches supervisées, en regardant de près les (une partie des) paramètres et les sorties ; enfin, nous jetterons un oeil sur quelques outils additionnels de H2O, toujours pour le supervisé.

Mots-clés : h2o, python, régression logistique binaire, random forest, gradient boosting, perceptron simple et multicouche, deep learning, naive bayes, grid search, automl, stacking, stacked ensembles, validation croisée, échantillon de validation, multithreading, parallélisation, processeur multicœur
Didacticiel : Machine Learning avec H2O
Données et programme Python : H2O - Programme Python
Références :
H2O.ai -- http://docs.h2o.ai/h2o/latest-stable/h2o-docs/index.html

jeudi 3 janvier 2019

Bonne année 2019 - Bilan 2018

L'année 2018 s'achève, 2019 commence. Je vous souhaite à tous une belle et heureuse année 2019.

Un petit bilan chiffré concernant l'activité organisée autour du projet Tanagra pour l'année écoulée. L'ensemble des sites (logiciels, support de cours, ouvrages, tutoriels) a été visité 198.198 fois en 2018, soit 543 visites par jour.

Il y a une forte diminution de la fréquentation par rapport à l'année dernière (609 visites en 2017), dû en partie aux pannes répétées de notre serveur, avec en prime un blackout total de notre établissement pendant plus de 15 jours en août (je n'ai même pas pu lire mes e-mails). Je m'en excuse auprès des internautes qui, pendant plusieurs périodes, n'ont pas pu accéder aux documents. Peut-être qu'il est temps de migrer tout cela sur un support plus fiable comme GitHub par exemple mais, pour l'instant, vu le volume à déplacer, je ne me sens pas trop de le faire. Transférer plus de 15 ans de travail avec près de 500 documents représenterait une activité à plein temps qui pourrait durer des semaines, voire des mois. A voir.

Depuis la mise en place du compteur Google Analytics (01 février 2008), le groupe de sites a été visité 2.531.569 fois, soit 630 visites par jour en plus de 10 ans.

Les visiteurs viennent en majorité de la France (52%), du Maghreb (16%) et de l'Afrique francophone. Les pages de supports de cours ont toujours autant de succès, en particuliers ceux dédiés à la Data Science et à la programmation (R et Python).

29 documents supplémentaires (supports de cours, tutoriels) ont été postés cette année, tous en français.

En cette nouvelle année, je souhaite le meilleur à tous les passionnés de Data Science, de Statistique et d'Informatique.

Ricco.