• Aucun résultat trouvé

Matériel et choix techniques

2.2 Choix techniques

Pour notre étude, nous avons été confrontés à des choix quant au langage de programma-tion et aux différentes librairies à utiliser. En effet il existe plusieurs langages de programmaprogramma-tion et bon nombre d’entre eux sont mis à jour avec l’ajout des supports sur l’apprentissage auto-matique. Il est donc important de choisir judicieusement le langage à utiliser.

Parmi cette multitude de langages, il existe quatre qui se démarquent de par leur nombre d’utilisateurs, leur efficacité et les différentes fonctionnalités qu’ils offrent :

1. MATLAB (matrix laboratory) : c’est un environnement informatique numérique multi-paradigmes. MATLAB, langage de programmation propriétaire développé par MathWorks, permet des manipulations matricielles, le traçage de fonctions et de données, la mise en œuvre d’algorithmes, la création d’interfaces utilisateur et l’interfaçage avec des pro-grammes écrits dans d’autres langages, notamment C, C ++, C#, Java, Fortran et Python.

Avantages:

• plate-forme mathématique et informatique la plus rapide, en particulier pour les opé-rations vectorisées / algèbre à matrice linéaire ;

• très courts scripts en considérant la forte intégration de tous les paquets ;

• meilleure visualisation des figures et des graphiques interactifs ;

• bien testé et supporté car c’est un produit commercial.

Inconvénients:

• impossible d’exécuter les scripts de façon autonome - ils doivent être traduits dans un autre langage ;

• prix d’acquisition de licence élevé ;

• mauvaise intégration avec d’autres langages ;

• mauvaise performance pour les boucles itératives.

2. Python: c’est un langage de programmation de haut niveau, interprété et utilisé pour la programmation à usage général. Créé par Guido van Rossum et publié pour la première fois en 1991, Python repose sur une philosophie de conception qui met l’accent sur la lisi-bilité du code, en utilisant notamment des espaces significatifs. Il fournit des constructions permettant une programmation claire à petite et grande échelle.

Avantages:

• idéal pour la programmation générale et le développement d’applications ;

• beaucoup de paquets Open Source (Pandas, Numpy, Scipy) ;

• peut être un langage utilisé pour connecter d’autres langages : R, C ++ et autres (python) ;

• La vitesse générale la plus élevée, en particulier dans les boucles itératives.

Inconvénients:

• erreurs silencieuses pouvant être très longues à retrouver (même avec les débogueurs visuels / IDE) ;

• plus de code requis pour les mêmes opérations que R ou MATLAB ;

• certains paquets ne sont pas compatibles avec d’autres ou contiennent des chevau-chements.

3. R: c’est un langage et un environnement pour l’informatique statistique et les graphiques.

Il s’agit d’un projet GNU similaire au langage et environnement S développé par John Chambers et ses collègues aux laboratoires Bell (anciennement AT&T, maintenant Lucent Technologies). R peut être considéré comme une implémentation différente de S. Il existe quelques différences importantes, mais une grande partie du code écrit pour S fonctionne sans modification sous R.

Avantages:

• vitesse de développement rapide (60% de lignes en moins par rapport au python, environ 500% de moins que C) ;

• beaucoup de paquets Open Source ;

• peut s’intégrer dans du C++/C avec rcpp ;

• plus grande communauté.

Inconvénients:

• lent par rapport à Python en particulier dans les boucles itératives et les fonctions non vectorisées ;

• mauvais tracé de figure par rapport à Python et des difficultés à mettre en œuvre des graphiques interactifs ;

• capacités limitées pour créer des applications autonomes.

4. Octave : Octave est en quelque sorte la réponse de GNU au langage commercial MAT-LAB. Il s’agit d’un langage de manipulation de matrice et sa syntaxe est compatible à en-viron 95% avec MATLAB. C’est un langage conçu par les ingénieurs, et donc très chargé en routines couramment utilisées par ces derniers. Il comporte de nombreuses routines d’analyse de séries chronologiques, de statistiques, de commandes de fichiers et de com-mandes de traçage du langage MATLAB.

Avantages:

• beaucoup de paquets et tant qu’un programme ne nécessite pas de sortie graphique, il y a de bonnes chances qu’il s’exécute sous Octave comme sous Matlab sans de considérables modifications ;

• Octave utilise GNU Plot ou JHandles en tant que progiciels graphiques, ce dernier étant en quelque sorte plus proche de ce que fournit Matlab.

Inconvénients:

• juste une version libre et gratuite de MATLAB qui n’apporte pas beaucoup de nou-veautés.

De même une étude menée par KDNuggets [28] auprès de ses utilisateurs sur les outils les plus utilisés dans les sciences de données entre 2016 et 2018 a donné les résultats présentés dans la figure 2.1.

FIGURE2.1 – KDnuggets Analytics / Data Science 2018. Sondage sur les logiciels : les principaux outils en 2018 et leur part dans les sondages 2016-7 [28]

La figure 2.1 nous montre ainsi que depuis 2017, Python avec ses différents avantages est l’outil le plus utilisé pour le Machine Learning à la vue des différentes possibilités qu’il offre.

Notre choix après ces différentes analyses s’est donc porté sur lui en tant qu’outil principal pour mener à bien notre étude.

En outre, il existe plusieurs distributions, paquets et modules conçus pour Python facilitant l’utilisation des concepts clés de l’apprentissage automatique. Listés sur la figure 2.1, ils se sont avérés importants dans notre étude. Il s’agit de :

Anaconda[24] : c’est une distribution libre et gratuite des langages de programmation Py-thon et R ainsi que de nombreux autres outils tels que spyder (un environnement de déve-loppement intégré abrégé EDI en français pour écrire du code en python), matplotlib (pour visualiser des données à travers les courbes) pour les applications liées à la science des données et à l’apprentissage automatique (traitement de données à grande échelle, analyse prédictive, calcul scientifique). Il vise à simplifier la gestion et le déploiement d’applications relatives à cette dernière.

Tensorflow[25] : est un framework de programmation pour le calcul numérique qui a été rendu Open Source par Google en Novembre 2015. TensorFlow n’a cessé de gagner en popula-rité, pour devenir très rapidement l’un des frameworks les plus utilisés pour le deep learning et donc les réseaux de neurones. Son nom est notamment inspiré du fait que les opérations courantes sur des réseaux de neurones sont principalement faites via des tables de données multi-dimensionnelles, appelées Tenseurs (Tensor). Un Tenseur à deux dimensions est

l’équi-valent d’une matrice. Aujourd’hui, les principaux produits de Google sont basés sur Tensor-Flow ( Gmail, Google Photos, Reconnaissance de voix) ; sa documentation très riche fait d’elle une bibliothèque facile à utiliser.

Keras[26] : est une API de réseaux de neurones de haut niveau, écrite en Python et capable de fonctionner sur TensorFlow ou Theano. Il a été développé en mettant l’accent sur l’expéri-mentation rapide. Être capable d’aller de l’idée à un résultat avec le moins de délai possible est la clé pour faire de bonnes recherches. Il a été développé dans le cadre de l’effort de recherche du projet ONEIROS (Open-ended Neuro-Electronic Intelligent Robot Operating System), et son principal auteur et mainteneur est François Chollet, un ingénieur Google. En 2017, l’équipe Ten-sorFlow de Google a décidé de soutenir Keras dans la bibliothèque principale de TenTen-sorFlow.

Chollet a expliqué que Keras a été conçu comme une interface plutôt que comme un cadre d’apprentissage end-to-end. Il présente un ensemble d’abstractions de niveau supérieur et plus intuitif qui facilitent la configuration des réseaux neuronaux.

Scikit-learn[27] : est une bibliothèque libre Python dédiée à l’apprentissage automatique. Il est développé par de nombreux contributeurs notamment dans le monde académique par des instituts français d’enseignement supérieur et de recherche comme Inria et Télécom ParisTech.

Il comprend notamment des fonctions pour estimer des forêts aléatoires, des régressions logis-tiques, des algorithmes de classification, et les machines à vecteur de support. Il est conçu pour s’harmoniser avec d’autres bibliothèques libre Python, notamment NumPy et SciPy.

Conclusion

Dans ce chapitre nous avons fait la synthèse du matériel aussi bien physique que logiciel que nous avons utilisé dans notre étude. Nous y avons aussi présenté les raisons qui nous ont poussé à faire certains choix techniques dans le choix des outils nécessaires pour cette étude.

Chapitre 3

Documents relatifs