You are on page 1of 711
Wire cctelma ti: avec he onic Brel Tener MUO Cie == Petree ET St- Leela) Le big data ¢ Coder en R avec RStudio » Python et Anaconda « Les modeles linéaires et les réseaux de neurones « Les machines a vecteurs de support John Paul Mueller Luca Massaron - Le machine learning avec Python INTERACTIVE Sommaire Introduction XVIL A propos de ce livre XVII Quelques suppositions un peu folles XVIIL Et maintenant... XIX Livre 1 Le machine learning Partie 1 Découvrir comment les machines apprennent Chapitre 1 La véritable histoire de Uintelligence artificielle (IA) 5 Aller au-dela du battage publicitaire 6 Le réve de moutons électriques 7 Comprendre Uhistoire de (1A et de lapprentissage automatique 8 Explorer ce que lapprentissage automatique peut faire pour lIA..... 9 Considérer les objectifs de lapprentissage automatique 10 Définir les limites de lapprentissage automatique en fonction du matériel 10 Surmonter les fantasmes de UIA 12 Découvrir les utilisations & la mode de (‘IA et de Lapprentissage automatique . 13 Considérer les vraies utilisations de [IA et de (apprentissage automatique as 4 Etre utile, étre banal 16 A propos des relations entre IA et apprentissage automatique 7 Considérer les spécifications de UIA et de U'apprentissage automatique 18 Définir la frontiére entre art et ingénierie 19 Chapitre 2 Lapprentissage a U'ére du big data 21 Définir le big data 22 Considérer les sources de big data 26 Créer une nouvelle source de données 24 Utiliser des sources de données existantes 27 Localiser des sources de données de test. 28 A propos du réle des statistiques dans U'apprentissage automatique 28 Comprendre le réle des algorithmes hae. 30) Définir ce que font les algorithmes Considérer les cing techniques principales Définir ce que signifie 'entrainement Chapitre 3 Jeter un regard vers l'avenir Créer des technologies utiles pour le futur Considérer le rdle de 'apprentissage automatique dans le domaine des robots. Utiliser 'apprentissage automatique dans le domaine de la santé Créer des systémes intelligents pour différents besoins Utiliser Capprentissage automatique en milieu industriel Comprendre le réle des processeurs et d'autres matériels Découvrir les nouvelles possibilités d'emploi grace a Uapprentissage automatique Travailler pour une machine Travailler avec des machines fied se tiotws. sefid..... Réparer des machines Créer de nouvelles taches d'apprentissage automatique Concevoir de nouveaux environnements d'apprentissage automatique Eviter les piéges potentiels des technologies du futur. Partie 2 Préparer vos outils pour Uapprentissage automatique Chapitre 4 Installer une distribution R Choisir une distribution R avec Uapprentissage automatique en téte Installer R sous Windows. Installer R sous Linux. Installer R sous Mac OS X/macOS. Télécharger les jeux de données et le code des exemples Comprendre les jeux de données utilisés dans ce livre Définir le dépét du code Chapitre 5 Coder en R a l'aide de RStudio Comprendre les types de données de base Travailler avec les vecteurs Organiser des données & Uaide de listes Travailler avec des matrices Créer une matrice de base Modifier la disposition des vecteurs Le machine learning avec Python pour les Nuls . 30 30 33 35 36 37 38 38 39 40 AL Al 42 43 44 44 45 51 52 53 62 64 66 67 68 Accéder aux éléments individuels Nommer les lignes et les colonnes Des dimensions multiples a l'aide des tableaux Créer un tableau de base Nommer les lignes et les colonnes Créer un data frame Comprendre les facteurs Créer un data frame de base Interagir avec les data frames Développer un data frame Exécution de taches statistiques de base Prendre des décisions Travailler avec des boucles Exécuter des taches en boucle sans boucles .... Travailler avec les fonctions Trouver la moyenne et la médiane Tracer un graphique & partir de vos données Chapitre 6 Installer une distribution Python ; Choisir une distribution Python avec Uapprentissage automatique en téte Obtenir Continuum Analytics Anaconda Obtenir Canopy Express..........0.ccccscseceeeeecee Obtenir pythonxy Obtenir WinPython Installer Python sous Linux Installer Python sous Mac OS X/macOS. Installer Python sous Windows Télécharger les jeux de données et le code des exemples .. Utiliser Jupyter Notebook Définir le dépét du code Comprendre les jeux de données utilisés dans ce livre Chapitre 7 Coder en Python avec Anaconda Travailler avec les nombres et la logique Effectuer des affectations dans des variables Faire des calculs arithmetiques Comparer des données a l'aide d’expressions booléennes Créer et utiliser des chaines de caractéres Interagir avec les dates Créer et utiliser des fonctions. Créer des fonctions réutilisables Sommaire 101 101 103 103 104 105 107 1 112 114 120 123 124 126 127 128 132 133 134 135 vu Appeler des fonctions Travailler avec des variables globales et locales Utiliser des instructionsconditionnelles et des boucles Prendre des décisions a l'aide de instruction if Choisir entre plusieurs options & aide de décisions imbriquées Exécuter des taches répétitives en utilisant for Utiliser Uinstruction while Stocker des données a Uaide d’ensembles, de listes et de tuples Créer des ensembles Effectuer des opérations sur les ensembles Créer des listes. Créer et utiliser des tuples Définir des itérateurs utiles Indexer des données a l'aide de dictionnaires Stocker du code dans des modules Chapitre 8 Explorer d'autres outils d’apprentissage automatique Ala rencontre des précurseurs : SAS, Stata et SPSS Apprendre avec Weka Accéder facilement a des algorithmes complexes a l'aide de LIBSVM Courir aussi vite que la lumiére avec Vowpal Wabbit Visualiser avec Knime et RapidMiner Traiter des données massives a l'aide de Spark Partie 3 Débuter avec les bases mathématiques de Uapprentissage automatique Chapitre 9 Démystifier les mathématiques derriére l'apprentissage automatique Travailler avec des données Créer une matrice Comprendre les opérations de base Effectuer une multiplication matricielle Un mot sur les opérations matricielles avancées Utiliser efficacement la vectorisation. Explorer le monde des probabilités. Travailler avec les probabilités Améliorer le hasard avec le théoréme de Bayes Décrire l'utilisation des statistiques Vill Le machine learning avec Python pour les Nuls 136 139 140 140 141 142 143 144 144 145 146 148 149 151 151 155 156 = 159 160 161 162 163 167 168 170 173 173 176 177 180 181 182 186 Chapitre 10 Descendre la bonne courbe. Interpréter Uapprentissage en termes d’ optimisation Apprentissage supervisé Apprentissage non supervisé Apprentissage par renforcement Le processus d'apprentissage Explorer les fonctions de coats Descendre la courbe d’erreur Mise a jour par mini-lot et en ligne Chapitre 11 Valider U'apprentissage automatique Verifier les erreurs d’échantillonnage Rechercher la généralisation Apprendre a connaitre les limites des biais Garder a Uesprit la complexité du modale Conserver des solutions équilibrées. Représenter des courbes d’apprentissage Entrainement, validation et test Recourir a la validation croisée Ala recherche de solutions de rechange pour la validation Optimiser les choix de la validation croisée Explorer Uespace des hyperparamétres Eviter les biais d’échantillonnage et les piéges de fuite des données Attention au snooping ! Chapitre 12 Débuter avec des apprenants simples Découvrir Uincroyable Perceptron A deux pas du miracle ? Toucher aux limites de la non-séparabilité Cultiver des arbres de classification gloutons. Prévoir les résultats en partageant les données Apprendre a élaguer les arbres Prendre un virage probabiliste..... Comprendre le bayésien naif. Estimer la réponse avec U'algorithme bayésien naif Partie 4 Apprendre du big data (avec intelligence) Chapitre 13 Prétraiter les données........... Collecter et nettoyer les données Sommaire 189 190 190 191 191 192 196 198 200 207 208 211 214 215 217 219 220 222 224 225 227 228 231 232 232 235 237 237 242 243 264 247 255 256 Réparer les données manquantes identifier les données manquantes Choisir la bonne stratégie de emplacement Transformer les distributions Créer vos propres caractéristiques Comprendre la nécessité de créer des caractéristiques Créer automatiquement des caractéristiques........... Compresser les données Délimiter les données anomales Chapitre 14 Tirer parti de la similarité Mesurer la similarité entre vecteurs Comprendre la similarité Calcul des distances pour lapprentissage er des distances pour localiser les clusters Vérifier les hypothéses et les attentes Inspecter les engrenages de lalgorithme Ajuster Ualgorithme des K-moyennes Expérimenter la fiabilité des K-moyennes Expérimenter la convergence des centroides Rechercher une classification avec les K-plus proches voisins Exploiter le parametre K correct Comprendre le parametre k Expérimenter avec un algorithme flexible Chapitre 15 Travailler avec des modéles linéaires, la méthode facile Commencer a combiner des variables. Mélanger des variables de différents types Passer aux probabilités. Spécifier une réponse binaire Gérer plusieurs classes Deviner les bonnes caractéristiques. Le cas des caractéristiques qui ne fonctionnent pas ensemble Résoudre le probl&me du surapprentissage en utilisant la sélection Apprendre a raison d’un échantillonnage a la fois Utiliser la descente de gradient .. Comprendre en quoi SGD est différent Chapitre 16 Un monde de complexité avec les réseaux de neurones Apprendre de la nature et Uimiter Aller de Uavant avec le feed-forward. x Le machine learning avec Python pour les Nuls 257 258 259 263 265 266 268 271 277 278 278 281 282 284 286 287 293 294 294 296 301 302 309 313 316 317 317 318 320 321 322 ..327 328 329 Aller encore plus loin dans le terrier du Lapin Revenir en arrigre avec la rétropropagation Lutter contre le surapprentissage Comprendre le probléme Ouvrir la boite noire Introduction au deep learning Chapitre 17 Aller plus loin avec les machines a vecteurs de support Revisiter le probléme de la séparation : une nouvelle approche Explication de Ualgorithme Les SVM et les mathématiques qui les sous-tendent Eviter les piéges de Uinséparabilité Appliquer la non-linéarité Démonstration de l'astuce du noyau par 'exemple Découvrir les différents noyaux lustrer les hyperparametres Classifier et estimer avec SVM Chapitre 18 Recourir a des ensembles d’apprenants S'appuyer sur les arbres de décision Cultiver une forét d'arbres Comprendre les métriques d'importance Travailler avec des suppositions presque aléatoires. Prédicteurs de bagging avec Adaboost Booster les prédicteurs. Nouvelle rencontre avec la descente de gradient Faire la moyenne de différents prédicteurs Livre 2 Python Partie 1 Débuter avec Python Chapitre 13 Parler a votre ordinateur Comprendre pourquoi vous voulez parler a votre ordinateur Oui, une application est une forme de communication Des procédures pour tous les jours .. Ecrire des procédures Les applications sont des procédures comme les autres Comprendre que les ordinateurs font les choses a la lettre Définir ce qu’est une application Comprendre que les ordinateurs utilisent un langage spécial. ‘Sommaire 332 336 339 340 341 344 348 349 352 355, 357 358 360 362 367 . 368 370 375 378 379 382 383 384 391 391 393 394 395, 395, 396 396 xl Aider les humains a parler 8 Cordinateur Comprendre pourquoi Python est si cool Quelques bonnes raisons de choisir Python Quelles organisations utilisent Python ? Trouver des applications Python utiles Comparer Python avec d'autres langages Chapitre 2 Obtenir votre propre copie de Python Télécharger la version dont vous avez besoin Installer Python Travailler avec Windows. Travailler avec le Mac Travailler avec Linux Accéder a Python sur votre machine Utiliser Windows Utiliser le Mac Utiliser Linux Tester votre installation Chapitre 3 Interagir avec Python Ouvrir la ligne de commandes Lancer Python Maitriser la ligne de commandes. Tirer profit des variables d’environnement Python Taper une commande Dire 8 Uordinateur ce qu'il doit faire Dire 8 Vordinateur que vous avez terminé Voir les résultats Obtenir de U'aide de Python Utiliser l'aide directe Demander de l'aide Quitter Laide Obtenir de l'aide directement Refermer la ligne de commandes Chapitre 4 Ecrire votre premiére application Comprendre environnement de développement intégré (IDLE) Lancer IDLE Utiliser des commandes standard Comprendre le codage des couleurs Obtenir de Uaide d’IDLE Configurer IDLE xil Le machine learning avec Python pour les Nuls 397 399 402 403 404 407 407 410 410 413 415 419 419 422 424 424 427 427 428 429 432 434 434 435 435 436 437 438 441 441 444 447 448 449 450 450 451 Créer U application 457 Ouvrir une nouvelle fenétre 457 Taper les commandes SAW... 458 Sauvegarder le fichier 5 460 j Exécuter application 460 Comprendre Uutilisation des indentations £25 be Ajouter des commentaires 464 Comprendre les commentaires 465 Utiliser des commentaires comme aide-mémoire..... 466 Utiliser des commentaires pour empécher du code de s'exécuter 466 Charger et exécuter des applications existantes 469 Utiliser UInvite de commandes ou une fenétre de terminal 469 Utiliser la fenétre d’édition. 470 Utiliser Python en mode Shell ou Ligne de commandes...... 470 Refermer IDLE an Partie 2 Apprendre la langue de Python Chapitre 5 Enregistrer et modifier des informations Enregistrer des informations. Considérer les variables comme des boites de rangement. . Utiliser la bonne boite pour enregistrer les bonnes données 476 Python et ses principaux types de données 477 Placer des informations dans des variables i a7 Comprendre les types numériques 478 Comprendre les valeurs booléennes 483 Comprendre les chaines de caractéres. 484 Travailler avec des dates et des heures 485 Chapitre 6 Gérer Uinformation 489 Contréler la maniére dont Python voit les données Z 490 Faire des comparaisons 490 Comprendre comment les ordinateurs effectuent des comparaisons ‘ 41 Travailler avec les opérateurs 491 Définir les opérateurs pod Comprendre ordre de priorité des opérateurs, 499 Créer et utiliser des fonctions. 500 Voir les fonctions comme des boites de rangement pour le code ...500 Comprendre la réutilisabilité du code 501 Définir une fonction 502 Sommaire XIll Accéder aux fonctions : Transmettre des informations aux fonctions Créer des fonctions avec un nombre variable d’arguments Renvoyer des informations depuis une fonction. Comparer les sorties de fonctions Interagir avec Uutilisateur .. Chapitre 7 Prendre des décisions Prendre des décisions simples avec Uinstruction if Comprendre Uinstruction if Utiliser Uinstruction if dans une application Choisir entre plusieurs alternatives avec l'instruction if...else. Comprendre Uinstruction if...else Utiliser instruction if...else dans une application Utiliser Uinstruction if...elif dans une application Utiliser des décisions imbriquées. Utiliser des instructions if ou if...else multiples Combiner d'autres types de décisions Chapitre 8 Effectuer des taches répétitives Traiter des données en utilisant l'instruction for. Comprendre ‘instruction for Créer une boucle for simple Contréler l'exécution avec l'instruction break Contréler l'exécution avec l'instruction continue Contréler 'exécution avec la clause pass Contréler l'exécution avec la clause else Traiter des données avec U'instruction while Comprendre instruction while Utiliser Uinstruction while dans une application Imbriquer des boucles Chapitre 9 Les erreurs ? Quelles erreurs? Savoir pourquoi Python ne vous comprend pas Prendre en considération les sources d'erreurs Erreurs surgissant a un moment spécifique Distinguer les types d’erreurs Intercepter les exceptions Gérer les exceptions de base Gérer des exceptions en allant du plus spécifique au moins spécifique Imbriquer des exceptions XIV Le machine learning avec Python pour les Nuls 504 504 508 510 511 512 515 516 516 .517 523 523 523 524 528 528 544 547 551 552 554 554 556 558. 558 571 573 Lever des exceptions Lever des exceptions lors de conditions exceptionnelles Passer & Uappelant des informations sur une erreur Créer et utiliser des exceptions personnalisées Utiliser la clause finally........... Partie 3 Effectuer des taches courantes Chapitre 10 Interagir avec les modules. Créer des groupes de code Importer des modules Utiliser linstruction import Utiliser instruction from...import Trouver des modules sur le disque Voir le contenu d'un module Utiliser la documentation des modules de Python Ouvrir application pydoc Utiliser les liens d'acces rapide Taper un terme a rechercher Voir les résultats Chapitre 11 Travailler avec les chaines de caractéres Comprendre que les chaines sont différentes. Définir une chaine de caractéres en utilisant des nombres Utiliser des caractéres pour créer des chaines ... Créer des chaines comportant des caractéres spéciaux Sélectionner des caractéres individuels Trancher et couper les chaines de caractéres........... Localiser une valeur dans une chaine Formater les chaines de caractéres Chapitre 12 Gérer des listes Organiser les informations dans une application Définir une organisation a Laide de listes, Comprendre comment les ordinateurs voient les listes Créer des listes PE IIR 0. 5 Bass cr sderenitinoiveeontiereess Parcourir les listes. Modifier des listes Faire des recherches dans les listes...........0 occ Trier des listes Travailler avec U objet Counter Sommaire 578 578 579 580 582 589 590 591 593 594 597 600 604 604 606 606 608 611 612 613 615 617 619 623 625 631 632 632 633 635 637 639 639 645 647 649 Chapitre 13 Collecter toutes sortes de données Comprendre les collections Travailler avec les tuples Travailler avec les dictionnaires Créer et utiliser un dictionnaire. Remplacer Uinstruction switch par un dictionnaire Créer des piles en utilisant des listes.. Travailler avec les files Travailler avec des deques . Chapitre 14 Créer et utiliser des classes. Comprendre les classes. Les classes et leurs composants Créer la définition d'une classe Les classes et leurs attributs intégrés Travailler avec les constructeurs Travailler avec les variables. 2 Utiliser des méthodes avec des listes d’arguments variables Surcharger les opérateurs Créer une classe Utiliser la classe dans une application Etendre des classes pour en créer de nouvelles Construire la classe enfant Tester la classe dans une application Index Le machine learning Index Python XVI Le machine learning avec Python pour les Nuls 653 653 655 658 659 664 666 671 673 677 678 679 680 681 686 .687 692 693 696 697 699 699 701 703 711 Introduction L: but principal de ce livre divisé en deux livres distincts est de vous aider a comprendre ce que l’apprentissage automatique peut et ne peut pas faire pour vous aujourd’hui, et ce qu’il pourrait faire pour vous dans l’avenir. Vous n’avez pas besoin d’étre un informati- cien pour utiliser ce livre, méme s’il contient de nombreux exemples de codage. En fait, vous pouvez venir de n’importe quelle discipline mettant fortement l’accent sur les mathématiques, car c’est ainsi que ce livre se concentre sur la question de l’apprentissage automatique. Au lieu de traiter d’abstractions, vous voyez les résultats concrets de Putilisation d’algorithmes spécifiques pour interagir avec le big data de maniere particuliére afin d’obtenir un résultat certain et utile. L’accent est mis sur ce qui est utile parce que l’apprentissage automatique a le pouvoir d’effectuer un large éventail de taches d’une maniére jamais ‘vue auparavant. Dans le second livre, vous découvrirez quel est le langage de program- mation qui vous permet d’écrire rapidement des applications fonction- nelles et utilisables sur pratiquement n’importe quelle plate-forme? Vous donnez votre langue au chat? Oui, c’est Python. Ce qu’il y a de merveilleux avec Python, c’est effectivement que vous pouvez réelle- ment écrire une application sur une plate-forme, et l’utiliser sur n’im- porte quelle autre plate-forme (a condition bien siir qu’elle ne soit pas totalement exotique). Contrairement a d’autres langages de program- mation, Python ne fait pas que faire des promesses : il les tient. Et, dans ce cas, le résultat vaut la promesse. Python propose un code lisible et une syntaxe concise qui vous permet @écrire des applications qui nécessitent moins de code que d’autres langages. De plus, il est utile dans toutes sortes de domaines. Certains le voient uniquement comme un langage de script, mais il vaut en ré- alité bien plus que cela. A propos de ce livre Ce livre utilise quelques conventions : » Le texte que vous étes supposé taper au clavier est imprimé en caractéres gras. D’accord, lorsque vous devez suivre une liste @étapes, dont le texte est déja mis en caractéres gras, le texte & taper restera tel quel. Xvi VIL » Si vous voyez des caractéres en italiques dans une séquence que vous devez saisir, cela signifie que vous devez les remplacer par quelque chose de plus personnel. Exemple : « Tapez Votre nom et appuyez sur Entrée >». Remplacez alors Votre nom par votre propre nom (ou par un autre, d’ailleurs). » Les adresses Web apparaissent dans une police particuliére. C’est juste pour ne pas les confondre avec autre chose. En fait, c’est a peu prés tout, et donc vous pouvez constater qu’il n’y a tien de particuliérement compliqué dans ces conventions. Quelques suppositions un peu folles Nous allons aussi supposer que vous savez un certain nombre de choses sur l’Internet. En fait, vous trouverez dans ce livre de nombreuses ré- férences en ligne qui vous aideront développer vos connaissances. Mais, comme il se doit, ces sources d’information ne vous seront utiles que si vous étes capable de les trouver. De plus, ces sources sont essen- tiellement en anglais. Une bonne pratique de la langue de nos amis an- glo-saxons est donc un prérequis auquel vous ne pourrez pas échapper. Ic6énes utilisées dans ce livre Cette section décrit les icénes intéressantes (ou pas) que vous allez rencontrer dans ce livre : Ces trucs et astuces sont utiles pour vous faire gagner du temps ou pour effectuer rapidement certaines taches. Certaines pointent également vers des ressources que vous devriez essayer pour tirer le maximum de profit de Python. Je ne veux pas donner l’impression d’étre un vieux grincheux, mais vous devriez éviter de faire ce qui est signalé par cette icéne. Sinon, il se pourrait bien que votre application n’entraine que confusion chez vos utilisateurs, qui ne seront plus vos utilisateurs puisqu’ils refuseront de se servir de votre application... Cette icdne signale des informations ou des techniques avancées. Si cela vous ennuie, passez a la suite. Mais vous pouvez peut-étre aussi prendre le temps de les lire, pour le cas oit cela pourrait vous servir plus tard. Cette icéne est un rappel de ce que vous devriez retenir. Il s'agit généralement d’un processus important, ou encore d’une informa- Le machine learning avec Python pour les Nuls tion que vous devez connaitre pour pouvoir écrire des applications Python fonctionnelles et efficaces. Et maintenant... Bien entendu, vous pouvez ressaisir tous les exemples manuellement. Mais vous aurez certainement envie de les avoir a portée de main, sans taper une par une toutes les lignes de tous les exemples, avec tout ce que cela comporte de risque d’erreur. C’est pourquoi vous pouvez télé- charger les exemples de ce livre depuis l’adresse suivante : http://www. pourlesnuls. fr/ Cliquez tout en bas de la page sur le lien Téléchargements. Dans la page qui va s’afficher, cliquez sur le bouton Rechercher (la loupe) et saisissez le nom du livre, ou du moins le sujet principal (donc python dans ce cas). I ne vous reste plus qu’a localiser l'image de couverture de ce livre, puis a cliquer dessus. Dans le page de présentation, cliquez simplement sur le bouton Télécharger. Le fichier contenant le code des exemples est petit. Tout devrait donc aller trés vite. Et maintenant, bonne programmation avec Python! Introduction XIX Livre 1 Le machine learning Partie 1 Découvrir comment les machines apprennent Chapitre 1 La véritable histoire de U'intelligence artificielle (IA) L intelligence artificielle (IA) est un sujet d’actualité de plus en plus important grace au succés de technologies telles que Siri (http:// ww. apple.com/ios/siri/) et autres. Parler a votre smartphone est a la fois amusant et utile pour découvrir des choses comme |’emplacement du meilleur restaurant de sushis en ville ou pour trouver comment se rendre a la salle de spectacles. Lorsque vous parlez a votre smartphone, il en apprend davantage sur votre facon de vous exprimer et fait moins d’erreurs dans la compréhension de vos requétes. La capacité de votre smartphone a apprendre et a interpréter votre maniére particuliére de parler est un exemple d’IA, et une partie de la technologie utilisée pour y parvenir est l’apprentissage automatique. Vous faites probablement un usage limité de l’apprentissage automatique et de l’IA un peu par- tout aujourd’hui sans vraiment y penser. Par exemple, la capacité de parler & des appareils et de les faire réellement produire ce que vous voulez est un exemple d’apprentissage automatique au travail. De méme, les systémes de recommandation, tels que ceux d’Amazon, vous aident a effectuer vos achats en fonction de critéres tels que vos achats précédents de produits, ou proposer des produits qui complétent un choix actuel. L’utilisation de I’IA et de l’apprentissage automatique ne fera qu’augmenter avec le temps. Dans ce chapitre, vous allez explorer l’IA et découvrir ce qu’elle signifie de plusieurs points de vue, y compris comment elle vous affecte en tant que consommateur, mais aussi en tant que scientifique ou ingénieur. 5 6 Vous découvrez également que 1’IA n’est pas synonyme ’apprentis- sage automatique, méme si les médias confondent souvent les deux. L’apprentissage automatique est définitivement différent de ’1A, bien que les deux soient liés. Aller au-dela du battage publicitaire Plus une technologie grandit, et plus le battage médiatique grandit éga- lement. D’évidence, l’intelligence artificielle suscite un immense bat- tage médiatique. D’une part, certaines personnes ont décidé de s'enga- ger dans un schéma de peur plutét que dans une démarche scientifique. Les robots tueurs, comme ceux que l’on trouve dans le film Terminator, ne seront pas vraiment la prochaine « grande chose >>. Votre premiére expérience réelle avec une IA dite androide est plus susceptible de se présenter sous la forme d’un assistant en soins de santé (https:// bit. ly/2b07Abb) ou peut-étre comme collégue de travail (https://bit. 1y/1LJE02L). La réalité est que vous interagissez déja avec l’intelligence artificielle et l’apprentissage automatique de maniéres tout & fait ba- nales. Une des raisons pour lesquelles vous avez besoin de lire ce cha- pitre, c’est en particulier pour dépasser tout ce battage médiatique, et découvrir ce que IA peut faire pour vous aujourd’hui. ® Vous avez peut~étre aussi entendu parler de l’apprentissage automa- tique et de I’IA de facon interchangeable. L’IA inclut l’apprentissage automatique, mais apprentissage automatique ne définit pas com- plétement I’IA. Ce chapitre vous aide 4 comprendre la relation entre Papprentissage automatique et intelligence artificielle afin que vous puissiez mieux comprendre comment ce livre va vous aider 4 évoluer dans une technologie qui n’apparaissait auparavant que dans le cadre de romans de science-fiction. L’apprentissage automatique et l’intelligence artificielle ont tous deux de solides composantes techniques. En d’autres termes, vous pou- vez quantifier les deux technologies en vous basant précisément sur la théorie (explications fondées et testées) plutét que sur une simple hypothése (une explication suggérée pour un phénomene). De plus, les deux ont également de solides composantes scientifiques, grace aux- quelles les gens testent des concepts et créent de nouvelles idées quant & la facon dont il serait possible d’exprimer le processus de pensée. Enfin, |’apprentissage automatique a aussi une composante artistique, et c’est 1a qu’un scientifique talentueux peut exceller. Dans certains cas, l’intelligence artificielle et l’apprentissage automatique semblent défier la logique, et seul le véritable artiste peut les faire fonctionner comme attendu. Partie 1 Découvrir comment les machines apprennent Le réve de moutons électriques Les androides (un type de robot spécialisé qui ressemble et agit comme un humain, comme Data dans Star Trek) et certains types de robots humanoides (une sorte de robot qui a des caractéristiques humaines mais qui se distingue facilement d’un humain, comme C-3PO dans Star Wars) sont devenus les enfants modéles de 1’IA. Ils présentent les ordinateurs sous une forme que les gens peuvent anthropomorphiser. En fait, il est effectivement possible qu’un jour vous ne puissiez plus distinguer facilement la vie humaine de la vie artificielle. Des auteurs de science-fiction, tels que Philip K. Dick, prédisent depuis longtemps Chapitre 1 La véritable histoire de Uintelligence artificielle (IA) 7 8 un tel événement, et cela semble tout a fait envisageable aujourd’hui. L’histoire « Do Androids Dream of Electric Sheep ? » (Les androides révent-ils de moutons électriques ?, https://bit .ly/33Zxe95) traite du concept du plus réel que réel. L’idée apparait comme faisant partie de l’intrigue du film Blade Runner (https: //bit .1y/2zmssvf). Les sec- tions qui suivent vous aident a comprendre a quel point la technologie se rapproche actuellement des visions présentées par les auteurs de science-fiction et les films. dire que vous parlez a un androide. Regarder des vidéos en ligne peut vous aider a comprendre le fait que l’existence d’androides impossibles a distinguer des étres humains est aujourd’hui loin d’étre une réalité. Voyez par exemple les robots japonais sur https://bit .ly/1QL4Jxr et https://nbcnews.to/33xTiHJ. L’un des exemples les plus réalistes est celui d’Amelia. Son histoire est publiée sur ComputerWorld a l’adresse https://bit.1y/1LJEOZL. Le fait est que la technologie commence a peine a arriver au point oi les gens pourraient éventuellement étre ca~ pables de créer des robots et des androides réalistes, mais rien de tout cela n’existe aujourd’hui. e état actuel de la technique est réaliste, mais vous pouvez facilement Comprendre Uhistoire de VIA et de Uapprentissage automatique I y a une raison, autre que ’anthropomorphisation, pour laquelle Jes humains voient )’IA ultime comme étant celle qui serait contenue dans un certain type d’androide. Depuis ’Antiquité grecque, l’homme a discuté de la possibilité de placer un esprit 4 l’intérieur dun corps mécanique. L’un de ces mythes est celui d’un homme mécanique ap- pelé Talos (https: //bit.1y/2KszLAS). Le fait que les Grecs de l’Anti- quité possédaient des dispositifs mécaniques complexes, dont un seul existe encore (pour en savoir plus sur le mécanisme d’Antikythera, voir https://bit.ly/2yx2vjI), fait qu’il est fort probable que leurs réves aient été construits sur davantage que de simples fantasmes. Au cours des siécles, les gens ont discuté de personages mécaniques ca- pables de penser (comme le Golem de Rabbi Judah Loew, https: //nyti. ms/21MV2Ir). L'IA repose sur ’hypothése que la mécanisation de la pensée est pos- sible. Au cours du premier millénaire, les philosophes grecs, indiens et chinois ont tous travaillé sur les moyens d’accomplir cette tAche. Dés le XVII sigcle, Gottfried Leibniz, Thomas Hobbes et René Descartes discutaient de la possibilité de rationaliser toute pensée comme de simples symboles mathématiques. Bien stir, la complexité du probléme Partie 1 Découvrir comment les machines apprennent leur a échappé (et nous échappe encore aujourd’hui, malgré les avan- cées sur lesquelles nous reviendrons dans la Partie 3 de ce livre). Le fait est que la vision de VIA existe depuis un temps incroyablement long, mais que sa mise en ceuvre est relativement récente. La véritable naissance de |’intelligence artificielle telle que nous la connaissons aujourd’hui a commencé avec la publication par Alan Tu- ring du texte intitulé « Computing Machinery and Intelligence > en 1950. Dans cet article, Turing a exploré ’idée de savoir comment dé- terminer si les machines peuvent penser. Il a mené au jeu appelé Imi- tation Game (voir par exemple https: //bit.ly/2NuyYRH) auquel parti- cipent trois joueurs. Le joueur A est un ordinateur et le joueur B est un humain. Chacun doit convaincre le joueur C (un humain qui ne peut voir ni le joueur A ni le joueur B) qu’il est humain. Si le joueur C ne peut pas déterminer qui est humain et qui ne l’est pas de maniére réguliére, Vordinateur gagne. Un probléme persistant avec I’IA est l’excés d’optimisme. Le probléme que les scientifiques tentent de résoudre avec ’IA est incroyablement complexe. Cependant, l’optimisme exagéré des débuts, dans les années 1950 et 1960, a amené les scientifiques a croire que le monde produi- rait des machines intelligentes en pas plus de 20 ans. Aprés tout, les machines faisaient toutes sortes de choses étonnantes, comme jouer & des jeux complexes. L’IA connait actuellement ses plus grands succés dans des domaines tels que la logistique, exploration de données et le diagnostic médical. Explorer ce que l'apprentissage automatique peut faire pour IA L’apprentissage automatique s’appuie sur des algorithmes pour ana- lyser d’énormes jeux de données. A heure actuelle, l’apprentissage automatique ne peut pas fournir le genre d’IA que l’on voit dans les films. Méme les meilleurs algorithmes ne peuvent pas penser, sentir, présenter aucune forme de conscience de soi, ou exercer leur libre ar- bitre. Ce que l’apprentissage automatique peut faire, c’est effectuer des analyses prédictives beaucoup plus rapidement que n’importe quel étre humain. Il peut donc aider les humains a travailler plus efficacement. L’état actuel de I’IA consiste donc a effectuer des analyses, mais les humains doivent toujours prendre en compte les implications de ces analyses — c’est-a-dire prendre les décisions morales et éthiques re- quises. La section « A propos des relations entre IA et l’apprentis- sage automatique >>, dans ce chapitre, examine plus en détail comment Papprentissage automatique contribue a IA dans son ensemble. L’es- Chapitre 1 La véritable histoire de Uintelligence artificielle (IA) 9 10 sence de la question est que l’apprentissage automatique ne fournit que la partie « apprentissage » de V’IA, et cette partie est trés loin détre préte a créer une IA du genre de celle que vous voyez dans les films. ® La confusion principale entre apprentissage et intelligence est que les gens supposent que, simplement parce qu’une machine s’améliore dans son travail (1’apprentissage), elle est aussi consciente (I’intelli- gence). Rien ne soutient cette vision de l’apprentissage automatique. Le méme phénoméne se produit lorsque les gens supposent qu’un or- dinateur leur cause délibérément des problémes. L’ordinateur ne sait rien des émotions, et il n’agit donc qu’en fonction de l’entrée fournie et des instructions contenues dans une application pour traiter cette en- trée. Une veritable IA finira par émerger lorsque les ordinateurs pour- ront enfin émuler la combinaison intelligente utilisée par la nature : » Génétique : Apprentissage lent d’une génération a la suivante. » Enseignement : Apprentissage rapide a partir de sources organi- sées, » Exploration : Apprentissage spontané via des médias et des inte- ractions avec les autres. Considérer les objectifs de apprentissage automatique Actuellement, |’IA est basée sur l’apprentissage automatique, et |’ap- prentissage automatique est essentiellement différent des statistiques. Oui, l’apprentissage automatique a une base statistique, mais il repose sur des hypotheses différentes de celles des statistiques parce que les objectifs sont différents. Le Tableau 1. énumére certaines caractéristiques a prendre en compte dans une comparaison de IIA et de l’apprentissage automatique avec les statistiques. Définir les limites de U'apprentissage automatique en fonction du matériel D’énormes jeux de données nécessitent d’énormes quantités de mé- moire. Malheureusement, les exigences ne s’arrétent pas 1a. Lorsque vous avez d’énormes quantités de données et de mémoire, vous de- vez également disposer de processeurs avec des coeurs multiples et des Partie 1 Découvrir comment les machines apprennent Traitement de _ Travaille avec de grands jeux de données {le _ Les modéles sont utilisés données «big data » sous forme de réseaux etde pour créer une puissance "graphes ; les données brutes provenant de prédictive sur de petits ‘capteurs ou de texte Web sont divisées en échantillons. données d'apprentissage et de test. Saisie des Les données sont échantillonnées, ran- Les paramétres inter- données domisées et transformées pour maximi- prétent des phénoménes ‘ser Cexactitude de la prédiction surdes du monde réel et four- ‘exemples hors échantillon (ou compléte- nissent une contrainte sur ment nouveaux). leur ampleur. Résultat La probabilité est prise en compte pour Les résultats rendent ‘comparer ce qui pourrait étre la meilleure compte de la variabilité supposition ou décision. et de Uincertitude des paramétres. Hypothases Le scientifique apprend des données. Le scientifique suppose une certaine sortie et essaie de la prouver. Distribution La distribution est inconnue ou ignorée Le scientifique suppose avant d'apprendre & partir des données. une distribution bien Q i définie. Ajustement Le scientifique crée un modale adaptéau -—_Le résultat est ajusté a la mieux, mais généralisable. distribution actuelle des ° données, See fréquences de fonctionnement élevées. L’un des problémes que les scientifiques s’efforcent de résoudre est de savoir comment utili- ser plus efficacement le matériel existant. Dans certains cas, i] n'est tout simplement pas possible d’attendre pendant des jours l’obtention @un résultat pour un certain probléme d’apprentissage automatique. Les scientifiques qui veulent connaitre la réponse en ont besoin rapi- dement, méme si le résultat fourni n’est pas tout a fait correct. Dans cette optique, les investissements dans du matériel informatique de meilleure qualité exigent également des investissements dans de mei leures connaissances scientifiques. Ce livre aborde certaines des ques- tions suivantes afin d’améliorer votre expérience de ’apprentissage automatique : » Obtenir un résultat utile : En parcourant ce livre, vous verrez que vous devez d’abord obtenir un résultat utile, avant de pouvoir l’af- finer. De plus, l’ajustement d’un algorithme peut parfois aller trop Chapitre 1 La veritable histoire de intelligence artificielle (1A) 1 12 Join, et le résultat devient alors trés fragile (et peut-étre inutile en dehors d’un jeu de données spécifique). » Poser la bonne question : Beaucoup de gens sont frustrés lorsqu’ils essaient d’obtenir une réponse grace a l’apprentissage automa- tique, parce qu’ils continuent a ajuster leur algorithme sans poser une question différente. Pour utiliser le matériel de maniére effi- cace, vous devez parfois prendre du recul et revoir la question que vous posez. Celle-ci peut étre fausse, ce qui signifie que méme le meilleur matériel ne trouvera jamais la réponse. » Sen remettre trop a ’intuition : Toutes les questions d’apprentis- sage automatique commencent comme une hypothése. Un scien- tifique utilise son intuition pour créer un point de départ afin de découvrir la réponse & une question. L’échec est plus courant que le succes lorsqu’il s’agit d’une expérience d’apprentissage auto- matique. Votre intuition ajoute l’art a l'expérience d’apprentissage automatique, mais parfois intuition est erronée et vous devez revoir vos hypotheses. Lorsque vous commencez 4 réaliser l’importance de ]’environnement pour l’apprentissage automatique, vous pouvez également commencer a comprendre la nécessité d’avoir le bon matériel et le bon équilibre pour obtenir le résultat souhaité. Les systémes actuels a la pointe de la technologie s’appuient en fait sur des unités de traitement graphique (GPU) pour effectuer des taches d’apprentissage automatique. L’uti- lisation des GPU accélére considérablement le processus d’apprentis- sage automatique. Une discussion compléte sur l’utilisation des GPU n’entre pas dans le cadre de ce livre, mais vous pouvez en savoir plus ce sujet a l’adresse (notamment) https://bit. ly/33vJNIH. Surmonter les fantasmes de U'IA Comme c’est le cas pour beaucoup d’autres technologies, intelligence artificielle et l’apprentissage automatique ont tous les deux leurs utili- sations fantaisistes ou & la mode. Par exemple, certaines personnes uti- lisent Papprentissage automatique pour créer des tableaux numériques dans le style de peintres célébres a partir de photos. Voyez par exemple ce que proposent le site DeepArt (https://deepart.io/) ou encore le projet Gaugan de NVidia (http: //nvidia-research-mingyuliu.com/gau- gan). Bien stir, les problémes liés a une telle utilisation sont nombreux. Dune part, il est douteux que quelqu’un veuille vraiment qu’un Picas- so soit créé de cette maniére, sauf comme un objet la mode (parce que personne ne |’avait fait auparavant). Le but de l’art n’est pas de créer une interprétation intéressante d’une représentation particuliére Partie 1 Découvrir comment les machines apprennent du monde réel, mais plutét de voir comment |’artiste |’a interprétée. Une application telle que DeepArt ne peut a ce stade que copier un style existant — pas créer de son propre chef un style entiérement nouveau. Les sections suivantes traitent de divers fantasmes liés a |’intelligence artificielle et a l’apprentissage automatique. Découvrir les utilisations 4 la mode de [IA et de U'apprentissage automatique L’intelligence artificielle entre dans une ére d’innovation dont on ne parlait il y a encore peu de temps que dans les ouvrages de science-fic- tion. Il peut étre difficile de déterminer si une utilisation particuliére de VIA est réelle, ou si c’est simplement |’enfant révé d’un certain scientifique. Par exemple, The Six Million Dollar Man, L’homme qui valait trois milliards dans la version frangaise (https://bit .1y/2Z@eWR9) est une série télévisée qui semblait fantaisiste a une certaine époque. Lors- qu’elle a été diffusée, personne ne pensait vraiment que la bionique de- viendrait réalité. Cependant, Hugh Herr a des idées innovantes — et les jambes bioniques sont vraiment possibles maintenant (https: //bit . ly/2kD11g2). Bien sir, elles ne sont pas encore disponibles pour tout le monéde ; la technologie ne fait que commencer a étre utile. Le fait est que l’intelligence artificielle et l’apprentissage automatique offriront tous deux des possibilités de produire des technologies étonnantes, et que nous en sommes déja au stade oii la création de ces technologies n’est plus un sujet de science-fiction, mais il faut quand méme prendre ce que vous entendez avec des pincettes. Pour que les utilisations futures de l’intelligence artificielle et de Papprentissage automatique correspondent aux concepts que la science-fiction a présentés au fil des ans, les programmeurs du monde réel, les spécialistes du traitement des données et les autres interve- nants doivent créer des outils. Le Chapitre 8 explore certains des nou- veaux outils que vous pourriez étre amené a utiliser lorsque vous tra- vaillez avec I’IA et l’apprentissage automatique, mais ces outils sont encore rudimentaires. Rien ne se produit par magie, méme si les choses. peuvent sembler magiques quand on ne sait pas ce qui se passe dans les coulisses. Pour que les phénoménes de mode deviennent des utilisa- tions réelles de l’intelligence artificielle et de l’apprentissage automa- tique, les développeurs, les spécialistes des données et d’autres doivent continuer a construire des outils réels qui peuvent étre difficiles ima- giner a ce stade. Chapitre 1 La véritable histoire de lintelligence artificielle (1A) 13 14 Considérer les vraies utilisations de UIA et de l'apprentissage automatique L’intelligence artificielle et l’apprentissage automatique sont au- jourd’hui utilisés dans un grand nombre d’applications. Le seul pro- bléme est que la technologie fonctionne si bien que vous ne savez méme pas qu’elle existe. En fait, vous pourriez étre surpris de constater que de nombreux appareils dans votre maison utilisent déja ces deux tech- nologies. Elles apparaissent certainement dans votre voiture, et plus spécifiquement peut-étre sur votre lieu de travail. En fait, les utilisa~ tions de l’intelligence artificielle et de l’apprentissage automatique se comptent par millions — toutes 4 ’abri des regards, méme lorsqu’elles sont de nature assez spectaculaire. Voici quelques-unes des applica- tions actuelles de l’IA : » Détection de fraude : Vous recevez un appel ou un message de votre banque vous demandant si vous avez fait un achat particulier. La banque n’est pas curieuse ; elle vous avertit simplement du fait que quelqu’un d’autre pourrait avoir fait un achat avec votre carte. LIA intégrée au code de la société émettrice de la carte de crédit a détecté une dépense tout a fait inhabituelle et a lancé une alerte a ce sujet. » Planification des ressources : De nombreuses organisations doivent planifier P utilisation de leurs ressources de maniére ef- ficace. Par exemple, un hépital peut avoir 4 déterminer oti placer un patient en fonction de ses besoins, de la disponibilité d’experts qualifiés et de la durée d’hospitalisation estimée par le médecin. » Analyse complexe : Les humains ont souvent besoin d’aide pour des analyses complexes parce qu’il y a littéralement trop de fac- teurs a prendre en considération. Par exemple, un méme ensemble de symptémes peut indiquer plusieurs problémes. Un médecin ou un autre expert peut avoir besoin daide pour poser un diagnostic en temps voulu afin de sauver la vie d’un patient. » Automatisation : Toute forme d’automatisation peut bénéficier de l’ajout de intelligence artificielle pour gérer les changements ou les événements imprévus. Un probléme avec certains types @automatisation aujourd’hui est qu’un événement inattendu, tel qu’un objet qui se trouve au mauvais endroit, peut en fait entrainer Parrét de 'automatisation. L’ajout de l’intelligence artificielle & J’automatisation peut permettre a celle-ci de gérer les événements inattendus et de continuer comme si de rien n’était. Partie 1 Découvrir comment les machines apprennent » Service a la clientéle : Un numéro d’appel pour un service ala clientéle n’a peut-étre méme pas un étre humain au bout du fil. L’automatisation est suffisamment performante pour suivre des scripts et utiliser diverses ressources pour répondre a la grande majorité de vos questions. Avec une bonne inflexion de la voix (fournie également par l’IA), vous ne serez peut-étre méme pas capable de dire que vous parlez avec un ordinateur. » Systémes de sécurité : Bon nombre des systémes de sécurité que Pon trouve aujourd’hui dans les véhicules de toutes sortes s’ap- puient sur ’IA pour prendre en charge ceux-ci en période de crise. Par exemple, de nombreux systémes de freinage automatique s’appuient sur IA pour arréter la voiture en fonction de toutes les données qu’un véhicule peut fournir, comme la direction d’un patin. » Efficacité des machines : L’IA peut aider & contrdler une ma- chine de maniére & obtenir une efficacité maximale. L’1A contréle Putilisation des ressources afin que le systéme ne dépasse pas la vitesse autorisée ou d’autres objectifs. Chaque parcelle d’énergie est utilisée avec précision pour fournir les services souhaités. Cette liste ne commence méme pas a érafler la surface du sujet. Vous pouvez trouver I’IA utilisée de bien d’autres facons. Cependant, il est également utile de voir les utilisations de l’apprentissage automatique en dehors du domaine courant que beaucoup considérent comme rele- vant de l'IA. Voici quelques utilisations de ’apprentissage automatique que vous pourriez ne pas songer a associer a une intelligence artifi- cielle : » Contréles d’accés : Dans de nombreux cas, le contréle d’accés est une proposition de type oui/non. La carte & puce d’un employé donne accés a une ressource pour l’essentiel de la méme maniére que les gens utilisent les clés depuis des siécles. Certaines serrures offrent la possibilité de régler les jours et les heures auxquels |’ac- cés est autorisé, mais un contréle classique, générique, ne répond pas vraiment a tous les besoins. En utilisant l’apprentissage au- tomatique, vous pouvez déterminer si un employé devrait pouvoir accéder a une certaine ressource en fonction de son réle et de ses besoins. Par exemple, un employé X peut avoir accés a une salle de formation lorsque cette formation le concerne directement. » Protection des animaux : L’océan peut sembler assez grand pour permettre aux animaux et aux navires de cohabiter sans probléme. Malheureusement, de nombreux animaux sont heurtés par les navires chaque année. Un algorithme d’apprentissage automatique pourrait permettre aux navires d’éviter les animaux marins en le (IA) 15 Chapitre 1 La véritable histoire de Uintelligence arti 16 apprenant les sons et les caractéristiques de ces animaux comme du bateau. » révision des délais d’attente : La plupart des gens n’aiment pas attendre quand ils n’ont aucune idée du temps que cela va prendre. L’apprentissage automatique permet & une application de détermi- ner les temps d’attente en fonction des effectifs, de leur charge de travail, de la complexité des problémes qu’ils tentent de résoudre, de la disponibilité des ressources, etc. Etre utile, étre banal Méme si les films donnent l’impression que I’intelligence artificielle va provoquer une énorme vague, et méme si vous voyez parfois des utili- sations incroyables de l’intelligence artificielle dans la vie réelle, le fait est que la plupart des utilisations sont banales, voire ennuyeuses. J’ai par exemple souvenir d’un article qui explique comment Verizon utilise Je langage R (voir les Chapitres 4 et 5 pour plus de détails sur le langage R) pour analyser les données sur les failles de sécurité (https://bit. ly/2k3Ydwf). La Partie 5 de ce livre vous donne des exemples concrets de ce type d’analyse. Cela peut sembler ennuyeux par rapport a d’autres types d’activités d’IA, mais les avantages sont que Verizon économise de l’argent en utilisant le langage R, et que les résultats sont également meilleurs. En outre, les développeurs du langage Python (voir les Chapitres 6 et 7 pour plus de détails sur le langage Python) disposent d’un large éventail de bibliothéques pour faciliter l’apprentissage automatique. En fait, Kaggle (https: //ww. kaggle.com/competitions) propose des concours pour permettre aux développeurs Python et aux praticiens du langage R de perfectionner leurs compétences en apprentissage automatique en créant des applications pratiques. Les résultats de ces concours apparaissent souvent plus tard dans des produits que les gens utilisent réellement. Bien que R s’appuie toujours sur un fort soutien de la communauté statistique dans la recherche universitaire, la com- munauté Python, de son cété, est particuligrement occupée a créer de nouvelles bibliothéques pour faciliter le développement d’applications complexes dans les domaines de la science des données et de l’appren- tissage automatique (voir https: //bit .1y/2HylhvU pour les 20 biblio- th&ques Python actuellement les plus utilisées). Partie 1 Découvrir comment les machines apprennent A propos des relations entre IA et apprentissage automatique L’apprentissage automatique n’est qu’une partie de ce dont un sys- téme a besoin pour devenir une IA. La partie apprentissage automa- tique de la question permet a IIA d’effectuer ces taches : » S’adapter a de nouvelles circonstances que le développeur initial n’avait pas envisagées. » Détecter des modéles dans toutes sortes de sources de données. » Créer de nouveaux comportements basés sur les modéles reconnus. » Prendre des décisions basées sur le succés ou I’échec de ces com- portements. L'utilisation d’algorithmes pour manipuler les données est la maitresse de l'apprentissage automatique. Pour réussir, une session d’apprentissage automatique doit utiliser un algorithme approprié afin dobtenir le résultat souhaité. De plus, les données doivent se préter une analyse a l’aide de |’algorithme choisi, ou elles doivent étre soi- gneusement préparées par les scientifiques. L'intelligence artificielle englobe de nombreuses autres disciplines pour simuler avec succés le processus de réflexion. En plus de l’ap- prentissage automatique, |’IA comprend normalement les applications suivantes : » ‘Traitement du langage naturel : L’acte de permettre une saisie dans une langue et de la mettre sous une forme qu’un ordinateur peut utiliser. » Compréhension du langage naturel : L’acte de déchiffrer la langue afin d’agir sur le sens qu'elle fournit. » Représentation des connaissances : La capacité de stocker les informations sous une forme qui permet un acces rapide. » Planification (sous forme de recherche d’objectifs) : La capaci- té dutiliser l'information stockée pour tirer des conclusions en temps quasi réel (presque au moment oil cela se produit, mais avec un léger retard, parfois si court qu’un humain ne le remarquera pas, mais ordinateur le peut). » Robotique : La capacité de répondre aux requétes d’un utilisateur sous une forme physique quelconque. Chapitre 1 La véritable histoire de intelligence artificielle (1A) 47: 18 En fait, vous serez peut-étre surpris d’apprendre que le nombre de dis- ciplines nécessaires pour créer une IA est énorme. Par conséquent, ce livre ne vous exposera qu’une partie de ce que contient une IA. Cepen- dant, méme la partie « apprentissage automatique » du sujet peut de- venir complexe, parce que comprendre le monde au travers des entrées de données qu’un ordinateur recoit est une tache complexe. Pensez simplement a toutes les décisions que vous prenez constamment sans méme y réfléchir. Par exemple, le simple fait de voir quelque chose et de savoir si vous pouvez interagir avec lui avec succés peut devenir une tache complexe. Considérer les spécifications de VIA et de Uapprentissage automatique Au fur et & mesure que les scientifiques continuent de travailler avec une technologie et de transformer des hypothéses en théories, la tech- nologie devient davantage lie a l’ingénierie (1a ott les théories sont mises en ceuvre) qu’a la science (oii les théories sont créées). Au fur et & mesure que les régles régissant une technologie deviennent plus claires, des groupes d’experts travaillent conjointement pour définir ces régles sous une forme écrite. Le résultat se traduit en termes de spécifications (un ensemble de régles sur lesquelles tout le monde est accord). En fin de compte, les implémentations des spécifications deviennent des normes, des standards, qu’un organisme directeur, comme l’IEEE (Institute of Electrical and Electronics Engineers) ou une combinaison de type ISO/CEI (Organisation internationale de normalisation/Com- mission électrotechnique internationale), va gérer. L’intelligence arti- ficielle et l’apprentissage automatique existent depuis assez longtemps pour produire des spécifications, mais vous ne trouverez actuellement aucune norme pour aucune de ces deux technologies. La base de l’apprentissage automatique est les mathématiques. Les al- gorithmes déterminent comment interpréter de grands jeux de données de maniére spécifique. Les bases mathématiques de l’apprentissage automatique sont présentées dans la Partie 3 du livre. Vous y découvrez que les algorithmes traitent les données en entrée de maniére spéci- fique, et créent des sorties prévisibles basées sur les modéles de don- nées, Ce qui n’est pas prévisible, ce sont les données elles-mmémes. La raison pour laquelle vous avez besoin de I’intelligence artificielle et de Dapprentissage automatique, c’est de déchiffrer les données de ma- niére a étre capable de voir les modéles qu’elles contiennent et a leur donner un sens. Partie 1 Découvrir comment les machines apprennent Vous verrez les spécifications détaillées dans la Partie 4 sous la forme dalgorithmes utilisés pour exécuter des taches spécifiques. Lorsque vous arriverez a la Partie 5, vous commencerez a voir la raison pour laquelle tout le monde s’entend sur des ensembles précis de régles régissant l'utilisation d’algorithmes pour effectuer des taches. Le but est d’utiliser un algorithme qui conviendra le mieux aux données dont vous disposez pour atteindre les objectifs spécifiques que vous avez créés, Les professionnels mettent en ceuvre des algorithmes en uti- lisant les langages qui conviennent le mieux a la tache qu’ils veulent exécuter. L’apprentissage automatique repose sur Python et R, et dans une certaine mesure Matlab, Java, Julia, et C++. (Voir les discussions & Padresse https://www.quora.com/, et par exemple l’adresse https: // bit. ly/2kuvvyj). Définir la frontiére entre art et ingénierie La raison pour laquelle l’intelligence artificielle et ’apprentissage au- tomatique sont bien des sciences et non des disciplines d’ingénierie est que les deux exigent un certain niveau de pratique « artistique > pour obtenir de bons résultats. L’élément artistique de l’apprentissage au- tomatique prend de nombreuses formes. Par exemple, vous devez tenir compte de la fagon dont les données sont utilisées. Certaines données servent de base de référence pour |’entrainement d’un algorithme en vue d’atteindre des résultats spécifiques. Les données restantes four- nissent des résultats qui sont utilisés pour comprendre les modéles sous-jacents. Il n’existe pas de régles spécifiques régissant l’équi- librage des données ; les scientifiques qui travaillent avec les données doivent découvrir si un certain équilibre produit un rendement optimal. Le nettoyage des données confére également une certaine qualité ar- tistique au résultat. La facon dont un scientifique prépare les données en vue de leur utilisation est importante. Certaines taches, comme la suppression des enregistrements en double, sont effectuées réguliére- ment. Toutefois, un scientifique peut aussi choisir de filtrer les données d’une certaine facon ou d’en examiner seulement un sous-ensemble. Par conséquent, un jeu de données nettoyé utilisé par un scientifique pour des taches d’apprentissage automatique peut ne pas correspondre exactement au jeu de données nettoyé qui sera utilisé par un autre scientifique. Vous pouvez également ajuster les algorithmes d’une certaine maniére, ou affiner le fonctionnement d’un algorithme. Encore une fois, P'idée est de créer des résultats qui produisent vraiment les modéles désirés Chapitre 1 La véritable histoire de Uintelligence artificielle (IA) 19 20 afin que vous puissiez donner un sens aux données. Par exemple, lors de la visualisation dune image, un robot peut avoir & déterminer avec quels éléments de image il peut interagir, et avec quels éléments il ne peut pas interagir. La réponse & cette question est importante si le robot doit éviter certains éléments pour rester sur la bonne voie ou atteindre des objectifs spécifiques. Lorsque vous travaillez dans un environnement d’apprentissage auto- matique, vous devez également tenir compte du probléme des données recues en entrée. Par exemple, le microphone d’un smartphone ne pro- duira pas exactement les mémes données en entrée que le microphone @un autre smartphone. Les caractéristiques des microphones différent, mais le résultat de l’interprétation des commandes vocales fournies par l’utilisateur doit rester le méme. De méme, le bruit ambiant mo- difie la qualité de la commande vocale percue par le microphone, et le smartphone peut également subir certaines formes d’interférences électromagnétiques. De toute évidence, les variables auxquelles un concepteur est confronté lorsqu’il crée un environnement d’apprentis- sage automatique sont a la fois vastes et complexes. Liart derriére Dingénierie est une partie essentielle de ’apprentissage automatique. L’expérience qu’un scientifique acquiert en travaillant sur les problémes posés par des jeux de données est essentielle, parce quelle lui permet d’ajouter des valeurs qui améliorent le fonctionne- ment de lalgorithme. Un algorithme finement ajusté peut faire la dif- férence entre un robot qui réussit & se frayer un chemin a travers les obstacles et celui qui se cogne contre chacun d’entre eux. Partie 1 Découvrir comment les machines apprennent Chapitre 2 Lapprentissage a lére du big data [ - ordinateurs gérent les données au moyen d’applications qui exécutent des taches a l’aide d’algorithmes de diverses sortes. Voici une définition simple d’un algorithme : un ensemble systéma- tique d’opérations a effectuer sur un certain jeu de données — pour Pessentiel, une procédure. Les quatre opérations de base des données sont Créer, Lire, Mettre a jour et Supprimer (ou CRUD, soit Create, Read, Update, Delete en anglais). Cet ensemble d’opérations peut sembler simple, mais l’exécution de ces taches essentielles est & la base de tout ce que vous faites avec un ordinateur. Au fur et a mesure que le jeu de données s’agrandit, l’ordinateur peut utiliser les algorithmes trouvés dans une application pour effectuer davantage de travail. L’utilisation d’immenses jeux de données, connus sous le nom de big data, permet a un ordinateur d’effectuer un travail basé sur la reconnaissance de mo- déles d’une maniére non déterministe. En bref, pour créer une confi- guration informatique capable d’apprendre, vous avez besoin d’un jeu de données suffisamment grand pour que les algorithmes puissent étre gérés de maniére 8 permettre la reconnaissance de modéles, et cette reconnaissance doit utiliser un sous-ensemble simple pour faire des prédictions (une analyse statistique) sur le jeu de données pris globa- Jement. Le big data est présent aujourd’hui dans de nombreux endroits. Des sources évidentes sont les bases de données en ligne, telles que celles créées par les fournisseurs pour suivre les achats des consommateurs. Cependant, vous trouvez aussi de nombreuses sources de données non évidentes, et ce sont souvent elles qui fournissent les ressources les 21 22 plus intéressantes. Trouver des sources appropriées de big data vous permet de créer des scénarios d’apprentissage automatique dans les- quels une machine peut apprendre d’une maniére spécifique et pro- duire un résultat souhaité. Les statistiques, l'une des méthodes d’apprentissage automatique que vous allez aborder dans ce livre, permettent de décrire les problémes en utilisant les mathématiques. En combinant big data et statistiques, vous pouvez créer un environnement d’apprentissage automatique dans lequel la machine considére la probabilité d’un événement donné quelconque. Cependant, dire que les statistiques sont la seule méthode d’apprentissage automatique est incorrect. Ce chapitre vous présente également les autres formes d’apprentissage automatique actuelle- ment en place. Les algorithmes déterminent comment une machine interpréte ce big data. L’algorithme utilisé pour effectuer un apprentissage automatique affecte le résultat de ce processus d’apprentissage et, par conséquent, les résultats que vous obtenez. Ce chapitre vous aide a comprendre les cing principales techniques d'utilisation des algorithmes dans I’ap- prentissage automatique. Avant qu’un algorithme puisse faire beaucoup en matiére d’appren- tissage automatique, vous devez lentrainer. Le processus d’appren- tissage modifie la facon dont l’algorithme voit le big data. La derniére section de ce chapitre vous aide a comprendre que l’entrainement (éga- lement désigné par les termes apprentissage ou encore formation) utilise en fait un sous-ensemble de données comme méthode pour créer les modéles dont l’algorithme a besoin pour reconnaitre des cas spéci- fiques a partir des cas plus généraux que vous fournissez dans le cadre de lentrainement. Définir le big data Le big data est substantiellement différent d’une simple grande base de données. Oui, le big data implique beaucoup de données, mais il inclut aussi les idées de complexité et de profondeur. Une source de big data décrit quelque chose avec suffisamment de détails pour que vous puissiez commencer a travailler avec ces données afin de résoudre des problémes pour lesquels une programmation généraliste s’avére in- suffisante. Prenons, par exemple, le probleme des voitures autonomes. Une telle voiture doit tenir compte non seulement de la mécanique du matériel et de sa position dans l’espace, mais aussi des effets des dé- cisions humaines, de |’état des routes, des conditions environnemen- Partie 1 Découvrir comment les machines apprennent tales, de la circulation, etc. La source de données contient de nom- breuses variables — qui affectent toutes le véhicule d’une maniére ou @une autre. La programmation traditionnelle pourrait étre en mesure d’obtenir tous les chiffres voulus, mais pas en temps réel. Vous ne vou- lez pas que la voiture sécrase contre un mur, et que ordinateur décide finalement cing minutes plus tard que la voiture va s’écraser contre un mur. Le traitement doit étre effectué a temps pour que la voiture puisse justement éviter une telle situation. L’acquisition de telles données peut aussi s’avérer intimidante. La dimension globale d’un jeu de données n’est pas le seul probléme & prendre en compte - il est également essentiel de considérer comment il est stocké et transféré de maniére a ce que le systéme puisse le trai- ter. Dans la plupart des cas, les développeurs essaient de stocker le jeu de données en mémoire pour permettre un traitement rapide. L’uti- lisation d’un disque dur pour enregistrer les données s’avérerait trop cofiteuse en termes de temps et d'argent. Lorsque vous pensez a la notion de big data, vous devez également tenir compte des questions de confidentialité. Le big data pose des pro- blémes de protection de la vie privée. Cependant, en raison du fonc- tionnement de l’apprentissage automatique, il n’est de toute fagon pas particuliérement utile de s’intéresser aux particularités des individus. L’apprentissage automatique consiste 4 déterminer des modéles — analyser les données d’entrainement de maniére a ce que l’algorithme Chapitre 2 L'apprentissage a (ére du big data 23 24 ainsi entrainé puisse exécuter des taches que le développeur n’avait pas. programmées des Porigine. Les données personnelles n’ont pas leur place dans un tel environnement. Enfin, le big data concerne de tels volumes de données que les hu- mains ne peuvent pas raisonnablement visualiser celles-ci sans aide. Une partie de ce qui définit le big data comme étant justement grand est le fait qu’un humain peut en apprendre quelque chose, mais l’am- pleur méme des jeux de données rend la reconnaissance des modéles impossible (ou celle-ci prendrait vraiment beaucoup de temps a ré- aliser). Lapprentissage automatique aide les humains & comprendre et & utiliser ces immenses masses de données que l’on regroupe sous Pappellation de big data. Considérer les sources de big data Avant de pouvoir traiter de grands jeux de données dans une applica- tion d’apprentissage automatique, vous avez besoin d’une source de big data. Bien sir, la premiére chose a laquelle la plupart des déve- Joppeurs pensent est l’énorme base de données appartenant a leur en- treprise, et qui pourrait contenir des informations intéressantes, mais cen’est simplement qu’une source. Le fait est que vos bases de données @entreprise ne contiennent peut-étre méme pas de données particu- ligrement utiles pour un besoin spécifique. Les sections qui suivent dé- crivent des emplacements que vous pouvez utiliser pour obtenir des jeux de données supplémentaires. Créer une nouvelle source de données Pour obtenir des sources viables de big data selon des besoins spéci- fiques, il se peut que vous ayez besoin de créer une nouvelle source de données. Dans de nombreux cas, les développeurs construisent des sources de données en fonction des besoins d’une architecture client-serveur, et ces sources peuvent ne pas bien fonctionner pour des scénarios d’apprentissage automatique car elles manquent de la profondeur requise (étre optimisées pour économiser de l’espace sur les disques durs a ses inconvénients). De plus, & mesure que vous allez devenir plus habile dans |utilisation de l’apprentissage automatique, vous découvrirez que vous posez des questions auxquelles les bases de données d’entreprise classiques ne peuvent pas répondre. Dans cette optique, les sections suivantes décrivent quelques nouvelles sources intéressantes de big data. Partie 1 Découvrir comment les machines apprennent Obtenir des données de sources publiques Les gouvernements, les universités, les organisations a but non lucratif et d’autres entités gérent souvent des bases de données accessibles au public que vous pouvez utiliser seules ou combinées avec d'autres bases de données pour créer du big data pour l’apprentissage automatique. Par exemple, vous pouvez combiner plusieurs systémes d’information géographique (SIG) pour aider a créer des jeux de données nécessaires 4 la prise de décisions, comme l’emplacement de nouveaux magasins ou usines, L’algorithme d’apprentissage automatique peut prendre en compte toutes sortes d’informations — du montant des taxes 4 payer a Paltitude du terrain (ce qui peut contribuer a rendre votre magasin plus visible). Une source officielle de données publiques en France (ce que l'on ap- pelle l’open data) est le site gouvernemental https: //www.data.gouv. fr/fr/. Lameilleure partie de l'utilisation des données publiques, c’est qu’elles sont généralement gratuites, méme pour un usage commercial (il peut éventuellement y avoir des frais minimes). De plus, bon nombre des organismes qui les ont créées maintiennent ces sources dans un état presque parfait parce que l’organisme a un mandat pour cela, utilise éventuellement les données pour en tirer des revenus, ou s’en sert en interne. Lorsque vous pouvez récupérer des données a partir d’une source publique, vous devez vous poser un certain nombre de ques- tions pour vous assurer que vous obtenez réellement quelque chose utile. Voici certains des critéres dont vous devriez tenir compte avant de prendre une décision » le cofit, s'il ya lieu, de Putilisation de la source de données ; » le formatage de la source de données ; » Daccés a la source de données (ce qui signifie avoir l infrastructure appropriée en place, comme une connexion Internet permanente lors de l'utilisation de données de Twitter) ; » Pautorisation d’utiliser la source de données (certaines sources de données sont protégées par le droit d’auteur) ; » les problémes potentiels de nettoyage des données pour les rendre utiles dans un projet d’apprentissage automatique. Chapitre 2 Vapprentissage 25 26 Obtenir des données de sources privées Vous pouvez obtenir des données auprés d’organismes privés comme Amazon et Google, qui gérent tous deux d’immenses bases de données contenant toutes sortes d’informations utiles. Dans ce cas, vous devez vous attendre a payer pour l’accés aux données, surtout si elles sont utilisées dans un contexte commercial. II se peut que vous ne soyez pas autorisé a télécharger les données sur vos serveurs personnels, de sorte que cette restriction peut affecter la fagon dont vous utilisez ces données dans un environnement d’apprentissage automatique. Par exemple, certains algorithmes fonctionnent bien plus lentement avec des données auxquelles ils doivent accéder piéce par piace. Le plus grand avantage de l'utilisation de données provenant d’une source privée est que vous pouvez vous attendre a une meilleure cohé- rence, Les données sont probablement plus propres que celles prove- nant d’une source publique. En outre, vous avez généralement accés & une base de données plus grande avec une plus grande variété de types de données. Bien sir, tout dépend d’oti vous obtenez les données. Créer de nouvelles données a partir de données existantes Vos données existantes peuvent ne pas fonctionner correctement pour des scénarios d’apprentissage automatique, mais cela ne vous em- péche pas de créer une nouvelle source en utilisant les anciennes don- nées comme point de départ. Par exemple, vous pouvez constater que vous disposez d’une base de données clients qui contient toutes les commandes passées, mais ces données ne sont pas utiles pour l’ap- prentissage automatique car il manque les étiquettes nécessaires pour les regrouper selon des critéres spécifiques. L’un des nouveaux types @emploi que vous pouvez vous attendre a créer est celui de personnes qui retraitent les données pour les rendre plus adaptées a l’apprentis- Sage automatique — y compris l’ajout de types d’informations spéci- fiques. treprise. Un article a l’adresse https: //bit .ly/2H2ACG8 décrit certaines des fagons dont vous pouvez vous attendre a ce que l’apprentissage automatique change votre facon de faire votre métier. L’un des prin- cipaux points de cet article est que l’apprentissage automatique fonc- tionne généralement sur 80 % des données. Dans 20 % des cas, il faut encore que des étres humains décident de la fagon de réagir aux don- nées et d’agir en conséquence sur elles. Le fait est que l’apprentissage automatique permet d’économiser de l’argent en prenant en charge des taches répétitives dont les humains ne veulent pas vraiment se ® L’apprentissage automatique aura un effet significatif sur votre en- Partie 1 Découvrir comment les machines apprennent charger (ce qui les rend inefficaces). Cependant, l'apprentissage au- tomatique ne supprime pas complétement intervention humaine, et il crée le besoin de nouveaux types d’emplois un peu plus intéressants que ceux qui disparaissent du fait de apprentissage automatique. 11 est également important de tenir compte du fait qu’il faut initialement plus d’humains jusqu’a ce que les modifications qu’ils apportent en- trainent l’algorithme a comprendre les types de changements a appor- ter aux données. Utiliser des sources de données existantes Votre organisation a certainement des données cachées dans toutes sortes d’endroits. Le probléme est de les reconnaitre en tant que don- nées, Par exemple, vous pouvez avoir des capteurs sur une chaine de montage qui suivent la facon dont les produits se déplacent tout au long du processus d’assemblage et s’assurent de l’efficacité de cette chaine de montage. Ces mémes capteurs peuvent potentiellement étre utiles dans un scénario d’apprentissage automatique parce qu’ils sont sus- ceptibles de fournir des informations sur la facon dont le déplacement des produits affecte la satisfaction des clients ou le prix que vous payez pour le transport. L’idée est de découvrir comment créer des mashups (des mix en quelque sorte) qui présentent des informations existantes comme s’il s’agissait d’un nouveau type de données qui vous permet- trait d’améliorer le fonctionnement de votre organisation. La notion de big data peut s’appliquer & n’importe quelle source, y compris méme @ votre courrier électronique. J’ai souvenir d’un ar- ticle qui explique comment Google utilise vos e-mails pour créer une liste de réponses potentielles a de nouveaux messages (voir l’adresse https: //bit .ly/2Hsek7x). Au lieu de devoir répondre a chaque courriel individuellement, vous pouvez simplement sélectionner une réponse prédéfinie au bas de la page. Ce type d’automatisation n’est pas pos- sible sans la source de données d’origine du courriel. La recherche de données de big data dans des emplacements spécifiques vous démon- trera qu’il est possible d’en trouver dans des endroits courants que la plupart des gens ne considérent pas comme pouvant étre des sources de données. Les applications de demain s’appuieront sur ces sources de données alternatives, mais, pour créer ces applications, vous devez commencer dés maintenant a visualiser ces données cachées. Certaines de ces applications existent déja, et vous ne les connaissez pas du tout. La vidéo sur https: //bit.1y/31x0os5 rend la présence de ce type d’ applications plus évidente. Lorsque vous consultez cette vi- déo, vous commencez a comprendre que de nombreuses utilisations de Chapitre 2 Lapprentissage a (ére du big data 27 28 Vapprentissage automatique sont déja en place, et que les utilisateurs les tiennent déja pour acquis (ou n’ont aucune idée du fait que l’appli- cation est méme présente). Localiser des sources de données de test ‘Au fur et & mesure que vous progresserez dans ce livre, vous décou- vrirez le besoin d’apprendre & l’algorithme que vous utilisez (ne vous inquiétez pas des algorithmes spécifiques ; vous en verrez un certain nombre plus loin dans le livre) comment reconnaitre divers types de données, et ensuite faire quelque chose d’intéressant avec celles-ci. Ce processus d’entrainement garantit que l’algorithme réagit correcte- ment aux données qu’il recoit une fois cet apprentissage terminé. Bien sir, vous devez également tester l’algorithme pour déterminer si la phase d’entrainement est un succés, Dans de nombreux cas, ce livre va vous aider & découvrir des moyens de décomposer une source en données d’entrainement et de test afin d’obtenir le résultat souhaité. Ensuite, aprés cet entrainement et ces tests, et une fois tout cela vérifié et validé, l’algorithme peut travailler en temps réel avec de nouvelles données pour réaliser les taches que vous lui affectez. Dans certains cas, il se peut que vous n’ayez pas suffisamment de don- nées a l’origine pour |’entrainement (la phase initiale essentielle) et les tests. Dans ce cas, vous devrez peut-étre créer une configuration de test pour générer davantage de données, vous baser sur des don- nées générées en temps réel ou encore créer la source de données de test de maniére artificielle. Vous pouvez également utiliser des données similaires provenant d’autres sources existantes, telles qu’une base de données publique ou privée. Le point central est que vous avez besoin a Ja fois de données d’entrainement et de test qui produirént un certain résultat connu, avant de pouvoir « lacher » votre algorithme dans le monde réel pour qu’ il travaille avec des données incertaines. A propos du rile des statistiques dans l'apprentissage automatique Certains sites en ligne voudraient vous faire croire que les statistiques et l’apprentissage automatique sont deux technologies complétement différentes. Par exemple, quand on lit l’article de blog disponible & adresse https: //bit .1y/1J70BIE, on al’impression que les deux tech- nologies sont non seulement différentes, mais carrément hostiles l’une envers l’autre. Le fait est que les statistiques et l’apprentissage auto- matique ont beaucoup en commun, et que les statistiques représentent Partie 1 Découvrir comment les machines apprennent Pune des cing tribus (les écoles de pensée) qui rendent l’apprentissage automatique possible. Ces cing tribus sont les suivantes : » Symbolistes : L’origine de cette tribu se trouve dans la logique et la philosophie. Ce groupe s’appuie sur la déduction inverse pour résoudre les problémes. » Connexionnistes : L’origine de cette tribu se trouve dans les neurosciences. Ce groupe s’appuie sur la rétropropagation pour résoudre les problémes. » fvolutionnaires : L’origine de cette tribu se trouve dans la biologie de ’évolution. Ce groupe s’appuie sur la programmation génétique pour résoudre les problémes. » Bayésiens : L’origine de cette tribu se trouve dans les statistiques. Ce groupe s’appuie sur l’inférence probabiliste pour résoudre les problémes. » Analogiseurs : L’origine de cette tribu se trouve en psychologie. Ce groupe s’appuie sur les machines a vecteurs (comme les SVM) pour résoudre les problémes. Le but ultime de l’apprentissage automatique est de combiner les tech- nologies et les stratégies adoptées par les cing tribus pour créer un algorithme unique (algorithme maitre) capable de tout apprendre. Bien stir, cet objectif est loin d’étre atteint. Malgré cela, des scientifiques comme Pedro Domingos (http://homes.cs .washington.edu/~pedrod/) travaillent actuellement a la réalisation de cet objectif (voir le docu- ment PowerPoint a l’adresse http: //bit .ly/2NL5MX1). Ce livre suit la stratégie de la tribu bayésienne, pour la plus grande partie, dans la mesure oli vous résolvez la plupart des problémes en utilisant une forme d’analyse statistique. Les stratégies adoptées par autres tribus sont aussi décrites, mais la principale raison pour la- quelle vous commencez par les statistiques est que la technologie est déja bien établie et bien comprise. En fait, de nombreux éléments des statistiques sont plus qualifiés d’ingénierie (dans laquelle les théories sont mises en ceuvre) que de science (dans laquelle les théories sont créées). La section qui suit approfondit cette question des cing tribus en examinant les types d’algorithmes utilisés par chacune d’entre elles. Comprendre le réle des algorithmes dans l’apprentissage automatique est essentiel pour définir comment celui-ci fonctionne. Chapitre 2 Lapprentissage al'ére dubigdata 29 30 Comprendre le réle des algorithmes Tout dans l’apprentissage automatique tourne autour des algorithmes. Un algorithme est une procédure ou une formule utilisée pour résoudre un probléme. Le domaine du probléme affecte le type d’algorithme né- cessaire, mais la prémisse de base est toujours la méme — résoudre un type de probléme, comme conduire une voiture ou jouer aux dominos. Dans le premier cas, les problémes sont complexes et multiples, mais le probléme ultime est d’amener un passager d’un endroit & l’autre sans provoquer d’accident. De méme, le but du jeu des dominos est de ga- gner. Les sections qui suivent discutent plus en détail des algorithmes. Definir ce que font les algorithmes Un algorithme est une sorte de conteneur. I] fournit une boite pour stocker une méthode servant a résoudre un type particulier de pro- bléme. Les algorithmes traitent les données selon une série d’états bien définis. 11 n’est pas nécessaire que ces états soient déterministes, mais ils sont néanmoins définis. L’objectif est de créer un résultat qui ré- sout un probléme. Dans certains cas, l’algorithme recoit des entrées qui aident a définir la sortie, mais l’accent est toujours mis sur la sortie. Les algorithmes doivent exprimer les transitions entre les états a l’aide @’un langage formel et bien défini que l’ordinateur peut comprendre. En traitant les données et en résolvant le probléme, l’algorithme défi- nit, affine et exécute une fonction. La fonction est toujours spécifique au type de probléme traité par l’algorithme. Considérer les cing techniques principales Comme décrit dans la section précédente, chacune des cing tribus a une technique et une stratégie différentes pour résoudre les problémes qui résultent en des algorithmes uniques. La combinaison de ces algo- rithmes devrait conduire a terme a l’algorithme maitre qui sera capable de résoudre tout probléme donné. Les sections suivantes donnent un apercu des cinq principales techniques algorithmiques. Raisonnement symbolique L’expression déduction inverse apparait communément en tant qu’in- duction. Dans le raisonnement symbolique, la déduction élargit le do- maine de la connaissance humaine, tandis que l’induction éléve le ni- veau de la connaissance humaine. L’induction ouvre généralement de nouveaux champs d’exploration, tandis que la déduction explore ces Partie 1 Découvrir comment les machines apprennent champs. Cependant, la considération la plus importante est que ’in- duction est la partie scientifique de ce type de raisonnement, tandis que la déduction en est la partie ingénierie. Les deux stratégies tra- vaillent main dans la main en ouvrant d’abord un champ d’exploration. potentielle pour résoudre un probléme, puis en explorant ce champ pour déterminer si, en fait, il le résout effectivement. A titre d’exemple de cette stratégie, la déduction indiquerait que si un arbre est vert et que les arbres verts sont vivants, alors ’arbre doit étre vivant. Quand on pense a induction, on dirait que Darbre est vert et que l’arbre est aussi vivant ; donc, les arbres verts sont vivants. L’in- duction fournit la réponse & ce qu’il manque de connaissances compte tenu d’une entrée et d’une sortie connues. Connexions modélisées sur les neurones du cerveau Les connexionnistes forment peut-étre la plus célébre des cing tribus. Cette tribu s"efforce de reproduire les fonctions du cerveau en utilisant du silicium au lieu de neurones. Pour ’essentiel, chacun des neurones (créé comme un algorithme qui modélise I’équivalent du monde réel) résout une petite partie du probléme, et ’utilisation de multiples neu- rones en paralléle résout le probléme dans son ensemble. utilisation de la rétropropagation, ou propagation rétrospective des erreurs, vise a déterminer les conditions dans lesquelles les erreurs sont éliminées des réseaux construits pour ressembler aux neurones humains en modifiant leurs poids (dans quelle mesure une entrée par- ticuliére influe sur le résultat) et leurs biais (quelles caractéristiques sont sélectionnées). L’objectif est de continuer 4 modifier les pondéra- tions et les biais jusqu’a ce que la sortie réelle corresponde a la sortie cible. A ce stade, le neurone artificiel se déclenche et il transmet sa solution au neurone qui le suit sur sa ligne. La solution créée par un seul neurone n'est qu’une partie de la solution globale. Chaque neurone transmet l’information au neurone suivant en ligne, et cela jusqu’a ce que le groupe de neurones produise une sortie finale. stent les variations Algorithmes évolutionnaires qi Les évolutionnaires s’appuient sur les principes de l’évolution pour ré- soudre les problémes. En d’autres termes, cette stratégie est basée sur Ja survie du plus fort (en supprimant toutes les solutions qui ne four- nissent pas le rendement souhaité). Une fonction d’évaluation déter- mine la viabilité de chaque fonction dans la résolution d’un probleme. Chapitre 2 L'apprentissage a Uére du big data 31 32 A aide dune structure arborescente, la méthode de résolution re- cherche la meilleure solution en fonction des résultats produits par les fonctions. Le gagnant de chaque niveau d’évolution peut alors construire les fonctions du niveau suivant. L’idée est que le niveau sui- vant se rapprochera de la résolution du probléme, mais peut-étre pas complétement, ce qui signifie qu’un autre niveau peut étre nécessaire. Cette tribu particuliére s’appuie fortement sur la récursivité et les lan- gages qui soutiennent fortement la récursivité pour résoudre les pro- blémes. Un résultat intéressant de cette stratégie a été la mise au point @algorithmes qui évoluent : une génération d’algorithmes construit en fait la génération suivante. Inférence bayésienne Les bayésiens utilisent diverses méthodes statistiques pour résoudre des problémes. Etant donné que les méthodes statistiques peuvent créer plus d’une solution apparemment correcte, le choix d’une fonc- tion devient celui de déterminer quelle fonction a la plus grande pro- babilité de réussite. Par exemple, lorsque vous utilisez ces techniques, vous pouvez accepter un ensemble de symptémes comme entrée et dé- cider en sortie de la probabilité qu’une maladie particuliére résulte de ces symptémes. Sachant que plusieurs maladies présentent les mémes symptémes, la probabilité est importante car un utilisateur verra que, dans certains cas, un résultat plus faible est en fait le résultat correct pour une circonstance donnée. En fin de compte, cette tribu soutient l’idée de ne jamais tout a fait faire complétement confiance a une hypothése (un résultat que quelqu’un vous a donné) sans voir les preuves utilisées pour cela (I’entrée utilisée par l’autre personne pour produire l’hypothése). L’analyse des preuves valide ou réfute l’hypothése qu’elle soutient. En conséquence, il n’est pas possible de déterminer la maladie d’une personne avant d’avoir testé tous les symptémes, L’un des résultats les plus reconnaissables produits par cette tribu est le filtre antispam. Des systémes qui apprennent par analogie Les analogiseurs utilisent des machines & noyaux pour reconnaitre les modéles dans les données. En reconnaissant le modéle d’un jeu de données en entrée et en le comparant au modéle @’une sortie connue, vous pouvez créer une solution au probléme. L’objectif est d’utiliser la similarité pour déterminer la meilleure solution 4 un probléme. C’est le genre de raisonnement qui détermine que l'utilisation d’une solu- tion particuliére a fonctionné dans une circonstance donnée a un cer- tain moment antérieur ; par conséquent, !’utilisation de cette solution Partie 1 Découvrir comment les machines apprennent dans des circonstances similaires devrait également fonctionner. L’un des résultats les plus reconnaissables de cette tribu est constitué par les systémes de recommandation. Par exemple, lorsque vous allez sur Amazon et que vous achetez un produit, le systéme de recommanda- tion maison vous propose d’autres produits connexes que vous vou- driez peut-étre aussi ajouter a votre panier. Définir ce que signifie (entrainement Beaucoup de gens sont plutdt habitués a l’idée que les applications commencent avec une fonction, acceptent des données en entrée, puis fournissent un résultat. Par exemple, un programmeur peut créer une fonction appelée Add() qui prend deux valeurs en entrée, telles que 1 et 2. Le résultat de la fonction Add() est 3. La sortie de ce processus est une valeur. Dans le passé, écrire un programme signifiait comprendre la fonction utilisée pour manipuler les données afin de créer un certain résultat avec certaines entrées. L’apprentissage automatique inverse ce processus. Dans ce cas, vous savez que vous avez des entrées, comme 1 et 2. Vous savez également que le résultat souhaité est 3, mais vous ne savez pas quelle fonction appliquer pour créer ce résultat. L’entrainement fournit un algorithme d’apprentissage avec toutes sortes d’exemples d’entrées souhaitées et de résultats attendus de ces entrées. L’apprenant utilise alors cette en- trée pour créer une fonction. En d’autres termes, l’entrainement est le processus par lequel l’algorithme « apprenant > associe une fonction flexible aux données. La sortie est typiquement la probabilité d’une certaine classe ou d’une valeur numérique. Un unique algorithme d’apprentissage peut apprendre beaucoup de choses différentes, mais tous les algorithmes ne sont pas adaptés & certaines taches. Certains algorithmes sont assez généraux pour qu’ils puissent jouer aux échecs, reconnaitre des visages sur Facebook et dia gnostiquer un cancer chez des patients. Un algorithme réduit les en- trées de données et les résultats attendus de ces entrées a une fonction dans tous les cas, mais la fonction est spécifique au type de tache que vous voulez voir exécuter par l’algorithme. Le secret de lapprentissage automatique est la généralisation. Le but est en effet de généraliser la fonction de sortie pour qu’elle fonc- tionne sur des données allant au-dela du jeu d’entrainement. Prenons Vexemple d'un filtre antispam. Votre dictionnaire contient 100 000 mots (en fait, c’est un petit dictionnaire). Un ensemble limité de don- nées d’entrainement de 4 000 ou 5 000 combinaisons de mots doit Chapitre 2 L'apprentissage a (ére du big data 33 créer une fonction généralisée qui peut ensuite trouver du spam dans les 24100 000 combinaisons que la fonction verra lorsqu’elle travaillera avec des données réelles. De ce point de vue, l’entrainement peut sembler impossible et l’ap- prentissage encore pire. Cependant, pour créer cette fonction générali- sée, lalgorithme apprenant ne repose que sur trois composantes : » Représentation : L’algorithme crée un modéle, qui est une fonction qui produira un résultat donné pour des entrées spécifiques. La représentation est un ensemble de modéles qu’un algorithme peut apprendre. En d’autres termes, l’algorithme d’apprentissage doit créer un modéle qui produira les résultats souhaités a partir des données fournies en entrée. Si l’algorithme ne peut pas effectuer cette tache, alors il ne peut pas apprendre a partir des données, et les données sont en dehors de l’espace d’hypothése de cet algo- rithme. Une partie de la représentation consiste a découvrir quelles caractéristiques (éléments de données dans la source) utiliser pour le processus d’apprentissage. » Evaluation : L’apprenant peut créer plus d’un modéle. Cepen- dant, il ne connait pas la différence entre les bons et les mauvais modeéles. Une fonction d’évaluation détermine lequel des modéles fonctionne le mieux pour créer un résultat souhaité a partir d’un ensemble d’entrées. La fonction d’évaluation note les modéles, car il est possible que plusieurs d’entre eux fournissent les résultats requis. » Optimisation : A un moment donné, le processus d’entrainement produit un ensemble de modéles qui peuvent généralement donner le bon résultat pour un ensemble donné d’ entrées. A ce stade, le processus d’entrainement examine ces modéles pour déterminer celui qui fonctionne le mieux. Le meilleur modéle constitue le résultat du processus d’entrainement. Une grande partie de ce livre porte sur la représentation. Par exemple, au Chapitre 14, vous découvrirez comment travailler avec l’algorithme des k plus proches voisins (ou KNN, pour K-Nearest Neighbors en an- glais). Cependant, le processus d’entrainement ne se limite pas au simple choix d’une représentation. Les trois étapes entrent en jeu lors de l’exécution de ce processus, Heureusement, vous pouvez commen- cer par vous concentrer sur la représentation et permettre aux diffé- rentes bibliothéques mentionnées dans le livre de faire le reste du tra- vail pour vous. 34 Partie 1 Découvrir comment les machines apprennent Chapitre 3 Jeter un regard vers l'avenir L: technologie d’apprentissage automatique apparaft aujourd’hui dans de nombreux produits, mais elle est encore loin d’étre to- talement « utilisable ». Les algorithmes actuels sont encore relati- vement basiques par rapport a ce que les scientifiques prévoient de fournir dans l’avenir. En outre, les sources actuelles de données pour Papprentissage automatique sont plus petites que les jeux de données prévus pour une utilisation future. Bref, l’apprentissage automatique ren est qu’a ses débuts. Cependant, il accomplit déja un nombre consi- dérable de taches de maniére étonnamment efficace. Ce chapitre exa- mine ce qui pourrait étre possible a l’avenir. Il vous aide a comprendre la direction que prend l’apprentissage automatique, et comment cette direction pourrait conduire a enraciner l’apprentissage automatique dans tous les aspects de la vie quotidienne. Lun des problémes que pose une nouvelle technologie comme I’ap- prentissage automatique est la crainte qu’elle empéche les gens de travailler. Bien au contraire, l’apprentissage automatique ouvrira de nouvelles professions que les gens devraient trouver plus excitantes que travailler sur une chaine de montage ou retourner des hamburgers dans un restaurant. L’un des objectifs est de fournir aux gens un travail créatif et intéressant a faire. Bien sir, ces nouveaux emplois exige- ront une formation plus poussée et donc aussi de nouveaux types de formations, avant que les gens soient capables de s’acquitter de leurs nouvelles taches. Chaque nouvelle technologie comporte aussi des piéges. C’est un cli- ché, mais il est vrai qu’il est plus facile de détruire que de créer. Les piéges potentiels de l’apprentissage automatique doivent étre pris au sérieux. Comme cette technologie n’en est qu’a ses balbutiements, le 35 36 moment est venu d’examiner les piéges potentiels et d’agir avant qu’ils ne se concrétisent. La derniére section de ce chapitre ne traite pas des problémes qui vont se produire, mais plutét des problémes qui pourraient survenir et que les gens peuvent certainement éviter en utilisant correctement la tech- nologie. Créer des technologies utiles pour le futur Pour survivre, une technologie doit prouver son utilité. En fait, elle doit s’avérer plus qu’utile : elle doit répondre a des besoins percus d’une maniere telle que les autres technologies existantes ne répondent pas aussi bien a ces besoins, fournissant ainsi une justification moné- taire pour continuer a investir dans ladite technologie. Par exemple, PApple Lisa était une technologie intéressante et pratique qui a dé- montré Putilité d’une interface graphique pour les utilisateurs profes- sionnels qui n’en avaient jamais vu auparavant. Il a résolu le besoin de rendre les ordinateurs conviviaux. Cependant, il a échoué parce qu’il n’a pas su entrainer l’adhésion. L’ordinateur n’a tout simplement pas été a la hauteur du battage médiatique qui ’entourait (voir https: // bit.1y/20TSfEn pour plus de détails). Le systéme suivant qu’Apple a construit, le Macintosh, s’est montré un peu mieux a la hauteur du battage médiatique, tout en se basant sur la méme technologie que le Lisa. La différence est que le Macintosh a développé un réseau consi- dérable d’adeptes purs et durs. L’apprentissage automatique résout un nombre énorme de problémes @une maniére que d’autres technologies auraient du mal a copier. Ce- pendant, pour devenir la technologie indispensable dans laquelle tout le monde veut investir, ’apprentissage automatique doit construire ce noyau dur d’adhérents. L’apprentissage automatique a déja un certain nombre d’adeptes, et vous étes peut-étre déja l'un d’entre eux, mais la technologie doit accéder 8 l'informatique grand public pour en faire quelque chose que chacun doit avoir. Les sections suivantes traitent de certaines des facons dont l’apprentissage automatique vous affecte déja personnellement, et comment cette utilisation se développera & Pavenir — faisant de l'apprentissage automatique une technologie in- contournable. Partie 1 Découvrir comment les machines apprennent Considérer le réle de Uapprentissage automatique dans le domaine des robots Un des objectifs de ’apprentissage automatique aujourd’hui est de créer des robots utiles 4 la maison. Maintenant, vous pensez peut-étre & quelque chose comme Rosie, le robot domestique trouvé dans la série US The Jetsons (voir https: //thejetsons. fandom. com/wiki/Rosey pour une bréve description). Cependant, les robots du monde réel doivent résoudre des problémes pratiques et importants pour attirer l’atten- tion. Pour devenir viable et attirer des financements, une technologie doit aussi assembler un groupe d’adeptes, et, pour ce faire, elle doit a la fois permettre l’interaction et l’appropriation. Un exemple de robot domestique réussi est le Roomba d’iRobot (voir par exemple https: //amzn.to/20S3Spp). Vous pouvez réellement ache- ter un Roomba aujourd’hui ; il sert a un but utile ; et il a attiré assez attention pour en faire une technologie viable. Le Roomba montre également ce qui est faisable aujourd’hui a un niveau commercial, do- mestique, et autonome. Oui, le Roomba est un aspirateur amusant ~ un appareil intelligent, bas¢ sur des algorithmes simples mais trés effi- caces. Le Roomba peut naviguer avec succés dans une maison, ce qui est beaucoup plus difficile que vous ne le pensez. Il peut aussi passer plus de temps sur des endroits plus sales dans une piéce. Cependant, vous avez toujours besoin de vider le Roomba quand il est plein ; la technologie robotique actuelle n’en fait pas plus. Vous pouvez trouver d’autres robots du monde réel que des gens uti- lisent pour effectuer des taches spécialisées, mais vous ne les trouverez pas dans votre maison. Un article a l’adresse https: //bit.1ly/33tzZPs traite de dix de ces robots. Dans chaque cas, le robot a une fonction spécialisée et agit selon un nombre limité de facons. D’autres sites présentent d’autres robots, mais vous ne trouverez aucune utilisation générale pour aucun d’entre eux. Avant que les robots puissent en- trer dans une maison et travailler en tant qu’assistants généralistes, D’apprentissage automatique va devoir résoudre une multitude de pro- blémes, et les algorithmes doivent devenir a la fois plus généraux et plus profonds. Vous devriez certes constater un jour que les robots vont faire partie de la vie quotidienne, mais cela ne se produira pas tout de suite (ou peut-étre méme dans un proche avenir). Chapitre 3 Jeter un regard vers avenir 37 38 Utiliser Uapprentissage automatique dans le domaine de la santé La question des soins aux personnes agées fait l'objet de beaucoup attention. Les gens vivent plus longtemps, et un EHPAD ou une mai- son de retraite médicalisée ne semblent pas étre une bonne facon de passer ses derniéres années. Les robots permettront aux gens de rester 4 la maison tout en étant en sécurité. Certains pays sont également confrontés a une grave pénurie de travailleurs dans le domaine de la santé, et le Japon en est un exemple caractéristique. En conséquence, le pays dépense des ressources considérables pour résoudre les pro- blémes que pose la robotique (voyez par exemple l’article a I'adresse https: //bit .1y/2b07Abb pour plus de détails). La technologie qui se rapproche le plus de la vision présentée par un ro- bot infirmier 4 domicile est le robot dit de téléprésence (voir par exemple https: //bit .1y/2zxinJA). Dans ce cas, le robot est une extension d’un médecin humain, mais n’est pas encore suffisamment a l’image de ce que les Japonais espérent créer dans un futur proche. Comme le Room- ba, ce robot peut naviguer avec succés dans une maison. Il permet éga- lement au médecin de voir et d’entendre le patient. Le robot résout en partie les problémes posés par un trop grand nombre de patients dans une trop grande zone géographique et par le manque de médecins, mais on est encore loin d’une solution autonome. Créer des systémes intelligents pour différents besoins Bon nombre des applications que I’on peut s’attendre a voir utiliser l’apprentissage automatique concerneront des taches d’assistance homme. De telles applications s’acquittent extrémement bien de di- verses taches, mais ces taches sont par nature banales et répétitives. Par exemple, vous pourriez avoir besoin de trouver un restaurant pour satisfaire les besoins d’un client de province. Vous pouvez bien enten- du perdre du temps a chercher vous-méme un restaurant approprié, ou bien accéder a une IA pour le faire beaucoup plus vite, avec plus de précision et d’efficacité. Le Chapitre 1 examine ce type de solution a partir de Siri. Une autre de ces solutions est appelée Nara (https:// bit .1y/2YGZ379). C’est une IA expérimentale qui apprend ce que vous aimez et ce que vous n’aimez pas en passant plus de temps avec vous. Contrairement a Siri, qui peut répondre a des questions fondamentales, Nara va plus loin et fait des recommandations. Partie 1 Découvrir comment les machines apprennent er Uapprentissage automatique en milieu industriel L’apprentissage automatique joue déja un réle important dans les en- vironnements industriels oii l’accent est mis sur l'efficacité. Faire les choses plus rapidement, plus précisément et avec moins de ressources (donc avec moins de gaspillage) aide par exemple a améliorer les ré- sultats financiers et a rendre une organisation plus flexible avec une marge bénéficiaire plus élevée. Moins d’erreurs est aussi intéressant pour le monde du travail car cela réduit le niveau de frustration. Vous pouvez actuellement voir l’apprentissage automatique a l’ceuvre dans divers domaines : » diagnostic médical ; » fouille de données ; » bio-informatique ; » reconnaissance de la parole et de l’écriture manuscrite ; » catégorisation des produits ; » centrale a inertie (IMU, pour Inertial Measurement Unit en anglais), telle que la technologie de capture de mouvement ; » recherche d’informations. Cette liste ne fait qu’effleurer la surface. L’apprentissage automatique est aujourd’hui beaucoup utilisé dans l’industrie, et le nombre d’appli- cations continuera d’augmenter & mesure que des algorithmes avan- cés permettront d’atteindre des niveaux d’apprentissage plus élevés. APheure actuelle, I’apprentissage automatique accomplit des taches dans un certain nombre de domaines, dont les suivants : » Analyse : Déterminer ce qu’un utilisateur veut et pourquoi, et quels types de modéles (comportements, associations, réponses, etc.) Putilisateur présente lorsqu’il obtient. » Enrichissement : Ajout d’annonces, de widgets et d’autres fonc- tionnalités 4 un environnement afin que utilisateur et l’organisa- tion puissent obtenir des avantages supplémentaires, tels qu’une productivité accrue ou une amélioration des ventes. » Adaptation : Modifier une présentation pour qu’elle reflite les golits de l'utilisateur et ses choix en termes d’enrichissement. Chapitre 3 Jeter un regard vers l'avenir 39 40 Chaque utilisateur se retrouve avec une expérience personnalisée qui réduit la frustration et améliore la productivit » Optimisation : Modifier l’environnement pour que la présentation consomme moins de ressources sans diminuer l’expérience utilisa- teur. » Contréle : Orienter ’utilisateur vers un plan d’action particulier en fonction des entrées et de la probabilité de succes la plus élevée. Une vision théorique de ce que fait ’apprentissage automatique dans Vindustrie est intéressante, mais i] est important d’observer comment cela fonctionne dans le monde réel. Vous pouvez voir que l’apprentis- sage automatique est utilisé de maniére relativement banale, mais im- portante. Par exemple, l’apprentissage automatique joue un rdle dans Vautomatisation de l’accés des employés, la protection des animaux, la prévision des temps d’attente aux urgences, identification de l’insuf- fisance cardiaque, la prévision des accidents vasculaires cérébraux et des crises cardiaques, et la prévision des réadmissions dans les hépi- taux (un article a l’adresse https: //bit.ly/1eiqBho fournit des détails sur chacune de ces utilisations). Comprendre le réle des processeurs et d'autres matériels La section « A propos du réle des statistiques dans l’apprentissage automatique » du Chapitre 2 vous présente les cing écoles de pensée (tribus) liées & Papprentissage automatique. Chacune de ces écoles de pensée vous dit que le matériel informatique actuel n’est pas tout a fait ala hauteur des besoins pour faire fonctionner correctement I’appren- tissage automatique. Par exemple, vous pourriez parler a une tribu dont les membres vous disent qu’ils ont besoin d’une plus grande quanti- té de mémoire systéme et qu’ils utilisent les GPU pour effectuer des calculs plus rapides. Une autre tribu pourrait réclamer la création de nouveaux types de processeurs. Les processeurs neuromorphiques, ceux qui imitent le cerveau humain, font fureur chez les connexionnistes. Vous pouvez vous renseigner sur I’un de ces processeurs a l’adresse https://bit .ly/31Aeg6N. Le fait est que tout le monde s’accorde a dire qu’un nouveau matériel facilitera l’apprentissage automatique, mais la forme précise que prendra ce matériel reste 4 découvrir. Partie 1 Découvrir comment les machines apprennent Découvrir les nouvelles possibilités d’emploi grace a l'apprentissage automatique Vous pouvez trouver de nombreux articles qui discutent de la perte @emplois que Vapprentissage automatique et les technologies qui y sont associées entraineront. Les robots exécutent déja un certain nombre de tAches qui employaient auparavant des étres humains, et tout cela augmentera avec le temps. La section précédente de ce cha- pitre vous a aidé & comprendre certaines des utilisations pratiques et réelles de l’apprentissage automatique aujourd’hui, mais aussi a dé- couvrir dans quelles directions ces applications sont susceptibles de se développer a l’avenir. En lisant cette section, vous devez aussi avoir considéré comment ces nouvelles utilisations pourraient vous coiiter, a vous ou a un étre cher, un emploi. Certains auteurs sont méme allés jusqu’a dire que ’avenir pourrait étre marqué par un scénario dans lequel l’acquisition de nouvelles connaissances et compétences pour- rait ne pas garantir un emploi (voir par exemple l'article a l’adresse https://bit.ly/2TqtqIM pour plus de détails). Le fait est qu’il est difficile de décider comment l’apprentissage auto- matique affectera l'environnement de travail, tout comme il était dif- ficile pour les gens de voir out la révolution industrielle nous ménerait en termes de production de masse de biens de consommation générale (voir par exemple l’article https://bit.ly/1opgUTH). Tout comme ces travailleurs avaient besoin de trouver de nouveaux emplois, les per- sonnes confrontées la perte d’un emploi en raison de l’apprentissage automatique d’aujourd’hui devront se tourner vers de nouveaux mé- tiers. Travailler pour une machine Il est tout @ fait possible que vous vous retrouviez a l’avenir a tra- vailler pour une machine. En fait, vous travaillez peut-étre déja pour une machine sans le savoir. Certaines sociétés se servent en effet de Papprentissage automatique pour analyser les processus d’entreprise et les rendre plus efficaces. Par exemple, Hitachi utilise actuellement une telle configuration dans |’encadrement intermédiaire (voir l’ar- ticle a l’adresse https: //bit.ly/10v5T3s). Dans ce cas, IA distribue les taches en fonction de son analyse du déroulement du travail — tout comme un gestionnaire humain pourrait le faire. La différence est que PA est en fait 8 % plus efficace que les humains qu’elle remplace. Dans un autre cas, Amazon a organisé un concours parmi les experts en ap- Chapitre 3 Jeter un regard vers avenir 41 42 prentissage automatique pour déterminer si l’entreprise pouvait mieux traiter les processus d’autorisation d’accés aux employés (https:// bit .ly/2Z2frye). Encore une fois, il s’agissait de trouver un moyen de remplacer les cadres intermédiaires et de réduire un peu la paperas- serie. Cependant, cela représente aussi une opportunité d’emploi. Les tra- vailleurs « pilotés » par l’IA accomplissent les taches que cette IA leur demande d’accomplir, mais ils peuvent utiliser leur propre expérience et leur créativité pour déterminer comment accomplir cette tache. L’IA analyse les processus utilisés par les travailleurs humains et mesure les résultats obtenus. Tout processus réussi est ajouté a la base de données des techniques que les travailleurs peuvent appliquer pour accomplir des taches. En d’autres termes, les humains enseignent aux IA de nou- velles techniques pour rendre |’environnement de travail encore plus efficace. C’est un exemple de la facon dont l’apprentissage automatique peut libérer les humains d’un certain nombre de corvées dans leur environ- nement de travail. Lorsque l’on fait appel a des cadres intermédiaires humains, les nouveaux processus sont souvent enfouis dans une bu- reaucratie de régles non dites et de batailles d’ego. L’IA est congue pour apprendre de nouvelles techniques sans parti pris, de sorte que les hu- mains sont encouragés a exercer leur créativité, et tout le monde en profite. Bref, l’IA, qui n’a pas d’ego susceptible de heurter les autres, peut-étre un gestionnaire « accessible » évitant nombre de frustra- tions au travail. Travailler avec des machines Les gens travaillent déja réguligrement avec des machines - ils ne s’en rendent peut-étre tout simplement pas compte. Par exemple, lorsque vous parlez a votre smartphone et qu’il reconnait ce que vous dites, vous travaillez avec une machine pour atteindre un objectif souhai- té, La plupart des gens reconnaissent que I’interaction vocale fournie avec un smartphone s’améliore avec le temps — plus vous lutilisez, et mieux il reconnait votre voix. Au fur et 4 mesure que l’algorithme de P apprenant s’affine, il devient plus efficace pour reconnaitre votre voix et obtenir le résultat souhaité. Cette tendance va évidemment se poursuivre. Cependant, |’apprentissage automatique est utilisé de toutes sortes de fagons qui ne vous viendraient peut-étre pas & l’esprit. Lorsque vous pointez un appareil photo sur un sujet et que l’appareil photo peut af- ficher un cadre autour d’un visage (pour aider a cibler l'image), vous Partie 1 Découvrir comment les machines apprennent voyez le résultat de l’apprentissage automatique. L’appareil photo vous aide a prendre un cliché avec beaucoup plus d’efficacité. De plus, la caméra supprime automatiquement au moins une partie des effets de tremblements et de mauvais éclairage. Les appareils photo sont deve- nus tres efficaces pour aider les humains & accomplir des taches avec assurance. Lutilisation de langages déclaratifs, comme SQL. (Structured Query Lan- guage), sera également plus prononcée, car l’apprentissage automa- tique permettra de réaliser des progrés. A certains égards, un langage déclaratif vous permet simplement de décrire ce que vous voulez ob- tenir, et non comment l’obtenir. Cependant, SQL nécessite toujours un informaticien, un spécialiste des données, un administrateur de base de données ou un autre professionnel pour pouvoir utiliser. Les langages du futur n’auront pas cette limitation. En fin de compte, quelqu’un qui est formé pour bien exécuter une tache particuliére dira simplement a Dassistant du robot ce qu’ il doit faire, et l’assistant du robot découvri- ra les moyens de le faire. Les humains utiliseront leur créativité pour découvrir ce qu’il faut faire ; les détails (le comment) deviendront le domaine des machines. Réparer des machines La plus grande partie de ce chapitre traite de l’état actuel de la tech- nologie, de son orientation future et des raisons pour lesquelles les choses fonctionnent comme elles le font. Cependant, notez que notre discussion se concentre toujours sur la technologie qui fait quelque chose. Avant que la technologie puisse faire quoi que ce soit d’autre, elle doit accomplir une tache pratique qui attirera l’attention et profi- tera aux humains d’une maniére telle que les gens voudront disposer de cette technologie. Mais peu importe ce qu’est cette technologie. Il y aura toujours, 4 un moment quelconque, une panne qu’il faudra ré- parer. Rendre utile une technologie reste la considération primordiale, et donc des choses banales comme effectuer des réparations finiront par retomber sur des épaules humaines. Méme si l’humain n’est pas directement impliqué dans la réparation physique, c’est Pintelligence humaine qui dirigera l’opération de réparation. bots autoréparateurs sont déja une réalité. Par exemple, les robots de la Station spatiale internationale (ISS), Dextre et Canadarm', ont eu & réparer une caméra défectueuse (voir par exemple l’article a adresse Certains articles publiés en ligne peuvent vous faire croire que les ro- 1 Voir par exemple a ce sujet les pages https: //bit .ly/2zmc85R et https: //bit.ly/ 2PhIURD. Chapitre 3 Jeter un regard vers Uavenir 43 44 https://bit.ly/Nx0Eio“). Ce que les histoires ne disent pas, c’est qu’un humain a décidé comment exécuter la tache et a demandé aux robots d’effectuer le travail physique. La réparation autonome n’est pas pos- sible avec les algorithmes disponibles aujourd’hui. Les réparations sont souvent le lot des experts humains, et tant que les robots ne repro- duiront pas les connaissances et les compétences de ces experts, les mémes réparations resteront impossibles pour eux. Créer de nouvelles taches d’apprentissage automatique Les algorithmes d’apprentissage automatique ne sont pas créatifs, ce qui signifie que les humains doivent apporter la créativité qui améliore Papprentissage automatique. Méme les algorithmes qui construisent @autres algorithmes n’améliorent que l’efficacité et la précision des résultats obtenus — ils ne peuvent pas créer des algorithmes qui exé- cutent de nouveaux types de taches. L’étre humain doit fournir les données nécessaires pour définir ces taches et les processus permet- tant de commencer a les résoudre. tique créeront de nouvelles taches d’apprentissage automatique. Ce- pendant, histoire du cadre intermédiaire d’Hitachi dont il a été ques- tion dans la section « Travailler pour une machine >>, plus haut dans ce chapitre, devrait vous montrer que les choses vont fonctionner diffé- remment. Oui, des experts vous aideront & définir la facon de résoudre la tche, mais la création réelle des taches sera le fait de personnes qui connaissent le mieux une industrie en particulier. L’histoire d’Hitachi sert de base pour comprendre a la fois que l’avenir verra des gens de tous horizons contribuer a des scénarios d’apprentissage automatique, et qu’une éducation trop spécifique pourrait méme ne pas aider a défi- nir de nouvelles taches. © Vous pensez peut-étre que seuls les experts en apprentissage automa- Concevoir de nouveaux environnements d’apprentissage automatique Actuellement, la conception de nouveaux environnements d’appren- tissage automatique est du ressort des entreprises travaillant dans les domaines de la recherche et du développement. Un groupe de spécia- listes hautement qualifiés doit créer les paramétres d’un nouvel en- vironnement. Par exemple, la NASA a besoin de robots pour explorer Mars. Dans ce cas, la NASA compte sur les compétences du person- nel du MIT et de Northeastern pour accomplir cette tache (voir par Partie 1 Découvrir comment les machines apprennent exemple l’article l’adresse https://bit .ly/11Ific2). Etant donné que le robot devra exécuter des taches de fagon autonome, les algorithmes d’apprentissage automatique deviendront tout a fait complexes et comprendront plusieurs niveaux de résolution des problémes. Au final, quelqu’un sera capable de décrire un probléme avec suffi- samment de détails pour qu’un programme spécialisé puisse créer Palgorithme nécessaire en utilisant un langage approprié. En d’autres termes, les non-spécialistes commenceront finalement a créer de nouveaux environnements d’apprentissage automatique basés sur des idées qu’ils ont et qu’ils veulent essayer. De méme, les personnes qui créeront les environnements futurs seront des experts dans leur métier spécifiques, plutdt que des informaticiens ou des spécialistes des don- nées. La science de l’apprentissage automatique se transformera alors en un exercice d’ingénierie qui donnera & toute personne ayant une bonne idée les outils dont elle a besoin. Eviter les piéges potentiels des technologies du futur Toute nouvelle technologie comporte des piéges potentiels. Plus les attentes a l’égard de cette technologie sont élevées, et plus les piéges deviennent graves. Les attentes irréalistes dans le domaine de l’ap- prentissage automatique causent toutes sortes de problémes parce que les gens pensent que ce qu’ils voient dans les films est ce qu’ils vont obtenir dans le monde réel. I] est essentiel de se rappeler les concepts de base présentés au Chapitre 1 — que les algorithmes d’apprentissage automatique ne peuvent actuellement pas sentir, penser de maniére indépendante ou créer quoi que ce soit. Contrairement aux intelli- gences artificielles des films, un algorithme d’apprentissage automa- tique fait exactement ce que vous attendez de lui, rien de plus. Bien sir, certains des résultats sont étonnants, mais il est important de s’en tenir a ce que la technologie réelle peut accomplir. Sinon, vous pro- mettrez quelque chose que la technologie ne pourra jamais délivrer, et les soutiens que vous attendiez iront chercher ailleurs la prochaine grande chose. En fait, les utilisations de l’apprentissage automatique sont au- jourd’hui assez limitées. Comme le décrit par exemple article a Vadresse https: //bit .ly/2kuasvd, I’IA restreinte, comme !’utilisation commerciale de ’IA pour obtenir des résultats a partir de vastes jeux de données, repose sur des techniques bien comprises que les entreprises ont commencé a utiliser récemment. La machine ne peut rien déduire, ce qui limite son utilisation & la tache pour laquelle le développeur ou Chapitre 3 Jeter un regard vers avenir = 45 le spécialiste des données I’a concue. En fait, une bonne analogie en ce qui concerne les algorithmes d’aujourd’hui est qu’ils sont comme une chemise sur mesure (voir l’article a l’adresse https://bit .ly/10SSRNH pour plus de détails). Vous avez besoin de compétences spécialisées pour créer un algorithme adapté aux besoins spécifiques actuels, mais Vavenir pourrait voir des algorithmes qui peuvent s’attaquer a presque toutes les taches. Les entreprises qui s’appuient sur l’IA restreinte doivent faire preuve de prudence dans la facon dont elles développent leurs produits ou services. Un changement dans l’offre de produits ou 46 Partie 1 Découvrir comment les machines apprennent de services pourrait envoyer les données utilisées pour l’environne- ment d’apprentissage automatique en dehors du champ d'action dun algorithme trop spécifique, le réduisant a une sorte de charabia (ou au moins le rendant peu fiable). L’apprentissage profond, le deep learning, est une technique qui permet a la machine de choisir les entrées en utilisant plusieurs couches de traitement pour analyser des structures complexes. C’est la prochaine étape dans le processus d'utilisation pratique de IA, mais peu d’en- treprises l’utilisent actuellement et il nécessite une énorme puissance de calcul pour effectuer des taches concrétes. Le site Deep Learning (http: //deeplearning.net/) vous fournit par exemple des ressources pour travailler dans ce domaine au cas oii vous voudriez le faire. Vous y trouvez des articles, des tutoriels, des exemples de code et d’autres informations dont vous avez besoin pour mieux comprendre le deep learning. 11 s’agit en fait d’une technologie d’avenir que quelques en- treprises choisissent d’adopter aujourd’hui, méme si elle n’a pas en- core atteint (ou presque) tous ses objectifs a ce stade. Lutilisation de l’apprentissage automatique dans une organisa- tion exige également que vous engagiez des personnes possédant les compétences requises et que vous créiez une équipe. L’usage de l’ap- prentissage automatique dans un environnement d’entreprise, ott les objectifs sont globalement une amélioration du résultat net, est re- lativement nouveau. Les entreprises ont du mal a réunir les bonnes équipes, & établir un ensemble raisonnable d’objectifs, puis a les at- teindre. Pour attirer une équipe de classe mondiale, votre entreprise doit proposer un probléme qui soit suffisamment excitant pour séduire des gens compétents qui travaillent déja dans d’autres organisations. Ce n’est pas une tache facile, et vous devez y réfléchir lorsque vous définissez les objectifs que vous vous fixez dans le cadre de la création d’un environnement d’apprentissage automatique. Chapitre3 Jeter un regard vers avenir 47 Partie 2 Preparer vos outils pour Uapprentissage automatique Chapitre 4 Installer une distribution R C e livre s’appuie sur deux langages pour démontrer l’apprentis sage automatique. Bien dtr, il y a beaucoup d’autres possibilit mais ces deux langages, R et Python, fournissent les meilleures res- sources et capacités pour étudier et travailler avec des exemples @’ap- prentissage automatique. De plus, Vindustrie utilise le plus souvent ces deux langages. La premitre section de ce chapitre traite de cer- taines des distributions R que vous pourriez envisager d’utiliser pour répondre a des besoins spécifiques d’apprentissage automatique. Ce chapitre vous aide également 4 comprendre pourquoi ce livre emploie cette distribution R particuliére. En outre, vous verrez dans ce chapitre comment installer R sur votre systéme (en supposant que vous utilisez Linux, Mac OS X ou Windows comme plate-forme). Le chapitre suivant vous donne quelques informations de base sur la facon dont R fonctionne pour faciliter le suivi des exemples a venir. Ce livre ne peut pas vous fournir un tutoriel R complet (un autre livre entier serait nécessaire pour effectuer cette tache), donc le prochain chapitre est plutét un apercu concu pour vous aider & démarrer rapi- dement. apercu. Vous avez besoin des deux langages pour exécuter tous les exemples du livre, car ces exemples s’appuient sur le langage le plus adapté pour réaliser la tache correspondante. En dautres termes, en suivant les exemples de ce livre, vous découvrirez non seulement com- ment effectuer des taches d’apprentissage automatique, mais aussi quel langage convient le mieux a une tache particuliére. ® Les Chapitres 6 et 7 vous aident 4 installer Python et a en obtenir un Méme si vous choisissez de ne pas installer R en utilisant les procédures décrites ici, vous devez suivre la démarche exposée dans la derniére 51 52 section du chapitre. En effet, elle vous aide & installer le code source et les jeux de données utilisés dans ce livre. Si vous n’installez pas ces ressources, il vous sera beaucoup plus difficile de suivre le texte. Uti- liser le code source téléchargeable est une excellente idée parce qu’il vous aide & vous concentrer sur la découverte du fonctionnement de Papprentissage automatique, plutdt que de perdre du temps & écrire du code sans erreur. Vous pouvez toujours recréer les exemples ma- nuellement plus tard pour pratiquer vos nouvelles compétences, mais Putilisation du code source téléchargeable (disponible sur http://w. dummies .com/extras/machinelearning) lors de la premiére passe amé- liorera grandement l’apprentissage. Choisir une distribution R avec l'apprentissage automatique en téte Rest une combinaison d’un environnement et d’un langage. C’est une forme du langage de programmation S, que John Chambers, Rick Bec- ker et Allan Wilks ont créé a origine chez Bell Laboratories pour facili- ter le travail sur les statistiques. Le but du langage R est de transformer rapidement et facilement des idées en logiciels. En d’autres termes, R est un langage concu pour aider quelqu’un qui n’a pas beaucoup d’ex- périence en programmation a créer du code sans une courbe d’appren- tissage énorme. Ce livre utilise R au lieu de S parce que R est un produit librement téléchargeable qui peut exécuter la plupart du code $ sans modification. En revanche, S est payant via le logiciel S-Plus de la so- ciété Tibco. Par rapport aux exemples utilisés dans le livre, R est un excellent choix. Vous pouvez en savoir plus sur R en général a l’adresse https: //www. r-project .org/about .html. Evitez les généralisations abusives sur les langages utilisés pour l’ap- prentissage automatique. R et Python sont des langages populaires pour différentes raisons. Des articles tels que « En science des données, le langage R avale Python » (https: //bit. ly/1TWQjxq) semblent d’abord affirmer que R devient plus populaire pour une raison x. L’auteur re- vient sagement sur cette déclaration en soulignant que R est mieux utilisé a des fins statistiques, et que Python est un meilleur langage pour un usage général. Les meilleurs développeurs ont toujours un as- sortiment d'outils de programmation dans leurs ceintures porte-ou- tils pour faciliter l’exécution des taches. Les langages répondent aux besoins des développeurs, et vous devez donc utiliser le bon langage selon le travail & accomplir. Aprés tout, tous les langages finissent par devenir du code machine qu’un processeur est capable de comprendre Partie 2 Préparer vos outils pour lapprentissage automatique — code auquel peu de développeurs s’intéressent encore du fait que les langages de programmation de haut niveau facilitent considérable- ment le développement. Vous pouvez obtenir une copie de base de R sur le site du Comprehen- sive R Archive Network (CRAN) a https://cran.r-project .org/. Le site fournit & la fois des versions de code source et des versions compi- lées de la distribution R pour différentes plates-formes. A moins que vous n’envisagiez d’apporter vos propres modifications au support R de base ou que vous ne souhaitiez approfondir le fonctionnement de R, obtenir la version compilée est toujours préférable. Si vous utilisez RStudio, comme suggéré dans le paragraphe suivant, vous devez aussi télécharger et installer une copie de R. Ce livre utilise la version Desktop de RStudio (https: //ww.rstudio. com/products/rstudio/#Desktop) pour rendre le travail avec R encore plus facile. Ce produit est un téléchargement gratuit, et vous pouvez Pobtenir sous Linux (Debian/Ubuntu, RedHat/CentOS, et SUSE Linux), Mac, et Windows. Le livre n’utilise pas les caractéristiques avancées de la version payante du produit, et vous n’aurez pas besoin des fonc- tionnalités du serveur RStudio. En d’autres termes, seule l’édition open source nous intéresse dans ce livre. Vous pouvez essayer d’autres distributions R si vous n’aimez pas RS- tudio. Les distributions alternatives les plus courantes sont StatET (http: //ww.walware.de/goto/statet), Red-R (https://bit.1y/2Z6g- B9e) et Rattle (http://rattle.togaware.com/). Ce sont tous de bons produits, mais RStudio semble avoir le plus grand nombre d’utilisa- teurs et c’est le produit le plus simple & utiliser. Vous pouvez lire les discussions sur les différents choix en ligne a des adresses telles que https://bit.ly/2k7yjDH. Si vous utilisez une distribution alternative, les captures d’écran du livre ne correspondront pas & ce que vous allez voir ici, et les fichiers de code source téléchargeables peuvent ne pas se charger sans erreur (mais ils devraient quand méme fonctionner avec de petites retouches). Installer R sous Windows Windows n’est pas livré avec R préinstallé. Avant de pouvoir vous tour- ner vers RStudio, vous devez donc installer une copie de R sur votre systéme. RStudio est livré avec une application d’ installation graphique pour Windows, ce qui est une bonne nouvelle. Bien entendu, vous avez besoin d’une copie du fichier d’installation avant de commencer, et vous trouverez les informations de téléchargement nécessaires dans la Chapitre 4 Installer une distribution R 53 section « Choisir une distribution R avec l’apprentissage automatique en téte », plus haut dans ce chapitre. La procédure suivante devrait fonctionner correctement sur n’importe quel systéme Windows : @ Localisez sur votre systéme la copie de R que vous avez téléchar- gée. Le nom de ce fichier varie, mais il apparait normalement sous une forme telle que R-3.6.1-win.exe. Le numéro de version apparait dans le nom du fichier. Dans ce cas, le nom de fichier vous indique que vous avez téléchargé la version 3.6.1 (la derniére version en date au moment oit ce texte est écrit). Si vous utilisez une autre version, il se peut que vous rencontriez des problémes avec le code source et que vous ayez besoin de faire des ajustements en travail- lant avec lui. © Double-cliquez sur le fichier d’installation. La boite de dialogue Langue de |’assistant d’ installation, illustrée sur la Figure 4..1, s’affiche. Figure 4.1 Choisissez une langue & utiliser pour le script d'installation de R. Langue de I'assistant d’installation x Veuillez sélectionner la langue qui sera utilisée par assistant d'instaliation. © Choisissez une langue dans la liste, puis cliquez sur OK. @ Passez le contrat de licence en cliquant sur Suivant. Notez au passage que vous installez la version 3.6.1, comme le montre la Figure 4.2. © Uassistant vous demande oi vous voulez installer R, comme V’il- lustre la Figure 4.3. Le livre suppose que vous utilisez ’emplacement d’installation par défaut. Si vous utilisez un autre emplacement, vous devrez peut- 54 Partie 2 Préparer vos outils pour l'apprentissage automatique Figure 4.2 Vérifiez que vous avez installé la bonne version de R. 1 instaliation - R for Windows 36.1 Sie F x Information Sincmmmemeimunue continuer. Lorsque vous &tes prét & continuer, clique sur Suivant. [ Copyright (C) 1989, 1991 Free Software Foundation, ne. | 51 Franklin St Fifth Flor, Boston, MA 02110-1301 USA | Everyne is permitted to copy end distribute verbatim copies ofthis hence document, bt canging itis not alowed. Preamble ‘The lcenses for mast software are designed to take avy your freedom to share and change f. By contrast, the GNU General Public |Liense is intended to guarantee your freedom to share and change free _software-to make sure the software is fee for ali uses. This |General Public License apples to most ofthe Free Software | Foundation's software and to any other program whose authors commit to ‘using (Some ather Free Software Foundation software is covered by the GNU brary General Publc License instead.) You can apply to Iaeeecaes en Choisir un emplacement d’installation pour R. 1 Installation - R for Windows 3.6.1 - x Dossier de destination aaameaemeiees R “| Cassistant va installer R for Windows 3.6.1 dans le dossier suvent. ‘Pour continuer, ciquez sur Suivent. Si vous souheitez choisr un dossier différant, ‘chquez sur Parcourir. Le programme requiert au moins 2,5 Mo @espace disque disponible. Chapitre 4 Installer une distribution R 55 étre modifier les procédures plus tard dans le livre pour travailler avec votre propre installation. © Choisissez un dossier d’ installation (si nécessaire) et cliquez sur Suivant. L’assistant vous demande ensuite quels composants vous souhai- tez installer, comme |’illustre la Figure 4.4. Etant donné que les composants ne consomment pas beaucoup d’espace, tout valider est le meilleur moyen de s’assurer que vous disposerez dune ins- tallation compleéte. Figure 4.4 Déterminez les composants a installer. &B instatiation - R for Windows 3.6.1 ~ ; x ‘Composant & installer Quets composants de application souhaitez-vous installer ? ‘Sélectionnez les composants que vous désirez installer; décochez les composonts ‘que vous ne désirez pas installer. Cliquez ensuite sur Suivant pour continuer @ Modifiez la liste des composants sélectionnés (si nécessaire) en cochant ou décochant les cases, puis cliquez sur Suivant. L’assistant vous demande si vous souhaitez personnaliser les options de démarrage, comme illustré sur a la Figure 4.5. La mo- dification des options de démarrage nécessite une connaissance avancée du fonctionnement de R. Le choix par défaut (Non) fonc- tionnera trés bien pour ce livre. © Sélectionnez l’option Non et cliquez sur Suivant. 56 Partie 2 Préparer vos outils pour apprentissage automatique Figure 4.5 Utilisez les options de démarrage par défaut sauf si vous avez une connais- sance avancée de R. 1B installation - R for Windows 3.6.1 - 1 x ‘Options de démarrage Samunaik ae @ ‘Veuillez spécfier ou! ou non, puis eiquez sur Suivent. O oui (aémarrage personnalisé) (@ lion (accopter ies valewrs par faut) L’assistant vous demande oii vous voulez placer les icénes R (les « raccourcis de programme >») dans le menu Démarrer, comme Villustre la Figure 4.6. Ce livre suppose que vous utilisez la confi- guration par défaut du menu Démarrer. Si vous choisissez un autre endroit, vous devrez peut-étre modifier plus tard les procédures. © Choisissez une configuration du menu Démarrer (si nécessaire), puis cliquez sur Suivant. L’assistant vous demande de configurer d’autres options pour le script d’installation, comme illustré sur a la Figure 4.7. Assu- rez-vous de conserver actives les options de la section Entrées dans le registre, comme sur la figure. Sinon, vous rencontrerez des problémes lors de la configuration de l'utilisation de RStudio. @ Modifiez les taches supplémentaires sélectionnées si nécessaire et cliquez sur Suivant. Une boite de dialogue Installation en cours s’affiche. Elle vous informe de la progression de installation. Une fois le processus terminé, une boite de dialogue de fin apparait a sa place. Chapitre 4 Installer une distribution R 57 58 ene Définissez les informations du menu Démarrer pour R si nécessaire. 1B installation - R for Windows 3.6.1 a ita ethene i a, | assistant vo créer les raccourcis du programme dans le dossier du menu fmemen_Démarrer indiqué c-dessous. (Ciquez sur Suivent pour continver. Chquez sur Parcourr si vous souhaiter ‘sélectionner un autre dossier du menu Démerrer. (ne pes créer de dossier dans le menu Démerrer pete Ea Figure 4.7 Modifiez les taches supplémentaires si besoin est BF instaliation - R for Windows 3.6.1 - "aches supplémentaires — | ‘Sdlecionnes les tiches suppémentares que Fassstont instalation dot effectuer ‘pendant Pnsaition de for Windows 3.6.1, puis chez sur Suvant. ‘otnes supplémentaires : iter ne iene sure freon) (Cexter une toe dns la barre de Lancement rape Entrées dons ie rege: [ emregisrer le numéro de version dons le reese EX assocer R avec les fichiers .RData Partie 2 Préparer vos outils pour 'apprentissage automatique @ ® Cliquez sur Terminer. Vous étes maintenant prét a installer RStudio pour pouvoir utiliser R plus facilement. Localisez la copie téléchargée de RStudio sur votre systéme. Le nom de ce fichier varie, mais normalement il apparait sous une forme telle que RStudio-1.2.1335.exe. Le numéro de version est intégré dans le nom du fichier. Dans ce cas, le nom de fichier fait référence a la version 1.2.1335, qui est celle qui est utilisée pour ce livre (la derniére en date au moment oi ce texte est écrit). Si vous utilisez une autre version, il se peut (mais c’est trés improbable) que vous rencontriez des problémes avec le code source et que vous ayez besoin de faire des ajustements en travaillant avec lui. Double-cliquez sur le fichier d’installation. Vous pouvez voir une boite de dialogue de contréle de compte utili- sateur qui vous demande si vous voulez. exécuter ce fichier. Cliquez simplement sur Oui si cette boite de dialogue apparait. Vous voyez apparaitre la boite de dialogue Installation de RStudio semblable a celle illustrée sur la Figure 4.8. La boite de dialogue exacte que vous voyez dépend bien stir de la version du programme installation RStudio que vous téléchargez. Cliquez sur Suivant. Lassistant demande oit installer RStudio sur le disque, comme Pillustre la Figure 4.9. Le livre suppose que vous utilisez ’empla- cement par défaut. Si vous choisissez un autre dossier, vous devrez peut-étre modifier plus tard certaines procédures pour travailler avec votre propre installation. @® Choisissez un emplacement d’installation (si nécessaire), puis cliquez sur Suivant. L’assistant vous demande oti vous voulez placer les icdnes RStudio (« raccourcis du programme >>) dans le menu Démarrer, comme illustré sur la Figure 4.10. Ce livre suppose que vous utilisez la configuration par défaut du menu Démarrer. Si vous choisissez un autre emplacement, vous devrez peut~étre modifier plus tard les procédures décrites dans le livre. @ Choisissez une configuration du menu Démarrer (si nécessaire), puis cliquez sur Installer. Chapitre 4 Installer une distribution R 59 60 Figure 4.8 Le processus d installation commence par vous indiquer que vous installez RStudio, @ Installation de RStudio mt x Bienvenue dans le programme installation de RStudio Yous étes sur le point dnstaler RStudo sur votre ordinate. Avant de démarrer nstalation, fest recommandé de fermer toutes es autres applications. Cela permetira ia mise & jour de certains fichiers systime sans redémarrer votre ordinateur. ‘Ciquez sur Suvant pour continue. Figure 4.9 Spécifiez un emplacement d'installation pour RStudio. @ Installation de RStudio os x Choisissez le dossier dinstallation CChoisissez le dossier dans lequelnstaler RStudso. ‘Cec instalera RStudo dans le dossier suivant. Pou installer dans un au dossier, chavez ‘su Parcourr et choise? un autre dossier. Ciquez sur Suvant pour contruer. matrices ; » tableaux ; » facteurs ; » data frames. R peut supporter d’autres types d’objets, mais ce sont les plus courants. Ce chapitre traite des types d’objets R les plus souvent utilisés dans le livre. L’objet R le plus facile a comprendre et a utiliser est le vecteur. Un vecteur peut contenir les types de données de base suivants : » Logique : Contient une valeur booléenne telle que TRUE (VRAI) ou FALSE (FAUX) qui indique une valeur de vérité. » Numérique : Contient n’importe quel nombre tel que 12.3 ou 45. Une valeur numérique peut inclure un nombre entier (sans point décimal) ou un nombre réel (avec un point décimal). » Entier : Contient une valeur entiére - un nombre sans point dé- cimal, tel que 21 ou 34L. Le nombre ne doit pas contenir de partie décimale, et vous devez ajouter la lettre L au nombre pour indiquer explicitement que vous voulez qu’il apparaisse comme un entier. » Complexe : Spécifie une valeur numérique qui contient a la fois une partie réelle et une partie imaginaire, telle que 3 + 2i. » Caractére : Définit un caractére unique ou une chaine de caractéres, tel que ‘a’, «Hello», «TRUE», ou ‘12.3’. Ce type de donnée peut utiliser des apostrophes ou des guillemets doubles comme délimi- teurs. 72 Partie 2 Préparer vos outils pour l'apprentissage automatique Chapitre 5 Coder en R a aide de RStudio 73 lisant le type de données Raw. Pour créer un type de données brutes, e Test également possible de stocker des chaines au format brut en uti- vous utilisez la fonction charToRaw(). L’objet R résultant contient les valeurs numériques correspondant a chaque caractére de la chaine ori- ginale. Par exemple, le code suivant : NaVar <- charToRaw( ‘Hello!’) print (Mavar) produit la sortie suivante : 1] 48 65 6c 6c 6F 21 Vous pouvez déterminer le type d’une variable en utilisant la fonction class(). Par exemple, si vous utilisez la fonction class() avec le code précédent, comme dans print(class(MaVar)), vous obtenez la sortie suivante : 1] «raw» Travailler avec les vecteurs Les vecteurs peuvent stocker des valeurs individuelles, comme décrit dans la section « Comprendre les types de données de base », plus haut dans ce chapitre, ou bien un groupe de valeurs. Lorsque vous tra- vaillez avec un groupe de valeurs, vous utilisez la fonction ¢() pour les combiner. Tous les membres d’un vecteur sont du méme type. Par conséquent, lorsque vous créez un vecteur a aide d’un code tel que MesChiffres <- c(1, 2, 3), vous obtenez un vecteur de nombres. La fonction print(MesChiffres) affiche trois valeurs distinctes : (4) 123 Lorsque vous utilisez la fonction class(Meschiffres), vous voyez une sortie comme celle-ci : [1] «numeric» Toutes les valeurs d’un vecteur doivent étre du méme type. Par consé- quent, si vous mélangez des types dans un vecteur, par exemple en appelant MonVecteur <- c(1, «Hello», TRUE), vous obtenez toujours trois valeurs distinctes. Cependant, la fonction print(MonVecteur) af- fichera cette sortie : [1] «1» «Hello» «TRUE> ® Appeler class(MonVecteur) vous indiquera que toutes les entrées sont 74 maintenant de type caractére. Lorsque vous travaillez avec des vec- Partie 2 Préparer vos outils pour U'apprentissage automatique teurs, R effectue automatiquement toutes les conversions de type de donnée nécessaires pour maintenir |’intégrité de objet R. Par consé- quent, vous pouvez rencontrer des modifications indésirables si vous utilisez le mauvais type d’objet R. Organiser des données a l'aide de listes Contrairement aux vecteurs, les listes peuvent contenir plusieurs types de données. En fait, les listes peuvent contenir des vecteurs, d’autres listes et des fonctions (un sujet abordé dans la section « Travailler avec des fonctions >, plus loin dans ce chapitre). Par conséquent, les listes peuvent étre plus polyvalentes que les vecteurs pour stocker des don- nées exactement comme vous avez |’intention de les mémoriser. Pour créer une liste, vous devez utiliser la fonction list(). Sinon, R suppose que vous voulez créer un vecteur. Par exemple, MaListe <- list(1, «Hello», TRUE) crée une liste avec trois entrées séparées du type attendu. L’utilisation de la fonction print (MaListe) affiche la sor- tie suivante : ((2]) (ay)1 ((2]) [1] «Hello» ((3]] [1] TRUE Chaque entrée est distincte. Par conséquent, lorsque vous appelez class(MaListe), la sortie est une liste. Chaque entrée est aussi une liste. Pour le vérifier, vous devez connaitre la notion d’indice. Un indice vous donne accés a un membre particulier de la liste. Par exemple, si vous appelez print (MaListe[1] ), vous verrez le premier membre de la liste MaListe : (4) fy. Ce que vous voyez est en fait une liste contenant les données réelles auxquelles vous voulez accéder. Lorsque vous utilisez la fonction class(MaListe[1]), vous voyez toujours une sortie d’une liste. Pour accéder effectivement l’élément de données interne, vous devez faire référence élément de la liste. Utilisez la fonction print (Ma- Liste[[1]]) pour voir la valeur de 1 et la fonction class (MaListe[[1]]) pour vérifier qu’il s’agit bien d’un type de donnée numérique. Chapitre 5 Coder en R a aide de RStudio 75 Une liste peut contenir des vecteurs. Pour créer un vecteur dans une liste, vous utilisez la fonction c(). Par exemple, MaListeVect <- list(c(1, 2, 3)) crée une liste qui contient un vecteur. La fonction print (Ma- ListeVect) affiche la sortie suivante : (2) (1) 123 Pour accéder a un membre particulier du vecteur, vous utilisez nou- veau des indices incorporés. Par exemple, si vous voulez imprimer le deuxigme membre du vecteur, vous utilisez la fonction print (Ma- ListeVect[[1]][2]). La sortie est la suivante (4) 2 Travailler avec des matrices Les vecteurs et les listes sont des objets R unidimensionnels. Cepen- dant, vous avez souvent besoin de deux dimensions pour exprimer les données avec précision. Une matrice fournit pour cela une méthode bi- dimensionnelle. Vous pouvez créer des matrices contenant n’importe quel type de données, mais on s’en sert normalement pour contenir des données numériques. Les sections suivantes vous donnent un apercu de Putilisation des matrices. Créer une matrice de base La matrice représente une évolution dans la complexité de R. Comme pour une liste, vous utilisez une fonction spéciale, la fonction matrix(), pour créer une matrice. Cependant, et contrairement a ce qui se passe pour une liste, un appel a la fonction matrix() peut contenir plus que de simples données. En fait, une fonction matrix() se définit de la fa con suivante : matrix(data, nrow, ncol, byrow, dimnames). Chacun des arguments de la fonction aide R a créer précisément la matrice que vous voulez obtenir. Voici une bréve description de chacun de ces ar- guments : » data : Définit les données utilisées pour remplir les éléments de la matrice. Les données apparaissent normalement comme éléments @un vecteur. » now : Spécifie le nombre de lignes a créer. » ncol : Spécifie le nombre de colonnes a créer. 76 Partie 2 Préparer vos outils pour 'apprentissage automatique » byrow : Définit la disposition des éléments vectoriels dans la ma- trice. Lorsqu’il est réglé sur TRUE, R arrange les éléments vectoriels ligne par ligne. » dimnames : Détermine les noms affectés aux lignes et aux co- lonnes. Lors de la création d’une matrice de base, vous pouvez obtenir une matrice vide en appelant la fonction matrix() sans aucun argument, mais une telle matrice n’est pas particuliérement utile. Normalement, vous fournissez au minimum les données devant étre contenues dans la matrice. Par exemple, appeler MaMatrice <- matrix(c(1:5)) crée une matrice qui contient les valeurs de 14 5 disposées dans une seule co- lonne. Notez que cet exemple utilise une nouvelle forme de la fonction c() qui spécifie une plage de valeurs, ici de1 5, en séparant le début de cette plage de sa fin avec un double point. L'appel de fonction print(- MaMatrice) montre le résultat correspondant : Lal BESRE onene Si vous voulez que votre matrice contienne plusieurs colonnes, vous devez spécifier au minimum le nombre de lignes. Par exemple, appeler MaMatrice <- matrix(c(1:6), 3) crée une matrice comportant trois lignes. L’appel de fonction print (MaMatr ice) affiche la sortie suivante : La) 2] 1] 1 4 (2,] 2 5 ta). 3, 3 L’argument ncol définit également le nombre de colonnes que vous voyez. Dans ce cas, lorsque les données d’entrée ne contiennent pas assez dinformations pour remplir la matrice, R répéte simplement les données jusqu’a ce que la matrice soit pleine. Par exemple, appeler Ma- Matrice <- matrix(c(1:6), 3, 4) crée une matrice avec trois lignes et quatre colonnes. Cependant, il n’y a pas assez de données pour remplir cette matrice. Par conséquent, lorsque vous appelez la fonction print ( - NaMatrice), vous voyez les données dupliquées comme indiqué ci-des- sous : C4) £2] £3) 04] Joa 4 41 4 iz 2 6 2 5 [alt 3-6. ae Chapitre 5 Coder en R a l'aide de RStudio 77 78 Modifier la disposition des vecteurs Lorsque vous utilisez les techniques de construction d’une matrice de base, vous obtenez une matrice dans laquelle les éléments sont dispo- sés dans l’ordre des colonnes. Par exemple, lorsque vous appelez MaNa- trice <- matrix(c(1:8), 2, 4), vous obtenez comme sortie : 64) 02] 03) 04] ile Deets 128 ave Bench (er ee ee ee Mais il se peut que vous ne souhaitiez pas toujours remplir la matrice dans l’ordre des colonnes. C’est 14 que l’argument byrow entre en jeu. Lorsque vous définissez cet argument sur TRUE, le remplissage de la matrice s’effectue ligne par ligne. Appeler MaMatrice <- matrix(c(1:8), 2, 4, TRUE) produira donc comme sortie 62) £2] £3) £4) f7Joo1 2 3 4 (er) bt ge Accéder aux éléments individuels Comme pour les listes, vous utilisez des indices pour accéder aux élé- ments individuels d’une matrice. Cependant, vous avez maintenant deux dimensions a prendre en compte. Par conséquent, pour accéder & un élément individuel, vous spécifiez normalement un indice de ligne et un indice de colonne. Par exemple, lors de |’utilisation de la ma- trice créée par l’appel de fonction MaMatrice <- matrix(c(1:8), 2, 4, TRUE), un appel a print (MaMatrice[2,2]) donnera comme résultat a1 6. Vous spécifiez toujours d’abord la ligne, puis la colonne. Par exemple, print(NaMatrice[1, 2]) donnera en sortie [1] 2, tandis que print (Na- mauvais ordre provoquera des problémes avec vos scripts. Vous pouvez également accéder & plusieurs éléments en utilisant des plages. Par exemple, |’appel de fonction print(MaMatrice[1:2, 2]) renverra : Matrice[2, 1]) retournera [1] 5. Spécifier la ligne et la colonne dans le [1] 26 Vous pouvez également utiliser des plages pour la colonne. Par exemple, Vappel de fonction print(MaMatrice(1:2, 2:3]) produira comme sortie : G4) (2) Partie 2 Préparer vos outils pour tapprentissage automatique Nommer les lignes et les colonnes Dans certains cas, le fait de nommer les lignes et les colonnes rend les données plus significatives. Les humains ne sont pas particuliérement 4 Paise avec les lignes et les colonnes nommées de maniére purement numérique, parce que nous oublions ce que les nombres signifient. Pour nommer les lignes et les colonnes d’une matrice, vous devez fournir un vecteur contenant les noms voulus. Les noms des lignes apparaissent en premier, suivis de ceux des colonnes. Par exemple : RN = c(«Ligt», «Lig2») CN = c(«Colim, «Col2», «Col3», «Col4») MaMatrice <- matrix(c(1:8), nrow=2, dimnames=list(RN, CN)) ‘Vous devriez remarquer quelque chose de nouveau a propos de la fonc- tion matrix(). Jusqu’a présent, cette fonction s’appuyait sur des ar- guments positionnels — ceux qui étaient présentés dans l’ordre et par position. Dans ce cas, vous devez inclure chaque argument, et chacun des arguments doit apparaitre dans la bonne position. L’exemple pré- cédent utilise des arguments nommés, dans lesquels le nom de l’argu- ment apparait avec un signe égal, suivi de la valeur de cet argument. Dans ce cas, vous n’avez pas besoin de fournir tous les arguments, et les arguments n’ont pas a apparaitre dans l’ordre. Le résultat de cet exemple est le suivant : col1 col2 col3 col4 (gt, Sav sa as Sa Ligaen 2ai eas rvepiege utilisation de lignes et de colonnes nommées rend I’accés aux élé- ments plus clair. Par exemple, pour voir le contenu de Lig2, Col2, vous utiliserez l’appel de fonction print(MaMatrice[«Lig2», «Col2»]), ce qui donne en sortie [1] 4. Maintenant que vous avez des noms de lignes et de colonnes, vous de- vez savoir comment y accéder une fois votre nouvelle matrice créée. La fonction rownames() travaille avec les noms des lignes, et la fonction colnanes() avec les noms des colonnes. Par exemple, pour récupérer Pensemble actuel des noms de colonnes, vous appelez la fonction col- names (MaMatrice). Pour redéfinir les noms de colonnes avec une valeur différente, il suffit de faire appel @ la fonction colnames( ). En utilisant la syntaxe colnames(MaMatrice) <- c(«Colonnei», « Colonne2», « Co- Chapitre 5 Coder en Ra aide de RStudio 79 80 lonne3», « Colonne4»), le nom des colonnes est modifié de sorte que la sortie apparait maintenant comme suit : Colonne1 Colonne2 Colonne3 Colones Ligt 1 3 5 7 Lig2 2 4 6 8 oO Vous pouvez également décider de ne plus vouloir nommer les lignes et/ou les colonnes. La valeur prédéfinie NULL signifie « rien >. Vous Putilisez lorsque vous ne voulez pas qu’un élément ait de valeur du tout. L’utilisation de la commande rownames(MaMatrice) <- NULL remet les noms des lignes a rien. Par conséquent, la sortie devient alors : Colonne1 Colonne2 colonne3 Colonned (1,] 1 3 5 7 [2] 2 4 6 8 Des dimensions multiples a Vaide des tableaux Les données ne se répartissent pas toujours gentiment dans seulement ‘une ou deux dimensions. Parfois, vous avez besoin de trois dimensions voire plus pour exprimer un jeu de données de fagon adéquate. Dans ce cas, vous pouvez utiliser un tableau pour contenir les informations. Un tableau peut posséder plusieurs dimensions pour exprimer des re- lations complexes. Méme si ce chapitre fonctionne avec des exemples tridimensionnels, les tableaux peuvent avoir un nombre quelconque de dimensions. ® Un tableau a & sa disposition la plupart des fonctions qu’une matrice utilise pour effectuer des taches. En fait, un tableau est une structure de matrices organisée de maniére a permettre la multiplication des di- mensions. Les sections suivantes vous donnent un apercu des tableaux et présentent quelques facons simples de les utiliser. Créer un tableau de base Vous utilisez la fonction array() pour créer des tableaux. La syntaxe array(data, dim, dimnames) permet d’obtenir des tableaux raisonna- blement complexes. » data : Définit les données utilisées pour remplir les éléments du tableau. Les données apparaissent normalement comme éléments dun vecteur. Partie 2 Préparer vos outils pour Vapprentissage automatique » dim : Spécifie le nombre d’éléments a créer. > dimnames : Détermine les noms affectés aux lignes et aux co- lonnes. Comme avec une matrice, vous pouvez créer un tableau vide et y ajouter des informations plus tard. Dans la plupart des cas, cependant, méme un tableau simple contient des données. Par exemple, MonTableau <- array(c(1:8)) crée un tableau unidimensionnel avec des valeurs allant de 18, qui ressemble et agit comme un vecteur, Un tableau plus pratique contiendrait au moins deux dimensions. Vous pouvez spécifier le nombre de dimensions au moment oli vous créez le tableau, comme vous le faites pour une matrice, ou vous pouvez redi- mensionner le tableau ultérieurement. Par exemple, dim(MonTableau) <- c(4,2) change le tableau précédent pour passer d’une dimension a deux. Il ressemble alors beaucoup a une matrice. Aprés cette modifica- tion, on obtient la sortie suivante : G4) (2) [igri [pda sagas 8 [3] 3 7 LiF hie il Bien sir, vous pouvez redimensionner le méme tableau avec trois di- mensions en appelant dim(MonTableau) <- ¢(2,2,2). La sortie se com- pose maintenant de deux matrices, comme ceci : mel C4) £2) BAS e ea) Ep ]s a2 250k: re U4) (£2) Ete] aneBaraal: rly Cae? Nommer les lignes et les colonnes Comme lorsque vous travaillez avec une matrice, vous pouvez nommer les éléments d’un tableau. L’utilisation de noms peut faciliter votre travail. Par exemple, vous pouvez utiliser l’appel de fonction : MonTableau <- array(c(1:8), ¢(2,2,2), List(c(«Ligi», »Lig2»), c(«Coli», «Col2»),c(«Mati, »Mat2»))) Chapitre 5 Coder en R& aide de RStudio 81 pour créer un tableau avec des éléments nommés. Notez l’ordre : noms des lignes, puis des colonnes et enfin des matrices. Il est également possible de définir les noms individuellement, tout comme vous le pouvez lorsque vous travaillez avec une matrice. Affichez le tableau l'aide de print(MonTableau). La sortie produite par cet exemple est la suivante : by Mata, col1 col2 ge ae: 1g? 752, 24 1, Mat2 colt col2 Tigd 8 eT, idiys 6" “a Pour accéder & un élément de tableau spécifique, vous spécifiez son indice comme vous le faites avec une matrice, mais vous devez fournir des informations pour chaque dimension. Par exemple, print (MonTa- bleau[«Ligi», «Col2», «Mat2»]) affiche comme sortie de [1] 7. Vous pouvez également fournir un indice partiel ou utiliser des numéros a la place des noms. Par exemple, print (MonTableau(, ,2]) affiche la sortie suivante : col col2 ligt 5 7 Liga, 6) 8 Notez que méme si vous avez nommé les éléments, vous pouvez tou- jours utiliser des valeurs numériques pour y accéder. Les tableaux sup- portent le renommage en utilisant les mémes techniques qu’avec une matrice. Il n’y a pas cependant de fonction matnames(). Vous avez accés a rownames() et 4 colnames() comme auparavant, mais pour renommer une matrice, vous utilisez la fonction générique dimnames(). La fonc- tion dimnames() s’applique & toutes les dimensions, quel que soit leur nombre. Ici, les noms des matrices apparaissent comme étant le troi- sigme indice, et donc vous utilisez quelque chose comme dimnames(- NonTableau)[[3]] <- c(«Matrice1», «Matrice2») pour renommer les matrices, Le résultat de cette modification est le suivant : 1, Matricet Col1 col2 cigs Ligeia 82 Partie 2 Préparer vos outils pour lapprentissage automatique 1 Matrice2 colt col2 Liga, egest7" (ge ens e Créer un data frame Les data frames (en quelque sorte des tableaux de données) sont des structures tabulaires. En d’autres termes, ils s’apparentent 4 une ma- trice ou a un tableau bidimensionnel en ce sens qu’ils ont des lignes et des colonnes. Cependant, les data frames fonctionnent davantage comme tne base de données. Chaque colonne représente une variable, et chaque ligne un enregistrement. Par exemple, lorsque vous décrivez une personne, vous pouvez inclure son nom et sa taille. Les noms et les tailles forment deux colonnes — deux variables utilisées pour dé- crire une personne. La combinaison d’un nom individuel et d’une taille constitue une ligne - un enregistrement unique dans le data frame. Les sections suivantes traitent plus en détail des data frames. Comprendre les facteurs Un facteur (factor) est une structure spéciale qui vous permet de caté- goriser les données. Vous pouvez créer des facteurs a l’aide de nombres (avec ou sans point décimal) ou de chaines de caractéres. Ce qui rend les facteurs spéciaux, c’est que vous voyez des valeurs uniques seu- lement aprés avoir créé un facteur. Chacune de ces valeurs est un ni- veau (level). Pour créer un facteur, vous utilisez la fonction factor(). Par exemple, appeler MonFacteur <- factor(c(«Nord», «Sud», «Est», «Quest», «Quest»)) crée un facteur contenant des chaines. La sortie renvoyée par print (MonFacteur ) est la suivante : [1] Nord Sud Est Ouest Ouest Levels: Est Nord Quest Sud Méme si le facteur contient cing entrées, il n’a que quatre niveaux du fait que la valeur Ouest est répétée. Le facteur suit les entrées indivi- duelles des données, mais les niveaux ne contiennent que des valeurs uniques. Utilisez la fonction levels(), comme dans levels(MonFac- teur), pour obtenir uniquement les niveaux. Si vous voulez plutét dé- nombrer les niveaux, vous utilisez la fonction nlevels(), comme dans nlevels(MonFacteur), qui donne comme sortie [1] 4. Vous pouvez aussi changer l’ordre des niveaux en modifiant l’entrée levels via un vecteur spécifiant de nouvelles entrées, comme dans 1e- Chapitre 5 Coder en R a aide de RStudio 83 vels(MonFacteur) <- c(«Nord», «Sud», «Est», «Quest»). Toutefois, vous devez procéder avec prudence, car R renomme également les va- leurs individuelles. La nouvelle sortie affichée par print (MonFacteur) est la suivante : [4] Sud Ouest Nord Est Est Levels: Nord Sud Est Quest Dans ce cas, R renomme toutes les valeurs Nord en Sud parce que Sud apparait maintenant 1a oii Nord se trouvait a l’origine. De méme, toutes les entrées Ouest apparaissent maintenant comme entrées Est. La meilleure fagon de changer l’ordre des niveaux de facteur consiste @ placer les entrées dans une nouvelle variable. Le code suivant en donne un exemple. Appeler SecondFacteur <- factor(MonFacteur, le- vels=c(«Nord», «sud», «Est», «Quest»)) produit comme résultat : [1] Nord sud Est Ouest Ouest Levels: Nord Sud Est Ouest gé. Lorsque vous apportez des modifications aux données @origine, ® Les entrées sont toujours les mémes, mais ordre des niveaux a chan 84 assurez-vous de tester toutes les modifications pour déterminer si elles ont des conséquences imprévues. Si vous avez des doutes quant au bon fonctionnement d’un changement, placez les données modifiées dans une nouvelle variable. Vous devez comprendre que R fournit toutes sortes de manipulations de données, et qu’une manipulation peut affecter des facteurs spéci- fiques. Supposons que vous créez un facteur numérique, tel que Nu- mFacteur <- factor(c(1, 2, 3, 4, 1, 2, 4, 4, 3)). Lorsque vous appelez print (NumFacteur ), vous obtenez le résultat escompté : (4123412113 levels: 1234 Les valeurs numériques pouvaient sembler étre une bonne idée au dé- but, mais maintenant vous constatez que des étiquettes alphanumé- riques fonctionneraient mieux. Utilisez l’argument labels pour opérer Je changement et placer les valeurs dans une nouvelle variable, comme ceci : StrFacteur <- factor(NumFacteur, labels=c(«Nord», «Sud», «Est», «Quest»)). R convertit les données numériques en données chaine et les place dans strFacteur pour que le résultat se présente ainsi : [1] Nord sud Est Ouest Nord sud Nord Nord Est Levels: Nord Sud Est Ouest Partie 2 Préparer vos outils pour 'apprentissage automatique Jusqu’a présent, vous avez vu comment compter et énumérer les ni- veaux, mais parfois vous devez savoir combien de fois chaque entrée apparait réellement dans le facteur. Dans ce cas, vous faites appel a la fonction table(). Par exemple, l’appel & Apparitions <- table(str- Facteur) compte le nombre d’occurrences de chaque chaine dans le facteur StrFacteur. L’affichage de la sortie produit le résultat suivant : Nord sud Est Quest dy ae eS al Dans ce cas, Nord apparait quatre fois dans le facteur, tandis que Ouest n’apparait qu’une seule fois. Vous voudrez peut-étre aussi savoir com- bien de fois une seule des valeurs apparait. Dans ce cas, vous pouvez vous fier 4 un indice, comme dans Apparitions[«Nord»], qui renvoie : Nord 4 Créer un data frame de base Les data frames fournissent le moyen de mélanger les types de don- nées au sein d’une structure unique. Lorsque vous travaillez avec R, ‘vous pouvez utiliser des colonnes de type numérique, de type chaine de caractéres et de type facteur. Chacune des colonnes contient le méme nombre d’entrées, donc de lignes, lorsqu’elles sont regroupées. Pour vous donner une idée du fonctionnement de tout cela, vous pouvez créer des colonnes en utilisant le code suivant : Noms <- c(«Jeanne», «Samuel», «José», «Annier) Ages <- c(42, 33, 39, 25) Lieux <- factor(c(«Ouest», «Quest», «Sud», «Sud»)) Notez que les colonnes sont toutes de la méme longueur, et qu’elles contribueront toutes aux enregistrements dans le data frame. Pour créer celui-ci, vous utilisez la fonction data.frame(). Assurez-vous d’inclure le point entre les termes data et frame. Vous pouvez attribuer un nom a chaque colonne du data frame en Pincluant simplement dans ’appel. Pour créer notre exemple de data frame, vous appelez LocData <- data.frame(Nom=Noms, Age=Ages, Lieu=Lieux). Lorsque vous affichez LocData, vous obtenez cette sortie : Nom Age Lieu 1 Jeanne 42 Ouest 2 Samuel 33 Quest 3 José 39 Sud 4 Annie 25 Sud Chapitre 5 Coder en Ra Laide de RStudio 85 86 Comme vous pouvez le voir, les entrées apparaissent maintenant sous forme de tableau et vous pouvez accéder aux informations par ligne ou par colonne. La technique d’accés est un peu bizarre. Vous pouvez utiliser un indice, comme vous le faites normalement, mais la méthode d’indexation est différente de celle des autres objets R. Pour accéder & la premiére colonne, vous appelez Locbata[1] pour obtenir la sortie suivante : Nom 1 Jeanne 2 Samuel, 3 José 4 Annie Pour accéder & la premiere ligne, vous devez ajouter une virgule au numéro de Pindice. Cela signifie que vous appelez Locbata[1, ], ce qui donne la sortie suivante : Nom Age Lieu 1 Jeanne 42 Ouest Lorsque vous travaillez avec des colonnes, vous pouvez également uti- liser un indice sous forme de chaine de caractéres. Par exemple, LocDa- ta[«Age»] accéde aux ages dans la colonne Age. Si vous voulez accéder une ligne et & une colonne particuliéres, vous utilisez la méme ap- proche d’indexation de la valeur de ligne, puis de colonne, que vous utilisez normalement. Par exemple, LocData[1, 2] fournit comme sor- tie [1] 42. Une derniére méthode d’accés consiste a interagir directement avec les vecteurs contenant les valeurs des colonnes. Cette méthode repose sur Vopérateur $. Par exemple, pour accéder au vecteur Age, vous appelez Locbatasage, qui produit ce qui suit : [1] 42 33 39 25 Normalement, R convertit toutes les chaines de caractéres en facteurs. Cette approche vous permet d’utiliser vos chaines de caractéres comme méthode de catégorisation des données. Toutefois, il se peut que vous ne souhaitiez pas voir les données de chaine comme des facteurs. Dans ce cas, vous définissez l’argument stringsAsFactors sur FALSE. Par exemple, appeler LocData <- data.frame(Nom=Noms, Age=Ages, Lieu=Lieux, stringsAsFactors=FALSE) créerait la colonne Nom comme étant de type caractére plutét que comme facteur. Partie 2 Préparer vos outils pour 'apprentissage automatique Interagir avec les data frames Au fur et & mesure de la progression du livre, vous verrez toutes sortes de facons d’interagir avec les data frames. Cependant, vous devez connaitre dés maintenant quelques interactions de base. Les sections suivantes décrivent ces interactions de base a l’aide du data frame Loc- Data créé dans la section précédente de ce chapitre. Interroger la structure du data frame Parfois, vous avez besoin de connaitre la structure des données d’un data frame. La fonction str() vous aide a effectuer cette tache. Par exemple, str(Locbata) produit la sortie suivante (en supposant que vous avez défini stringsAsFactors sur FALSE) : ‘data.frame’: 4 obs. of 3 variables: $ Nom: chr «Jeanne» «Samuel» «José» «Annie» $ Age : num 42 33 39 25 $ Lieu: Factor w/ 2 levels «Ouest», »Sud»: 112 2 En connaissant la structure du data frame, il est possible de déterminer Ja meilleure facon de travailler avec les données. Par exemple, vous pouvez utiliser Lieu pour aider a classer et a organiser les données de localisation. Obtenir une vue statistique des données du data frame Obtenir un résumé statistique des données d’un data frame peut sou- vent vous fournir des idées sur la fagon dont il serait possible d’effec- tuer certains types d’analyse, ou encore de juger si le data frame néces- site une manipulation supplémentaire avant qu’il ne devienne adapté pour l’apprentissage automatique. La fonction summary() vous aide effectuer cette tache. Par exemple, si vous appelez summary(LocData), vous obtenez la sortie suivante, qui vous fournit des informations sur chacune des colonnes du data frame : Nom Age Length:4 Min. ues! Class :character ist Qu sud Mode character Median Nean 3rd qu. Max. Chapitre 5 Coder en Ra l'aide de RStudio 87 88 Extraire les données d’un data frame Le data frame dont vous disposez peut contenir plus d’informations que’ce dont vous avez réellement besoin pour votre analyse (ou peut- étre souhaitez-vous diviser le data frame en jeux d’entrainement et de test). La technique que vous utilisez pour extraire les données dé- pend du résultat que vous voulez obtenir. Par exemple, il se peut que vous n’ayez pas besoin de la colonne Lieu pour votre analyse. Vous pouvez créer un sous-ensemble du data frame en extrayant seulement les colonnes Nom et Age, en appelant pour cela SubFrame <- data. frame(Nom=LocData$Nom, Age=LocData$Age). Le data frame résultant ressemblera a ceci : Nom Age 1 Jeanne 42 2 Samuel 33 3 José 39 4 Annie 25 Vous pouvez également avoir besoin de lignes spécifiques. Dans ce cas, vous utiliserez des indices. Par exemple, vous pouvez créer un data frame contenant seulement les lignes 2 et 3 en appelant SubFrame <- LocData[2:3, ]. Le résultat est illustré ci-dessous : Nom Age Lieu 2 Samuel 33 Ouest 3 José 39 Sud Développer un data frame Dans certains cas, vous devez développer un data frame pour y inclure plus d’informations. Par exemple, il se peut que vous ayez besoin de combiner plusieurs sources pour créer un jeu de données qui convienne &V’analyse, ce qui signifie ajouter des colonnes. Vous pouvez également obtenir des informations supplémentaires depuis une autre source, ce qui signifie alors ajouter des lignes. Les sections suivantes décrivent comment exécuter ces deux taches. Ajouter une colonne Lorsque vous ajoutez une colonne, vous fournissez suffisamment d’entrées pour ajouter la nouvelle variable a tous les enregistrements existants. Ces données apparaissent sous la forme d’un vecteur. Par exemple, vous pouvez avoir besoin d’ajouter une date d’embauche au data frame LocData utilisé pour les exemples précédents. Le code sui- vant montre comment effectuer cette tache : Partie 2 Préparer vos outils pour 'apprentissage automatique EmbaucheDates <- as.Date(c(«2010/10/15», «2016/05/30», «2014/06/28», «2019/04/62»)) LocData$embaucheDate <- EmbaucheDates Cet exemple montre comment créer un vecteur de dates. La fonction as.Date() vous permet de demander a R de traiter les chaines comme des dates plutét que comme des chaines. L’exemple utilise l’opérateur $ pour définir une nouvelle colonne, EmbaucheDate, et lui affecter le vecteur EmbaucheDates. La nouvelle version de Locbata va ressembler aceci: Nom Age Lieu EmbaucheDate 1 Jeanne 42 Quest 2019-10-15 2 Samuel 33 Quest 2016-05-30 3 José 39 Sud 2014-06-28 4 Annie 25 Sud 2019-04-02 Notez que le code de création de EmbaucheDates apparait sur deux lignes. Vous pouvez utiliser plusieurs lignes dans R pour rendre le code plus lisible. Il n’est pas nécessaire d’indenter la seconde ligne et les suivantes, mais la plupart des développeurs le font par convention pour rendre le code plus facile a lire et 4 comprendre. Lordinateur n’a pas besoin de l’indentation, mais c’est utile pour les lecteurs humains afin de mieux voir quelles lignes se regroupent en un seul appel. Ajouter une ligne Lorsque vous ajoutez une ligne, vous créez un nouvel enregistrement qui contient toutes les colonnes formant les lignes existantes. Les données apparaissent comme faisant partie d’un data frame, et vous utilisez donc la méme technique que pour créer ces lignes. Pour ajou- ter la nouvelle ligne a un data frame existant, vous utilisez la fonction rbind(), comme dans |’exemple suivant : Nouvenp <- data. frame( Nom = «kerry», ‘Age = 51, Lieu = «Quest», EmbaucheDate = as.Date(«2018/06/28»), stringsAsFactors = FALSE) Locbata <- rbind(Locbata, NouvEmp) Le nouvel enregistrement, NouvEmp, contient toutes les colonnes ac- tuellement trouvées dans Locbata (en supposant que vous avez fait les autres changements énumérés dans le chapitre), Lorsque vous utilisez la fonction rbind(), placez les data frames dans |’ordre dans lequel Chapitre 5 Coder en R & laide de RStudio 89 90 vous voulez les voir apparaitre dans le résultat. Avec l’ajout de cette ligne, LocData ressemble maintenant a ceci : * Nom Age Lieu EmbaucheDate 1 Jeanne 42 Quest 2019-10-15 2 Samuel 33 Quest 2016-05-30 3 José 39 Sud 2014-06-28 4 Annie 25 Sud 2019-04-02 5 Kerry 51 Quest 2018-06-28 Exécution de taches statistiques de base Jusqu’a présent, ce chapitre a présenté diverses structures de données et techniques pour travailler avec elles. Cependant, créer simplement une structure de données ne suffit pas dans de nombreux cas. Les sec- tions suivantes donnent un apercu de certaines taches de base vous permettant d’effectuer une analyse statistique. Elles vous aideront a comprendre certains des exemples présentés plus loin dans le livre. Prendre des décisions Pour effectuer un travail utile, les langages informatiques fournissent les moyens de prendre des décisions. R fournit trois structures a cet ef- fet : if, if...else, et switch. Utilisez la forme if (si) lorsque vous pre- nez des décisions avec un nombre limité de résultats. La forme switch (commuter) fonctionne mieux si vous avez a prendre une décision avec de multiples résultats. Les sections suivantes décrivent ces structures plus en détail. Utiliser Vinstruction if L'instruction if vous permet de prendre une décision simple. Quand quelque chose est vrai, R exécute le code qui se trouve dans le bloc as- socié. Voici un exemple de l’instruction if en action : A<3 B<- 4 if (A < B) { print («Plus petit } Le code commence par if, comme vous pouvez vous y attendre. La par- tie entre parenthéses est une expression et doit étre évaluée comme étant TRUE (vrai) ou FALSE (faux). Les deux variables, A et B, appa- raissent autour de l’opérateur < (moins que). R supporte tous les opé- Partie 2 Préparer vos outils pour 'apprentissage automatique rateurs habituels, y compris <, <=, et >. Vous trouverez la liste compléte des opérateurs R sur htpe: //bit .Ly/33uL4Qk. Placer tous les blocs de code entre accolades est une bonne pratique, comme le montre exemple. Cet exemple particulier aurait fonctionné sans les accolades, mais cela peut entrainer des erreurs et rend le code plus difficile a lire. La sortie de cet exemple est [1] «Plus petit !» Utiliser Uinstruction if...else L’instruction if..else fonctionne de la méme maniére que |’instruc- tion if, sauf qu’elle fournit également une réponse lorsque l’expres- sion n’est pas TRUE. Lorsque |’expression est évaluée comme étant FALSE, la pattie restante de l’instruction if... .else s’exécute. Voici un exemple de cette instruction au travail : NaChaine <- c(«Ceci», «est», «une», «chainer) if («Ceci» sink MaChaine) { print(«Trouvé !») } else { Print («Non Trouvé !») 2 Cet exemple utilise un opérateur spécial, %in%. Ces opérateurs spéciaux effectuent des comparaisons inhabituelles que l’on ne trouve pas cou- ramment dans d’autres langages. Ici, l’opérateur %in% détermine si «Ceci» apparait quelque part dans le vecteur MaChaine. Les chapitres suivants montrent comment utiliser d’autres opérateurs spéciaux. La sortie pour cet exemple est{1] «Trouvé !»> Utiliser Uinstruction switch Une instruction switch peut fournir une sortie parmi plusieurs pos- sibilités, en fonction de la valeur recue en entrée. I] existe plusieurs formes de cette instruction, mais la plus courante réagit aux entrées numériques, comme le montre l’exemple suivant : chiffre <- readline(«Entrez un chiffre entre 1 et 5 : «) Nombre <- as. integer (chiffre) Result <- switch( Nombre, «Un», «2», «Crest trois I», «Encore un effort !», Chapitre 5 Coder en R a aide de RStudio cai «Terminé |») print (Result) Le code commence par demander l’utilisateur de fournir une valeur d’entrée. Méme si vous n’utilisez pas cette fonction trés souvent dans. le livre, il est utile de savoir comment obtenir des données a partir du clavier lorsque vous expérimentez. R fournit une entrée sous forme de chaine, 4 moins que vous ne convertissiez la valeur en un autre type, par exemple en utilisant la fonction as.integer() montrée dans cet exemple. instruction readline, qui lit une saisie clavier effectuée par l’utilisa~ teur, ne peut fonctionner qu’en mode interactif. En d’autres termes, il faut commencer par l’utiliser seule dans la fenétre Console de RStudio. Une fois la valeur de chiffre obtenue, vous pouvez copier le reste du code dans la fenétre Console pour |’exécuter. Apres conversion, la variable Nombre contient maintenant une valeur de 14 5. La fonction switch() crée alors une nouvelle variable pour gérer Dévaluation et la sortie de Nombre. Par exemple, si l'utilisateur tape 2, Result affiche «Encore un effort !». Travailler avec des boucles Les instructions de boucle vous aident a exécuter des taches plusieurs fois. R supporte trois types d’instructions de boucle : repeat, while et for. Chacune de ces instructions posséde certaines propriétés. Par exemple, la boucle for s’exécute toujours un nombre spécifique de fois. Uti er la boucle repeat La boucle repeat continue a s’exécuter jusqu’a ce que vous en sor- tiez par un break. Les deux autres instructions supportent |’instruc- tion break de maniére facultative, mais, lorsque vous travaillez avec la boucle repeat, vous devez en sortir par break en vérifiant une condi- tion. L’exemple suivant montre la boucle repeat en action : Nombre <- 4 repeat { print (Nombre) if (Nombre > 5) { } Nombre <- Nombre + 1 break 92 Partie 2 Préparer vos outils pour lapprentissage automatique L’exemple commence par créer une variable appelée Nombre. Lorsque vous utilisez repeat, vous devez fournir un certain moyen de terminer la boucle. Le code affiche ensuite la valeur actuelle du nombre, déter- mine si celui-ci est supérieur & 5, puis il le met & jour en l’incrémentant d’une unité. Cette derniére étape est essentielle, car sinon la boucle ne s’arréterait jamais. Voici le résultat de cet exemple, sachant que la boucle repeat s’exécute toujours au moins une fois : ja fa] 2 fa] 3 (4) 4 f) 5 (4) 6 Utiliser la boucle while L'instruction while vérifie la présence d’une condition de fin avant de démarrer la boucle, ce qui signifie qu’elle peut ne pas s’exécuter une seule fois. Les principes de base sont les mémes que lors de l’utilisa- tion de la boucle repeat dans la mesure ott vous devez fournir certains moyens pour terminer la boucle, ce qui signifie généralement effectuer des mises & jour sur une variable dans le bloc de code. Voici un exemple de boucle while en action : Nombre <- 1 while (Nombre <= 6) print(Nombre) Nombre <- Nombre + 1 } Cet exemple donne la méme sortie que la boucle repeat, mais il utilise moins de code, Une boucle while peut exécuter des taches plus efficace- ment qu’une boucle repeat dans nombre de conditions. Toutefois, vous devez tenir compte du fait que cette boucle peut ne jamais s’exécuter. Utiliser la boucle for Une boucle for exécute du code un certain nombre de fois. Vous Putili- sez généralement pour effectuer des taches avec des données structu- rées, Par exemple, vous pouvez avoir besoin de traiter individuellement les éléments d’un vecteur. Voici un exemple de boucle for en action : MaChaine <- c(«Ceci», «est», «une», «chaine.») for (AStr in MaChaine) { Chapitre 5 Coder en Ra aide de RStudio 93 94 print(astr) } Dans ce cas, la boucle for place les valeurs du vecteur MaChaine dans la chaine aStr, une & la fois. Lorsque vous exécutez cet exemple, le sys- téme affiche la sortie suivante : [1] «Ceci» [1] «esto [1] «une> [1] «chaine.» Exécuter des taches en boucle sans boucles Dans certains cas, vous pouvez effectuer avec R des taches qui néces- sitent normalement une boucle dans d’autres langages, mais sans uti- liser de boucle. Par exemple, supposons que vous créez un vecteur : ValInt <- c(1, 4, 5, 9, 2) Le vecteur contient les entiers indiqués dans la liste. Cependant, vous devez maintenant les transformer en valeurs décimales en multipliant chaque élément par 0,1. Lorsque vous travaillez avec d'autres langages, vous devez créer une boucle, récupérer chaque valeur individuelle- ment, effectuer la multiplication et enregistrer la valeur dans une nou- velle variable. Lorsque vous travaillez avec R, vous pouvez simplifier la tache comme illustré ci-dessous : ValDec <- Valint * @.4 Notez qu’aucune boucle n’est impliquée. Vous multipliez simplement le vecteur par 0,1. Lorsque vous affichez les valeurs dans ValDec, la sor- tie suivante apparait : [1] 0.1 0.4 6.5 0.9 0.2 Travailler avec les fonctions Les fonctions fournissent les moyens de regrouper du code que vous avez intention dutiliser plus d’une fois. Vous pouvez empaqueter le code et le transformer en une boite noire, qui est essentiellement une entité a laquelle vous fournissez des entrées et de laquelle vous atten- dez certaines sorties, mais sans avoir a vous soucier de la fagon dont elle (Ia boite noire) fonctionne. Lutilisation d’une boite noire réduit la complexité du programme. Pour créer une fonction, vous utilisez la fonction function(), suivie Partie 2 Préparer vos outils pour lapprentissage automatique d'un bloc de code que vous voulez exécuter. Une fonction peut recevoir des entrées par le biais d’arguments, et fournir une valeur de retour basée sur la tache qu’elle exécute. Le code suivant montre une fonction de base qui accepte des arguments et fournit une valeur de retour : PlusPetit <- function(Valeuri, Valeur2) { if (Valeur < Valeur2) t resultat <- TRUE } else { resultat <- FALSE return (resultat) ii Dans ce cas, PlusPetit() nécessite deux arguments en entrée. La fonc- tion compare le premier argument au deuxiéme argument. Lorsque le premier argument est inférieur au second, la fonction retourne TRUE ; sinon, elle retourne FALSE. Passer un appel tel que print(PlusPetit(1, 2)) donnera en sortie [1] TRUE. Vous pourriez penser que PlusPetit() ne fonctionne qu’avec des nombres. Toutefois, vous pouvez l’utiliser pour comparer toutes sortes de données. Par exemple, lorsque vous appelez print(PlusPetit(«G», «H»)), vous obtenez en sortie [1] TRUE. Si vous inversez les deux argu- ments, la sortie deviendra [1] FALSE. Vous pouvez comparer des dates et toutes sortes d'autres types de données 4 I’aide de cette fonction simple. Bien sir, les fonctions du monde réel que vous créez seront plus complexes, mais cet exemple trivial vous donne une idée de ce qui est possible, et comment vous pouvez potentiellement étendre les fonctionnalités des fonctions que vous créez. Trouver la moyenne et la médiane R fournit des fonctions intégrées pour trouver la moyenne et la mé- diane. La fonction mean( ) a la syntaxe suivante : mean(x, trim=0, na.rm=FALSE) Ses arguments sont les suivants : » x: Contient le vecteur d’entrée. » trim : Détermine le nombre d’ observations a laisser de cété a partir des deux extrémités du vecteur trié. Chapitre 5 Coder en R a aide de RStudio 95 2 % » na.rm: Indique si les valeurs manquantes doivent étre supprimées du vecteur d’entrée. Si Vous créez un vecteur d’échantillons, tel que Echantil <- c(19, 4, 5, 7, 29, 19, 29, 29, 13, 25, 19, 42), la sortie de mean(Echantil) est [1] 19.18182 Trouver la médiane est tout aussi facile. Dans ce cas, vous utilisez la fonction median() quia la syntaxe suivante : median(x, na. rm=FALSE) Liutilisation du méme vecteur d’échantillons et |’appel de me- dian(Echantil) produit une sortie de [1] 19. Rne fournit pas de fonction intégrée pour trouver le mode”. Vous devez plutét créer une fonction de votre propre conception ou utiliser Pun des packages externes disponibles sur le marché. Les packages externes permettent de réduire le travail au minimum. Le code suivant indique comment trouver le mode a I’aide du package modeest 2.1: install. packages(“nodeest”) library(modeest ) Echantil <- c(19, 4, 5, 5, 7, 29, 28, 19, 29, 13, 25, 19, 42) mlv(Echantil, method = “nfv") Lorsque vous appelez install. packages(), vous pouvez voir un mes- sage d’avertissement indiquant que R ne peut pas écrire les informa- tions du paquet dans le répertoire par défaut. La fonction install .pac- kages() suggere alors de créer une bibliothéque personnelle, qui est la démarche que vous devriez choisir. Si la fonction install.packages() vous demande de choisir un site miroir pour télécharger le package, prenez simplement celui qui est le plus proche de votre emplacement. Vous devez utiliser la fonction library() pour le lire en mémoire. ® Le simple fait d’installer le package ne vous permet pas de Putiliser. La fonction mlv() fournit une estimation du mode. La biblioth@que fournit également diverses formes de mlv() pour le tracé et l’impres- sion. Pour voir toutes ces autres options, utilisez l’appel de fonction library(help = «modeest»). Dans ce cas, mlv() utilise la méthode de la valeur la plus fréquente (mfv) pour calculer le mode. Le résultat de cet exemple est le suivant Mode (most likely value): 19 Bickel’s modal skewness: 0 Voir par exemple https: //bit .1y/2kgYvlp. Partie 2 Préparer vos outils pour lapprentissage automatique Call: mlv.default(x = MySamples, method = “mfv") En cas, d’erreur dans les instructions ci-dessus indiquant que la bi- bliothéque genefilter est introuvable, essayez la solution décrite & Dadresse https://bit .ly/2jxEzng et qui régle le probléme en suivant ces instructions : install. packages (“BiocManager”) library(“BiocManager”) BiocManager : : install («genefilter») Tracer un graphique a partir de vos données Rvous donne accés a tous les graphiques et tracés typiques : camembert, barre, boite, histogramme, ligne et dispersion. Les bibliothéques com- plémentaires vous offrent encore plus d’options. Beaucoup d’exemples dans le livre montrent des sorties graphiques, et donc cette section est relativement courte. Dans ce cas, vous commencez par créer un vecteur avec des échantillons de données, en l’occurrence Echantil <- ¢(19, 4, 5, 5, 7, 29, 29, 19, 29, 13, 25, 19, 42). L’appel ala fonction de base barplot (Echantil) crée la sortie illustrée sur la Figure 5.1. ‘Figure 5.1, Un exemple simple d'histogramme. Chapitre 5 Coder en R a aide de RStudio 97 Bien stir, c’est le résultat le plus basique que vous puissiez créer. R vous fournit un certain nombre de méthodes pour modifier la sortie et lui donner l’aspect que vous voulez qu’elle prenne. La syntaxe de base de Ja fonction barplot() est la suivante : barplot(H, xlab, ylab, main, names.arg, col) Avec : » H: Fournit un vecteur ou une matrice contenant les valeurs numé- riques utilisées dans I’histogramme. » xlab : Définit une étiquette pour l’axe des x. » ylab : Définit une étiquette pour l’axe des y. » main : Spécifie un titre pour le diagramme. » mames.arg : Fournit un vecteur de noms qui apparaissent sous chaque barre. » col: Contient une liste de couleurs & utiliser pour colorer les barres du graphique. 98 Partie 2 Préparer vos outils pour l'apprentissage automatique Chapitre 6 Installer une distribution Python Av: de pouvoir progresser avec Python ou de l’utiliser pour ré- soudre des problémes d’apprentissage automatique, vous avez besoin d’une installation viable. De plus, vous devez avoir accés aux jeux de données et au code utilisés pour ce livre. Télécharger le code exemple (disponible sur www. dunmies.com/extras/machinelearning) et Pinstaller sur votre systéme est le meilleur moyen de forger une bonne expérience d’apprentissage @ partir du livre. Ce chapitre vous aide & configurer votre systéme pour que vous puissiez facilement suivre les exemples donnés dans les chapitres qui vont suivre. per les exemples vous-méme, de les suivre a l’aide d’un débogueur, de les développer ou de travailler avec le code de toutes sortes de facons. Le code source téléchargeable est Ia pour vous aider & prendre un bon départ pour votre expérience de l’apprentissage automatique avec Py- thon. Aprés avoir vu comment le code fonctionne lorsqu’il est correc- tement saisi et configuré, vous pourrez essayer de créer les exemples par vous-méme. Si vous faites une erreur, i] est toujours possible de comparer ce que vous avez tapé avec le code source téléchargeable et de découvrir précisément oi l’erreur existe. Vous pouvez trouver les sources téléchargeables pour ce chapitre dans les fichiers ML4D ; 06 ; Sample.ipynb et ML4D ; 66 ; Dataset Load. ipynb. (L’introduction vous indique ou télécharger le code source des exemples de ce livre.) ® utilisation du code source téléchargeable ne vous empéche pas de ta 99 100 ily a actuellement deux dévelop- pements en paralléle de Python. La plupart des livres s'appuient pour leurs exemples sur la ver- sion la plus récente d'un lan- gage. En fait, il existe deux nou- velles versions de Python que vous pouvez utiliser & ce jour : 2.7.11 et 3.7.4. Python est unique en ce que certains groupes uti- lisent une version alors que d'autres groupes utilisent (‘autre version. Parce que nombre de data scientists (les scientifiques des données} et d'autres dé- veloppeurs qui effectuent des taches d’apprentissage automa- tique se servent principalement de la version 2.7.x de Python, ce livre se concentre donc sur cette version. [Au bout du compte, toutes les taches de développe- ment finiront par passer & une version 3.x ou plus du produit.) Lutilisation de la version 2.7.x signifie que vous devriez étre mieux en mesure de travailler avec d'autres personnes qui ef- fectuent des téches d’appren- tissage automatique lorsque vous aurez terminé ce livre. Si ce dernier utilisait une version 3.5.x ou plus 4 la place, vous pourriez avoir du mal 8 comprendre les exemples que vous voyez dans les applications du monde réel. Si vous voulez vraiment utili- ser une version supérieure & 3.5, vous pouvez le faire, mais _ Utiliser Python 2.7 pour ce livre vous devez comprendre que les exemples ne fonctionne- ront pas toujours comme décrit dans la suite de cet ouvrage. Par exemple, lorsque vous utilisez la fonction print() de Python 2.7, vous n‘avez pas absolument be- soin dinclure des parenthéses. Par contre, dans Python 3.5, la méme fonction soulévera_une erreur si vous ne spécifiez pas les parenthéses. Méme si cela peut sembler une différence mi- neure, c'est suffisant pour se- mer la confusion chez certaines personnes, et vous devez garder cela a esprit lorsque vous tra- vaillez sur les exemples. Heureusement, vous pouvez trouver un certain nombre de sites en ligne qui documentent les différences entre les ver- sions 2.7 et 3.5. un des sites les plus faciles & comprendre est nbviewer, a Uadresse https: // bit.ly/2Z2BgcS. Ce site vous aidera si vous choisissez d’uti liser la version 3.5. Cependant comme le livre ne supporte que la version 2.7, vous reposer sur la version 3.5 se fera & vos propres risques. Assurez-vous de garder un ceil sur les change-_ ments qui pourraient étre signa- és sur le blog du livre a Uadresse https: //bit.ly/2Mymkoy. Le blog vous aidera alors a faire les ajustements nécessaires pour vous mettre & niveau. Partie 2 Préparer vos outils pour lapprentissage automatique Choisir une distribution Python avec l'apprentissage automatique en téte Ilest tout a fait possible d’obtenir une copie générique de Python et d’y ajouter toutes les bibliothéques d’apprentissage automatique requises. Ce processus peut étre difficile, car vous devez vous assurer de dispo- ser de toutes les bibliothéques requises dans les bonnes versions pour garantir le succés. En outre, vous devez effectuer la configuration né- cessaire pour vous assurer que les bibliothques sont bien accessibles quand vous en avez besoin. Heureusement, il n’est pas nécessaire de passer par tout ce travail, car un certain nombre de produits d’appren- tissage automatique Python sont facilement disponibles et préts (pour Vessentiel) a &tre directement utilisés. Ces produits fournissent tout ce dont vous avez besoin pour démarrer un projet d’apprentissage auto- matique. Vous pouvez vous servir de n’importe lequel des packagesmention- nés dans les sections suivantes pour travailler avec les exemples de ce livre. Cependant, le code source du livre et le code source téléchar- geable s’appuient sur Continuum Analytics Anaconda, car ce package fonctionne sur toutes les plates-formes supportées par ce livre : Linux, Mac 0S X et Windows. Nous ne mentionnons pas de package spécifique dans les chapitres qui suivent, mais les captures d’écran reflétent ce qui se passe lorsque vous utilisez Anaconda sous Windows. Vous devrez peut-étre modifier le code si vous vous servez d’un autre package, et les écrans se présenteront différemment si vous utilisez Anaconda sur une autre plate-forme. Windows 10 peut présenter de sérieux problémes d’installation lors de Putilisation de Python. Vous pouvez lire ces questions sur mon blog a Padresse ht tps://bit . 1y/2ToDVfS. Il est difficile de recommander Win- dows 10 comme plate-forme Python « idéale »> pour ce livre. Si vous travaillez avec Windows 10, sachez simplement que votre chemin vers une installation Python risque d’étre plus difficile, Obtenir Continuum Analytics Anaconda Le pack de base d’Anaconda est un téléchargement gratuit que vous pouvez obtenir sur https: //www. anaconda. com/distribution/. Cliquez simplement sur votre plate-forme puis sur la version voulue de Python (voir la Figure 6.1). Anaconda supporte les plates-formes suivantes : Chapitre 6 Installer une distribution Python 101 102 Choisir la version d’Anaconda a installer [ici, pour Windows). ‘aropenance cid eon to et cance deuce on Won tn CBX We (eaten ne enn te ay waa ory Ses an ge main ts a ut + cy nna Pon as cc peas 1 ee nae pend noe wh ‘bee nan mci uring an ary mah Anaconda 2019.07 for Windows installer Python 37 version Python 2.7 version ca Ea copes wat 5 0) rocco) » Windows 32 bits et 64 bits (le programme @’ installation peut vous offrir seulement la version 64, bits ou 32 bits, selon la version de Windows qu’il détecte) » Linux 64 bits » Mac OS 64 bits La version de téléchargement que je vous demande de choisir est Py- thon 2.7, qui est celle qui est utilisée dans ce livre (voir plus haut l’en- cadré « Utiliser Python 2.7 pour ce livre >). Vous pouvez également choisir d’installer Python 3.7 en cliquant sur le lien correspondant. Windows et Mac OS X fournissent tous deux des installateurs gra- phiques. Lorsque vous utilisez Linux, vous comptez sur ’utilitaire bash. Le produit gratuit est tout ce dont vous avez besoin pour ce livre. Ce pendant, quand vous regardez sur le site, vous voyez que beaucoup d'autres produits complémentaires sont disponibles. Ces produits peuvent vous aider a créer des applications robustes pour le cloud et le développement d’applications lourdes nécessitant des infrastructures puissantes. Voyez par exemple & ce sujet (et méme si cela déborde lar- gement du cadre de ce livre) la documentation de la version Enterprise @ Anaconda. Partie 2 Préparer vos outils pour U'apprentissage automatique Obtenir Canopy Express Enthought Canopy Express est un produit gratuit pour la production d’applications techniques et scientifiques utilisant Python. Vous pou- vez obtenir a l’adresse https://www.enthought .com/product/canopy. Cliquez sur le bouton Download sur la page principale pour voir la liste des versions que vous pouvez télécharger. Seul Canopy Express est gra- tuit ; le produit Canopy complet est payant. Cependant, vous pouvez utiliser Canopy Express pour travailler avec les exemples de ce livre. Canopy Express supporte les plates-formes suivantes » Windows 32 bits et 64 bits » Linux 32 bits et 64 bits » Mac OS X 32 bits et 64 bits Choisissez la plate-forme et la version que vous souhaitez téléchar- ger. Lorsque vous cliquez un lien Download, un formulaire optionnel saffiche pour fournir des informations vous concernant. Le téléchar- gement démarre automatiquement, méme si vous ne fournissez aucun renseignement personnel. L’un des avantages de Canopy Express est qu’Enthought est forte- ment impliqué dans le soutien aux éléves et aux enseignants. Les gens peuvent également suivre des cours, y compris des cours en ligne, qui enseignent I’utilisation de Canopy de diverses facons (voir https:// training. enthought .com/courses). Une formation en direct est également proposée & |’intention des spé- cialistes des données. Pour en savoir plus sur cette formation, consul- tez le site https://bit.ly/2ZFKZ9k. Ces cours peuvent vous aider a comprendre comment travailler avec le big data, ce qui fait partie du travail lié aux problémes d’apprentissage automatique. En bref, la connaissance de la science des données vous donne un coup de pouce dans V’utilisation de Python pour l’apprentissage automatique, mais elle ne supprime pas complétement la courbe d’apprentissage a suivre. Obtenir pythonxy L’environnement de développement intégré (IDE) pythonxy est un projet communautaire hébergé chez Google a l’adresse http://py- thon-xy.github.io/. Il s’agit d’un produit Windows uniquement, et vous ne pouvez donc pas facilement l’utiliser pour des besoins mul- tiplateformes. (En fait, il ne supporte que Windows Vista, Windows 7 et Windows 8.) Cependant, il est livré avec un ensemble complet de Chapitre 6 Installer une distribution Python 103 104 bibliothéques, et vous pouvez facilement l’utiliser pour ce livre si vous le souhaitez. Du fait que pythonxy utilise la licence GNU General Public (GPL) v3 (voir http://www. gnu.org/licenses/gpl-3.0.html), vous n’avez pas & vous soucier des questions d’add-ons, de formations ou d’autres fone- tionnalités payantes. Personne ne viendra frapper a votre porte dans Pespoir de vous vendre quelque chose. De plus, vous avez accés a tout le code source de pythonxy, et vous pouvez donc y apporter des modi- fications si vous le souhaitez. Obtenir WinPython Le nom vous indique que WinPython est un produit Windows unique- ment que vous pouvez trouver sur http://winpython.github. io/. Ce produit est en fait un spin-off de pythonxy et n’est pas destiné a le remplacer. Voyez par exemple l’adresse ht tps: //bit .1y/2ZEK35@ pour plus d’informations WinPython. Le résultat est au final que vous gagnez en flexibilité au détriment de la convivialité et d’une petite intégration de plate-forme. Cependant, pour les développeurs qui ont besoin de maintenir plusieurs versions @un IDE, WinPython peut faire une différence significative. Lorsque vous utilisez WinPython avec ce livre, assurez-vous de préter une at- tention particuliére aux problémes de configuration pour que le code téléchargeable soit a méme de fonctionner. Installer Python sous Linux Vous utilisez la ligne de commande pour installer Anaconda sous Linux — iln’ya pas d’ option d’installation graphique. Avant de pouvoir effec- tuer l’installation, vous devez télécharger une copie du logiciel Linux a partir du site Continuum Analytics. Vous trouverez les informations de téléchargement nécessaires dans la section « Obtenir Continuum Analytics Anaconda >>, plus haut dans ce chapitre. La procédure sui- vante devrait fonctionner correctement sur tout systéme Linux, que vous utilisiez la version 32 bits ou 64 bits d’Anaconda : © Ouvrez une copie de Terminal. La fenétre de Terminal apparait. @ Accédez au dossier ot se trouve la copie téléchargée d’ Anaconda sur votre systéme. Partie 2 Préparer vos outils pour lapprentissage automatique Le nom de ce fichier varie, mais normalement il apparait sous la forme Anaconda2-2019.07-Linux-x86_64.sh. Le numéro de ver- sion est intégré dans le nom du fichier (il n’existe plus de version 32 bits pour Linux). Dans ce cas, le nom de fichier renvoie a la version 2.1019.07, qui est la derniére version en date au moment oii ce texte est écrit. Si vous utilisez une autre version, il se peut que vous rencontriez des problémes avec le code source et que vous ayez besoin de faire des ajustements en travaillant avec lui. © Tapez bash Anaconda2-2019.07-Linux-x86_64.sh et appuyez sur Entrée. Un assistant d’installation démarre. Il va vous demander d’accep- ter les conditions de licence pour !’utilisation d’Anaconda. @ Lisez le contrat de licence et acceptez les termes en utilisant la méthode requise pour votre version de Linux. L’assistant vous demande de fournir un emplacement d’installa- tion pour Anaconda. Le livre suppose que vous utilisez l’empla- cement par défaut, ~/anaconda. Si vous faites un autre choix, vous devrez peut-étre modifier certaines procédures plus tard dans le livre pour travailler avec votre installation. @ Indiquez un emplacement d’ installation (si nécessaire) et appuyez sur Entrée (ou cliquez sur Suivant). Le processus d’extraction de |’application commence. Une fois T’extraction terminée, un message de fin s’affiche. © Ajoutez le chemin d’installation votre instruction PATH en utili- sant la méthode requise pour votre version de Linux. Vous étes prét & commencer & utiliser Anaconda. Installer Python sous Mac OS X/macOS L’installation pour Mac OS X/macOS n’existe qu’au format 64 bits. Avant de pouvoir l’effectuer, vous devez télécharger une copie du logi- ciel pour Mac a partir du site de Continuum Analytics. Vous trouverez les informations de téléchargement nécessaires dans la section « Ob- tenir Continuum Analytics Anaconda »>, plus haut dans ce chapitre. Les étapes suivantes vous aident a installer Anaconda 64 bits sur un systéme Mac : @ Localisez la copie d’Anaconda téléchargée sur votre systéme. Chapitre 6 Installer une distribution Python 105 106 Le nom de ce fichier varie, mais normalement il apparait sous la forme Anaconda2-2019 .67-MacOSx-x86_64. pkg. Le numéro de version est intégré dans le nom du fichier. Dans ce cas, le nom de fichier Tenvoie la version 2.1019.07, qui est la derniére version en date au moment oii ce texte est écrit. Si vous utilisez une autre version, il se peut que vous rencontriez des problémes avec le code source et que vous ayez besoin de faire des ajustements en travaillant avec lui. © Double-cliquez sur le fichier d’installation. Un écran daccueil apparait. © Cliquez sur Continue. Lassistant vous demande si vous souhaitez consulter les docu- ments associés. Vous pourrez les lire plus tard. Pour instant, vous pouvez sauter l’information en toute sécurité. @ Cliquez sur Continue. L’assistant affiche un contrat de licence. Assurez-vous de lire attentivement ce contrat afin de connaitre les conditions d’utilisa- tion. © Cliquez sur I Agree (J’accepte) si vous acceptez le contrat de li- cence. L’assistant vous demande de spécifier une destination pour l’ins- tallation. Ceci permet de contréler si l’installation est destinée 4 un utilisateur individuel ou a un groupe. Ise peut qu’un message d’erreur s’affiche indiquant que vous ne pouvez pas installer Anaconda sur le systéme. Le message d’erreur provient d’un bogue dans le programme d’installation et n’a rien a voir avec votre systéme. Il suffit de choisir option effectuant uni- quement une installation pour vous (Just Me). Vous ne pouvez pas installer Anaconda pour un groupe d’utilisateurs sur un systéme Mac. © Cliquez sur Continue. Le programme d’ installation affiche une boite de dialogue conte- nant les options permettant de modifier le type d’installation. Changer éventuellement l’emplacement d’ installation si vous le souhaitez. Le livre suppose cependant que vous utilisez le chemin par défaut ~/anaconda. Vous pouvez aussi modifier le fonctionne- ment de l’installeur. Par exemple, vous pouvez choisir de ne pas Partie 2 Préparer vos outils pour Uapprentissage automatique 6 ajouter Anaconda 4 votre instruction PATH. Cependant, le livre sup- pose que vous avez conservé les options d’installation par défaut. Il existe en fait aucune raison valable de les modifier @ moins d’avoir une autre copie de Python 2.7 installée ailleurs. @ Cliquez sur Install. installation commence. Une barre de progression vous indique Pétat d’avancement du processus. Une fois l’installation terminée, une boite de dialogue indiquant la fin du processus s’affiche. © Cliquez sur Continue. Vous étes prét a commencer a utiliser Anaconda. Installer Python sous Windows ‘Anaconda est livré avec une application d’installation graphique pour ‘Windows. Bien entendu, vous avez besoin d’une copie du fichier d’ins- tallation avant de commencer, et vous trouverez les informations né- cessaires 4 son téléchargement dans la section « Obtenir Continuum Analytics Anaconda », plus haut dans ce chapitre. La procédure sui- vante devrait fonctionner correctement sur n’importe quel systéme Windows, que vous utilisiez la version 32 bits ou 64 bits d’Anaconda : @ Localisez la copie d’ Anaconda téléchargée sur votre systéme. Le nom de ce fichier varie, mais normalement il apparait comme Anaconda2-2019.07-Windows-x86.exe pour les systémes 32 bits et Anaconda2-2019 .07-Windows-x86_64.exe pour les systémes 64 bits. Le numéro de version est intégré dans le nom du fichier. Dans ce cas, le nom de fichier renvoie a la version 2.1019.07, qui est la derniére version en date au moment oii ce texte est écrit. Si vous utilisez une autre version, il se peut que vous rencontriez des problémes avec le code source et que vous ayez besoin de faire des ajustements en travaillant avec lui. © Double-cliquez sur le ficl r d’installation. Vous pouvez voir une boite de dialogue de contréle de compte utili- sateur qui vous demande si vous voulez exécuter ce fichier. Cliquez simplement sur Oui si cette boite de dialogue apparait. Vous voyez une boite de dialogue Anaconda 2019.07 Setup similaire A celle de la Figure 6.2. La boite de dialogue exacte que vous voyez dépend de la version du programme d’installation Anaconda que vous téléchargez. Avec un systéme d’ exploitation 64 bits, utiliser Chapitre 6 Installer une distribution Python 107 Figure 6.2 Le processus d'installation commence par vous indiquer si vous avez la ver- sion’ 64 bits. (© Anaconda? 2019.07 (64-bit) Setup = x Welcome to Anaconda2 2019.07 (64-bit) Setup )) ‘Setup wil guide you through the installation of Anaconda 2019.07 644i). {tis recommended that you dose al other applications before starting Setup. This wil make it possible to update relevant system fies without having to reboot your computer. ANACONDA. (lick Next to continue. la version 64 bits d’Anaconda est toujours préférable pour obte- nir les meilleures performances possibles. Cette premiére boite de dialogue vous indique si vous avez effectivement la version 64 bits du produit. © Cliquez sur Next (suivant). L’assistant affiche un contrat de licence. Assurez-vous de lire attentivement le contrat de licence afin de connaitre les conditions d'utilisation. © Cliquez sur I Agree pour accepter le contrat de licence. On vous demande ensuite quel type d’installation effectuer, comme V’illustre la Figure 6.3. Dans la plupart des cas, vous voulez installer le produit juste pour vous (Just Me). L’exception est une situation dans laquelle plusieurs personnes utilisent votre systéme et elles ont toutes besoin d’accéder & Anaconda. © Choisissez l'un des types dinstallation, puis cliquez sur Next. 108 Partie 2 Préparer vos outils pour l'‘apprentissage automatique Figure 6.3 Indiquez a assistant comment installer Anaconda sur votre systtme. © Anaconda? 2019.07 (64-bit) Setup = x Select Installation Type ANACONDA Please select the type of installation you would ke to perform for ‘Anaconda? 2019.07 (64-bit). OAlUsers (requres admin privieges) ‘Anaconda, Ine, L’assistant demande ensuite oii installer Anaconda sur le disque, comme lillustre la Figure 6.4. Le livre suppose que vous utilisez emplacement par défaut. Si vous choisissez un autre dossier, vous devrez peut-étre modifier certaines procédures plus tard pour travailler avec votre installation. © Choisissez un dossier installation (si nécessaire), puis cliquez sur Next. Vous voyez les options d’installation avancées, illustrées sur la Figure 6.5. Ces options sont sélectionnées par défaut et il n’existe aucune raison valable d’en changer dans la plupart des cas. Vous devrez peut-étre les modifier si Anaconda ne fournit pas votre configuration par défaut de Python 2.7 (ou Python 3.5). Cependant, le livre suppose que vous avez configuré Anaconda en utilisant les options par défaut. @ Modifiez les options d’installation avancée (si nécessaire), puis cliquez sur Install. Une boite de dialogue avec une barre de progression s'affiche. Le processus d’installation peut prendre quelques minutes. Vous pou- vez prendre une tasse de café (ou un verre d’eau) et lire une bande Chapitre 6 Installer une distribution Python 109 110 Spécifiez un emplacement pour Cinstallation (© Anaconda? 201907 (64-bit) Setup = x ‘Choose install Location ANACONDA choose the folder in wbich to install Anaconda2 2019.07 (64-bi). ‘Setup wil instal Anaconda2 2019.07 (64-bit) in the folowing folder. To instal in a different folder, cick Browse and select another folder. Clk Next to continue. ‘Space avalable: 26.368 Anaconda, Ine Configurez les options d’installation avancées. © Anaconda? 2019.07 (64-bit) Setup = x ‘Advanced Installation Options ANACONDA _asstomize how Anaconda integrates with Windows: (Ada Anaconda to my PATH environment variable Not reconmended. Instead, open Anaconda with the Windows Start menu and select “Anaconda (64-i)". This “add to PATH” option makes ‘Anaconda get found before previously instaled software, but may ‘cause problems requring you to uninstall and rental Anaconda. Ziregister Anaconda 2s my defaut Python 2.7 This will allow other programs, such as Python Tools for Visual Studio PyCharm, Wing IDE, PyDev, and MSI binary packages, to automaticaly detect Anaconda as the primary Python 2.7 on the system. ‘Anaconda, Ine Partie 2 Préparer vos outils pour 'apprentissage automatique dessinée pendant ce temps. Une fois le processus d’installation terminé, le bouton Next est activé. © Cliquez sur Next. L’assistant vous indique que l’installation est terminée. @ Cliquez encore sur Next, puis sur Finish. Vous étes prét & commencer a utiliser Anaconda. Télécharger les jeux de données et le code des exemples Ce livre traite notamment de !’utilisation de Python pour effectuer des taches d’apprentissage automatique. Bien sir, vous pouvez passer tout votre temps & créer le code des exemples a partir de zéro, le débo- guer, et seulement ensuite découvrir comment il se rapporte & l’ap- Chapitre 6 Installer une distribution Python 11 112 prentissage automatique, ou sinon vous pouvez choisir la voie facile et télécharger le code déja écrit afin de pouvoir commencer a travailler directement (petit rappel : |’adresse de téléchargement est http://www. dummies. com/extras/machinelearning). De méme, la création de jeux de données suffisamment importants pour l’apprentissage automatique prendrait un certain temps. Heureusement, vous pouvez accéder assez facilement a des jeux de données standardisés et déja créés a l'aide des fonctions fournies dans certaines bibliothéques d’apprentissage automatique. Les sections suivantes vous aident pour le télécharge- ment et l’utilisation du code et des jeux de données qui vont nous servir d’exemples afin de vous faire gagner du temps et de vous mettre direc- tement au travail pour accomplir des taches spécifiques a l’apprentis- sage automatique. Utiliser Jupyter Notebook Pour faciliter le travail avec le code relativement complexe de ce livre, vous utiliserez Jupyter Notebook. Cette interface vous permet de créer facilement des fichiers notebook pour Python susceptibles de contenir un nombre illimité d’exemples, chacun d’eux pouvant étre exécuté in- dividuellement. Le programme s’exécute dans votre navigateur, donc Ia plate-forme que vous utilisez pour le développement n’a pas @’im- portance : tant que vous disposez d’un navigateur, tout devrait aller bien. Lancer Jupyter Notebook La plupart des plates-formes fournissent une icéne pour accéder & Jupyter Notebook. Ouvrez simplement cette icéne pour accéder a ce- lui-ci. Par exemple, sur un syst&me Windows, vous choisirez Démarrer, puis Tous les programmes (selon la version de Windows), Anaconda et enfin Jupyter Notebook. La Figure 6.6 montre a quoi resemble linter- face lorsqu’elle est affichée dans un navigateur Firefox. L’apparence précise sur votre syst¢me dépend du navigateur que vous utilisez et du type de plate-forme que vous avez installé, Si vous disposez d’une plate-forme qui n’offre pas un accés facile par le biais d’une icéne, vous pouvez utiliser ces étapes pour accéder & Jupyter Notebook @ Ouvrez une fenétre d’invite de commandes ou de terminal sur votre systéme. La fenétre s’ouvre pour que vous puissiez saisir des commandes. Partie 2 Préparer vos outils pour 'apprentissage automatique Jupyter Notebook offre une méthode simple pour créer des exemples d'ap- prentissage automatique. tyatsioas fyeunais tye tious tyas ewes tyatreaes tyampor fyawen ayes © Accédez au répertoire \Anaconda2\Scripts, ou bien encore Ana- condaProjects, sur votre machine. La plupart des systémes vous permettent d’utiliser la commande CD pour cette tache. © Tapez ..\python ipython2-script.py notebook et appuyez sur En- trée. La page de Jupyter Notebook s’ouvre dans votre navigateur. Arréter le serveur Jupyter Notebook Quelle que soit la facon dont vous démarrez Jupyter Notebook (ou plus simplement Notebook, comme dans la suite du livre), le systéme ouvre généralement une invite de commande ou une fenétre de terminal pour héberger Jupyter Notebook. Cette fenétre contient un serveur qui fait fonctionner l’application. Aprés avoir refermé la fenétre du navigateur une fois la session terminée, sélectionnez la fenétre du serveur et ap- puyez sur Ctrl + C ou Ctrl + Break pour arréter celui-ci. Chapitre 6 Installer une distribution Python 113 114 Définir le dépé6t du code Le code que vous créez et utilisez dans ce livre sera stocké dans un dé- pot (un dossier) sur votre disque dur. Pensez 4 un dépét comme a une sorte de classeur ott vous rangez votre code. Notebook ouvre un tiroir, sort le dossier et vous montre le code. Vous pouvez le modifier, exécu- ter des exemples individuels pris dans le dossier, ajouter de nouveaux exemples, et simplement interagir avec votre code d’une maniére na- turelle. Les sections suivantes vous permettent de commencer a utiliser Notebook pour voir comment fonctionne ce concept de dépét. Définir le dossier du livre est tout a facile recommandé d’organiser vos fichiers pour que vous puissiez y accéder plus facilement par la suite. Ce livre stocke ses fi chiers dans un dossier appelé ML4D (I’abréviation de Machine Learning for Dummies). Suivez ces étapes dans Notebook pour créer un nouveau dossier : © Choisissez le bouton New, puis Folder (dossier). Notebook va créer un nouveau dossier appelé Dossier sans titre (Un- titled Folder), comme l’illustre la Figure 6.7. Le nom apparaitra dans ordre alphanumérique, de sorte qu’il est possible que vous ne le voyiez pas initialement. Vous devez faire défiler la page vers le bas jusqu’a emplacement correct. De nouveaux dossiers apparaitront avec un nom de dossier sans titre. 2 SR Oremmensscnee SE Jupyter oOmee © Ome Per © Ocmome Dram 0 Omg 0 Optom 0 Beaten CO tm ‘TD Oumron 5 Ome Domest open Partie 2 Préparer vos outils pour 'apprentissage automatique © Cochez la case devant l’entrée Untitled Folder. © Cliquez sur Rename (renommer), en haut de la page. Vous voyez une boite de dialogue Renommer le répertoire comme celle illustrée sur la Figure 6.8. Figure 6.8 Renommez le dossier pour vous souvenir des types d'entrées qu'il contient. ee ee ee eT EGE @ Tapez MLD et cliquez sur Renommer. Notebook change le nom du dossier. © Cliquez sur la nouvelle entrée ML4D dans la liste. Notebook se déplace vers le dossier ML4D dans lequel vous effec- tuez les taches liées aux exercices de ce livre. Créer un nouveau notebook Chaque nouveau notebook portable est comme un dossier. Vous pou- vez y ranger des exemples individuels, comme vous le feriez pour des feuilles de papier dans un dossier physique. Chaque exemple apparait dans une cellule. Vous pouvez aussi mettre d’autres types de choses dans le dossier de fichiers, mais vous verrez comment tout cela fonc- tionne au fur et 4 mesure de la progression du livre. Suivez ces étapes pour créer un nouveau notebook © Cliquez sur New, puis sur Python 2. Chapitre 6 Installer une distribution Python 115 Un nouvel onglet s’ouvre dans le navigateur. Il affiche votre nouveau notebook, comme Dillustre la Figure 6.9. Notez que le notebook affiche une cellule et qu’il a mis cette cellule en surbril- lance pour que vous puissiez commencer a y taper du code. Le titre du notebook est pour l’instant Untitled (sans titre). Ce n’est pas un intitulé particuligrement utile, et vous devez donc en changer. Un notebook contient des cellules que vous utilisez pour la saisie du code. © Cliquez sur Untitled dans la page. Notebook vous demande ce que vous voulez choisir comme nou- veaut nom, comme ’illustre la Figure 6.10. © Tapez ML4D ; 06 ; Sample et appuyez sur Entrée. Le nouveau nom vous indique qu’il s’agit d’un fichier pour le Chapitre 6 de ce livre, appelé Sample.ipynb. L’utilisation de cette convention de dénomination vous permettra de différencier facile- ment ces fichiers des autres éléments de votre dépét. Bien sfir, le notebook Sample ne contient encore rien. Placez le cur- seur dans la cellule, et tapez quelque chose comme print ‘Python est vraiment cool’, puis cliquez sur le bouton Exécuter (Je bouton avec la fléche vers la droite de la barre d’outils). Vous voyez apparaitre le ré- sultat illustré sur la Figure 6.11. La sortie fait partie de la méme cellule que le code. Cependant, Jupyter Notebook sépare visuellement la sortie du code pour que vous puissiez les distinguer. Notebook crée automati- quement une nouvelle cellule pour que vous puissiez continuer. 116 Partie 2 Préparer vos outils pour 'apprentissage automatique Figure 6.10 Donnez un nouveau nom a votre notebook. a a ae os Dae mE xe males © Gf Occ > © @ 0 anaesssinmosanan Figure 6.11 Notebook utilise des cellules pour enregistrer votre code. a ae ae cae ae SE 7 CeO manonons Syjupyter MLA0; 06; Sample maw, Bit eR +o Kote mw ow eo Lorsque vous avez terminé de travailler avec un notebook, il est im- portant de le refermer. Pour cela, choisissez File, puis Close and Halt (refermer et arréter, voir la Figure 6.12). Vous revenez a la page d’accueil, ott vous pouvez constater que le note- book que vous venez de créer a été ajouté & la liste, comme V’illustre la Figure 6.13. Chapitre 6 Installer une distribution Python = 117 Refermer un notebook et quitter. eS enews Exporter un notebook Créer des notebooks et les garder pour soi n’est pas trés amusant. A un moment donné, vous voudrez les partager avec d’autres personnes. Pour cela, vous devez exporter votre notebook du dépét vers un fichier. 118 Partie 2 Préparer vos outils pour apprentissage automatique Vous pouvez ensuite envoyer ce fichier quelqu’un d’autre, qui lim- portera alors dans son propre dépét. La section précédente montre comment créer un notebook nommé ML4D } 96 ; Sample. Vous pouvez ouvrir ce carnet en cliquant sur son nom dans le listing du dépét. Le fichier s’ouvre & nouveau pour que vous puissiez revoir votre code. Pour exporter ce code, choisissez File, puis Download As et enfin Notebook. Ce que vous voyez ensuite dépend de votre navigateur, mais vous obtenez généralement une sorte de boite de dialogue permettant d’enregistrer le notebook sous forme de fichier. Utilisez la méme méthode pour enregistrer le fichier Jupyter Notebook que pour tout autre fichier sauvegardé depuis votre navigateur. Supprimer un notebook Parfois, les notebooks deviennent obsolétes, ou vous n’avez tout sim- plement plus besoin de travailler avec eux. Plutét que de laisser votre dépét étre pollué par des fichiers dont vous n’avez pas besoin, vous pouvez supprimer ces notebooks indésirables de la liste. Suivez pour cela ces étapes : oe Cochez la case qui se trouve devant l’entrée ML4D ; 06 ; Sample. ipynb. © Cliquez sur l’icdne de corbeille (Supprimer) en haut de la page. Un message d’avertissement Supprimer, comme celui illustré sur la Figure 6.14, s’affiche. © Cliquez sur Supprimer. Le fichier est supprimé de la liste. Importer un notebook Pour utiliser le code source de ce livre, vous devez importer les fichiers téléchargés dans votre dépdt. Le code source se trouve dans un fichier darchive que vous extrayez vers un emplacement sur votre disque dur. L’archive contient une liste de fichiers . ipynb (IPython Notebook) contenant le code source de ce livre (voir l’introduction pour plus de détails sur le téléchargement du code source). Les étapes suivantes in- diquent comment importer ces fichiers dans votre référentiel : @ Cliquez sur le bouton Upload, en haut de la page. Chapitre 6 Installer une distribution Python 119 Figure 6.14 Notebook vous avertit avant de supprimer tout fichier du dépét. Ce que vous voyez dépend de votre navigateur. Dans la plupart des cas, une boite de dialogue de type Envoi de fichiers s’affiche pour vous donner accés au contenu de votre disque dur. © Naviguez jusqu’au dossier contenant les fichiers que vous voulez importer dans Notebook. © Mettez en surbrillance un ou plusieurs fichiers 4 importer et cli- quez sur le bouton Ouvrir (ou similaire) pour lancer le processus de chargement. Le fichier est ajouté a une liste de téléchargement, comme I’il- lustre la Figure 6.15. Le fichier ne fait pas encore partie du dépat — il est simplement sélectionné. © Cliquez sur Téléverser. Notebook place le fichier dans le dépét pour que vous puissiez commencer a Putiliser. © Recommencez tape 4 pour les autres fichiers a télécharger. Comprendre les jeux de données utilisés dans ce livre Ce livre utilise un certain nombre de jeux de données, qui apparaissent tous dans la bibliothéque Scikit-learn. Ils illustrent les diverses facons 120 Partie 2 Préparer vos outils pour l'apprentissage automatique ‘Figure 6.15 Les fichiers que vous voulez ajouter au dépét apparaissent dans une liste de téléchargement. dont vous pouvez interagir avec les données, et vous les utiliserez dans les exemples du livre pour effectuer diverses taches. La liste suivante donne un apercu rapide de la fonction utilisée pour importer chacun des jeux de données dans votre code Python : » load_boston() : Analyse de régression avec un jeu de données sur les prix des maisons & Boston. load_iris() : Classification avec le jeu de données Iris. load_diabetes() : Régression avec un jeu de données sur le diabéte. load_digits([n_class]) : Classification avec un jeu de données servant a la reconnaissance de chiffres. fetch_20newsgroups(sous-ensemble=‘ train’) : Données de 20 groupes de discussion. fetch_olivetti_faces() : Un jeu de photographies de personages connus. La technique de chargement de chacun de ces jeux de données est la méme pour tous les exemples. L’extrait de code suivant montre com- ment charger le jeu de données concernant le prix des maisons & Bos- ton. Vous pouvez trouver ce code dans le notebook ML4D ; 06 ; Dataset Load. ipynb. Chapitre 6 Installer une distribution Python 121 from sklearn.datasets import load_boston Boston = load_boston() print (Boston.data. shape) Pour voir comment ce code fonctionne, cliquez sur le bouton Exécuter. La sortie produite par l’appel a print est (586L, 13L). Vous pouvez voir cette sortie illustrée sur la Figure 6.16. objet Boston contient le jeu de données chargé. 122 Partie 2 Préparer vos outils pour lapprentissage automatique Chapitre 7 Coder en Python avec Anaconda |: Chapitre 6 vous a aidé a créer une installation Py- thon que vous pouvez utiliser a diverses fins, y compris ’ap- prentissage automatique et la science des données. L’objectif de ce chapitre est de fournir un bon apercu du travail avec Python en tant que langage ainsi que pour résoudre des problémes d’apprentissage automatique. Si vous connais- sez déja Python, vous pouvez sauter ce chapitre et passer au suivant. Il serait peut-étre préférable, cependant, de parcourir, au moins rapidement, ce chapitre et de tester certains des exemples, juste pour étre stir que votre installation fonctionne correctement. Si vous étes un nouveau venu en Python, vous ne pouvez pas utiliser ce livre pour apprendre Python en partant de rien — pour cela, vous avez besoin d’un livre tel que Python pour les Nuls, par le coauteur de ce livre John Mueller (Editions First), ou d’un tutoriel tel que celui qui est accessible a |’adresse https://docs.python.org/fr/2/tutorial/. Ce chapitre suppose que vous avez travaillé avec d’autres langages de pro- grammation et que vous avez au moins une idée du fonctionnement de Python. Ces limites mises a part, vous pouvez utiliser ce chapitre pour vous rafraichir la mémoire sur le fonctionnement de Python, qui est tout ce dont beaucoup de gens ont vraiment besoin. Vous allez décou- vrir ici les bases du travail avec les types de données Python, les struc~ tures de codage et les stratégies de manipulation des données. Ce livre utilise Python 2.7.x. La derniére version de Python a ce jour est la version 2.7.16. Si vous essayez d’utiliser ce livre avec Python 3.5.1 123 124 (ou supérieur), vous devrez peut-étre modifier les exemples pour com- penser certaines différences. L’encadré « Utiliser Python 2.7 pour ce livre > du Chapitre 6 vous donne des détails sur les différences entre les versions de Python. En parcourant les exemples de ce chapitre, vous saurez & quoi vous attendre avec les autres exemples du livre si vous décidez @’utiliser une version 3.5.1 ou plus pour résoudre des problémes d’apprentissage automatique. Travailler avec les nombres et la logique L’apprentissage automatique implique de travailler avec des données de différentes sortes, mais une grande partie du travail implique la manipulation de nombres. En outre, vous utilisez des valeurs logiques pour prendre des décisions concernant les données que vous utilisez. Par exemple, vous pourriez avoir besoin de savoir si deux valeurs sont égales ou si une valeur est supérieure une autre. Python supporte ces types de nombres et de valeurs logiques : » Tout nombre entier est un integer (entier). Par exemple, la valeur 1 est un nombre entier, donc c’est un integer. D’un autre cété, 1,0 n’est pas un nombre entier car il a une partie décimale. Les entiers sont représentés par le type de données int. Sur la plupart des plates-formes, vous pouvez stocker des nombres compris entre —9,223,372,036,854,775,808 et 9,223,372,036,036,854,775,807 dans un int (soit la valeur maximale qui tient dans une variable sur 64 bits, les virgules permettant de faciliter la séparation des groupes de chiffres). » Tout nombre qui comprend une partie décimale est une valeur en virgule flottante. Par exemple, 1,0 a une partie décimale, donc c’est une valeur a (ou en) virgule flottante. Beaucoup de gens confondent les nombres entiers et les nombres a virgule flottante, mais la différence est facile a retenir. Si vous voyez une décimale dans le nombre, c’est une valeur a virgule flottante. Python stocke les valeurs a virgule flottante dans le type de données float. La valeur maximale qu’une variable a virgule flottante peut conte- nir est £1,7976931348623157x10>%, la valeur minimale étant de +2,225073858507201410-3°8 (du moins sur la plupart des plates- formes). » Unnombre complexe se compose d’un nombre réel et d’un nombre imaginaire qui sont liés ensemble. Au cas oli vous auriez complétement oublié vos cours sur les nombres complexes, vous pouvez par exemple vous reporter a l’adresse https://bit.ly/ Partie 2 Préparer vos outils pour 'apprentissage automatique a Chapitre 7 Coder en Python avec Anaconda True (Vrai) ou False (Faux). Vous pouvez attribuer une valeur en. utilisant les mots-clés True ou False, ou vous pouvez créer une expression qui définit une valeur logique équivalent a vrai ou faux. Par exemple, vous pourriez dire monBool = 1 > 2, ce qui correspond évidemment a une supposition fausse, car 1 n’est certainement pas supérieur a2. Maintenant que vous avez les bases, vous pouvez passer aux travaux pratiques pour voir les types de données en action. Les sections sui- vantes donnent un apercu rapide de la facon dont vous pouvez travail- ler avec des données numériques et logiques en Python. Effectuer des affectations dans des variables Lorsque vous utilisez des applications, vous stockez les informations dans des variables. Une variable est une sorte de boite de rangement. Chaque fois que vous voulez travailler avec une certaine information, vous y accédez a l'aide de la variable correspondante. Si vous avez de nouvelles informations que vous voulez stocker, vous les mettez dans une variable. Changer d'information signifie accéder d’abord & la variable, et ensuite stocker la nouvelle valeur dans la variable. Tout comme vous rangez des choses dans des boites dans le monde réel, vous placez des choses dans des variables lorsque vous travaillez avec des applications. Pour enregistrer des données dans une variable, vous les affectez celle-ci & aide d’un certain nombre d’opérateurs spécifiques (des symboles spéciaux qui vous indiquent comment stocker les données). Le Tableau 7.1 montre les opérateurs d’affectation pris en charge par Python, (La colonne d’exemple suppose que MaVar contient déja la va- leur 5 lorsqu’une telle valeur est nécessaire.) Tableau 7.1 Opérateurs d’affectation Python. ee, fe En = Affecte la valeur trouvée dans {opérande —_MaVar = 2 signifie que MaVar de droite 4 lopérande de gauche contient maintenant 2 ee Ajoute la valeur trouvée dans (opérande —- MaVar += 2 signifie que MaVar de droite a la valeur trouvée dans lopé- _—_contient maintenant 7 rande de gauche et place le résultat dans opérande de gauche 126 Partie 2 Préparer vos outils pour U'apprentissage automatique Glu Soustrait la valeur trouvée dans 'opé- rande de droite de la valeur trouvée dans opérande de gauche et place le résultat dans Uopérande de gauche Exempl: MaVar ~=2 signifie que MaVar contient maintenant 3 Multiplie la valeur trouvée dans Copé- rande de droite par la valeur trouvée dans Vopérande de gauche et place le résultat dans Copérande de gauche Divise la vateur trouvée dans lopérande de gauche par la valeur trouvée dans Copérande de droite et place le résultat dans 'opérande de gauche MaVar *= 2 signifie que MaVar contient maintenant 10 MaVar /= 2 signifie que MaVar contient maintenant 2,5 Divise la valeur trouvée dans Copérande de gauche par la valeur trouvée dans opérande de droite et place le reste dans opérande de gauche MaVar %= 2 signifie que MaVar contient maintenant 1 Détermine la valeur exponentielle trouvée dans lopérande de gauche lorsquielle est élevée 8 la puissance de la valeur trouvée dans l‘opérande de droite et place le résultat dans (opérande de gauche MaVar **= 2 signifie que MaVar contient maintenant 25 Ih Divise la valeur trouvée dans Uopérande de gauche par a valeur trouvée dans opérande droite de et place le résultat entier dans Copérande de gauche Maar //= 2 signifie que MaVar contient maintenant 2 Faire des calculs arithmétiques Le stockage des informations dans des variables les rend facilement accessibles. Cependant, pour effectuer n’importe quel travail utile avec une variable, vous effectuez habituellement un certain type d’opéra- tion arithmétique sur elle. Python supporte les opérateurs arithmé- tiques courants que vous utilisez pour effectuer des taches manuelle~ ment. Ces opérateurs sont détaillés dans le Tableau 7.2. Tableau 7.2) Opérateurs arithmétiques de Python. rt tee seus + Ajoute deux valeurs ensemble 542-7 - Soustrait Uopérande de droite de topérande de gauche 5-2-3 Chapitre 7 Coder en Python avec Anaconda. 127 Multiplie Copérande de droite par Uopérande de gauche / Divise 'opérande de gauche par Copérande de droite 5/2 % Divise Copérande de gauche par topérande de droite et 5%2=1 retourne le reste “ Calcule la valeur exponentielle de Vopérande de droite par. = 5 ** 2= 25 opérande de gauche W Exécute la division entiére, dans laquelle Uopérande de 5//2=2 gauche est divisé par lopérande de droite, seul le résultat entier étant retourné Parfois, vous avez besoin d’interagir avec une seule variable. Python supporte un certain nombre d’opérateurs unaires, ceux qui fonc- tionnent avec une seule variable, comme !’illustre le Tableau 7.3. Tableau 7.3 Opérateurs unaires de Python. Inverse les bits dans un nombre de sorte que ~4 donne une valeur de -5 tous les bits 0 deviennent 1 bit et vice versa 128 Inverse la valeur d'origine de maniére qu'une _-{-4) donne 4 et ~4 donne ~4, valeur positive devienne négative et vice versa Fourni uniquement par souci d'exhaustivité. +4 donne une valeur de 4 Cet opérateur retourne la méme valeur que celle que vous fournissez en entrée Les ordinateurs peuvent effectuer d’autres types de taches mathéma- tiques en raison de la faon dont le processeur fonctionne. Il est im- portant de se rappeler que les ordinateurs stockent les données sous forme dune série de bits individuels. Python vous permet d’accéder & ces bits individuels l’aide d’opérateurs binaires, comme indiqué dans le Tableau 7.4. Comparer des données a l'aide d’expressions booléennes Vutilisation de larithmétique pour modifier le contenu des variables est un type de manipulation de données, Pour déterminer l’effet d’une Partie 2 Préparer vos outils pour apprentissage automatique Opérateurs binaires de Python, ription Eee (Et) Détermine si les deux bits individuels au 0b1100 & 0b0110 = 0b0100 sein de deux opérateurs sont vrais et met le bit résultant a 1 (True) dans ce cas, sinon 0 (False) Hou) Détermine si {un ou Uautre des bits indivi 0b1100 | 0010110 = 0b1110 duels de deux opérateurs est vrai et met le bit résultant a 1 (True] dans ce cas, sinon & 0 (False) [Ou Détermine si un seul des bits individuels 01100 * 0b010110 = 0b1010 exclusif] dans deux opérateurs est vrai et met le bit résultant a 1 (True] dans ce cas, sinon 0 (False) ~(Complé- _ Calcule la valeur de complément a un ~0b111100 = -0b110101 ment un} — nombre. €€ [Dé __Décale les bits de opérande de gauche b001 100110011 Cee calage vers vers {a gauche du nombre de positions 2=0b1111001100 lagauche} _fourni par la valeur de Copérande de droite. Tous les nouveaux bits sont mis 8 0, et tous les bits qui sortent sont perdus >> [Dé-__Décale les bits de lopérande de gauche 0001100110011 >> calage vers _ vers la droite du nombre de positions fourni 2 = 00000001100 ladroite) par la valeur de lopérande de droite. Tous les nouveaux bits sont mis a 0 et tous les bits qui sortent sont perdus manipulation de données, un ordinateur doit comparer l’état actuel de la variable a son état d’origine, ou a |’état d’une valeur connue. Dans certains cas, il est également nécessaire de détecter |’état d’une entrée par rapport a une autre. Toutes ces opérations vérifient la relation entre deux variables, de sorte que les opérateurs résultants sont des opéra- teurs relationnels, comme l’illustre le Tableau 7.5. Parfois, un opérateur relationnel ne peut pas raconter toute l’histoire de la comparaison entre deux valeurs. Par exemple, vous pourriez avoir besoin de vérifier une condition dans laquelle deux comparaisons dis- tinctes sont nécessaires, telles que MonAge > 40 et MonPoids < 74. La nécessité d’ajouter des conditions & la comparaison nécessite un opé- rateur logique du type illustré dans le Tableau 7.6. Chapitre 7 Coder en Python avec Anaconda 129 Tableau 7.5) Opérateurs relationnels de Python. Zest False [faux] Détermine si deux valeurs sont égales. Notez que 1 'opérateur relationnel utilise deux signes d’égalité Une erreur que beaucoup de développeurs font est diutiliser un seul signe égal, ce qui a pour résultat diaffecter une valeur a une autre. Détermine si deux valeurs ne sont pas égales. 1 '= 2 est True (vrail Certaines anciennes versions de Python vous per- mettaient d‘utiliser 'opérateur <> & la place de Uopérateur !=, ce qui entraine une erreur dans les versions actuelles de Python. > Veérifie que la valeur de Copérande de gauche est 1 > Zest False (faux) supérieure a la valeur de Uopérande de droite € Vérifie que la valeur de Copérande de gauche est 1€ Zest True (vrail inférieure a la valeur de 'opérande de droite > Véritie que la valeur de Vopérande de gauche est su- 1 >= 2est False périeure ou égale a la valeur de lopérande de droite faux) e Vérifie que la valeur de Vopérande de gauche est 12€ Zest True (vrai) inférieure ou égale a la valeur de Uopérande de droite —_—_ _ —————— Tableau 716) Opérateurs logiques de Python. Cec ae) scription Exemp and Détermine si les deux opérandes sont vrais. True and True donne True True and False donne False False and True donne False False and False donne False or Détermine si un des deux opérandes est vrai. True or True donne True True or False donne True False or True donne True False or False donne False not Inverse la valeur de vérité d'un seul opé- not True donne False rande. Une valeur vraie devient fausse, et une _not False donne True valeur fausse devient vrai 130 Partie 2 Préparer vos outils pour U'apprentissage automatique Les ordinateurs permettent d’ordonner les comparaisons en rendant certains opérateurs plus importants que d’autres. L’ordre des opé- rateurs est leur priorité. Le Tableau 7.7 montre l’ordre de priorité de tous les opérateurs Python courants, y compris quelques-uns que vous n’avez pas encore vus dans cette discussion. Lorsque vous faites des comparaisons, tenez toujours compte de la préséance des opérateurs. Sinon, les hypothéses que vous faites au sujet des résultats d’une com- paraison seront probablement fausses. Tableau 7.7) Ordre de priorité des opérateurs Python. Seay 0 Vous utilisez des parenthéses pour regrouper des expressions afin de modifier la priorité par défaut pour forcer une opération de priorité inférieure {telle que addition) & prendre le pas sur tune opération de priorité supérieure (telle que la multiplica~ tion). 2 exponentiation élave la valeur de Vopérande de gauche a la puissance de lopérande de droite. Les opérateurs unaires interagissent avec une seule variable ou expression. "1% iL Multiplication, division, modulo et reste entier. + Addition et soustraction. 33 ce Décalage binaire vers la droite et vers la gauche. & AND [et] au niveau du bit. OR (ou) exclusif au niveau du bit et OR standard. Opérateurs de comparaison. Opérateurs d'égalit Opérateurs d’affectatio is Opérateurs d'identité. J is not Sous: Opérateurs d’appartenance. notin not or and Opérateurs logiques. Chapitre 7 Coder en Python avec Anaconda 131 Créer et utiliser des chaines de caractéres De tous les types de données, les chaines de caractéres sont les plus faciles & comprendre par les humains, et inversement pas du tout com- prises par les ordinateurs. Une chaine de caractéres est simplement un groupement quelconque de caractéres que vous placez entre guillemets doubles. Par exemple, maChaine = «Python est un langage génial» affecte une chaine de caractéres 4 maChaine. L’ordinateur ne voit pas du tout les lettres comme vous. Chaque lettre que vous utilisez est représentée par un nombre en mémoire. Par exemple, la lettre A est en fait représentée par le nombre 65. Pour le voir par vous-méme, tapez ord(«A>>) a la suite de l’invite de Python et appuyez sur Entrée. Vous voyez 65 comme sortie. Vous pouvez conver- tir n’importe quelle lettre en son équivalent numérique en utilisant la commande ord(). Du fait que l’ordinateur ne comprend pas vraiment les chaines de carac- téres, mais que celles-ci sont tellement utiles pour écrire des applica- tions, vous avez parfois besoin de convertir une chaine de caractéres en un nombre. Vous disposez des commandes int() et float() pour effec- tuer cette conversion. Par exemple, si vous tapez montInt = int(<«123>>) et que vous appuyez sur Entrée a l’invite de Python, vous créez un objet int nommé monint qui contient la valeur 123. teres en utilisant la commande str(). Par exemple, si vous tapez ® Vous pouvez aussi convertir un nombre en une chaine de carac- 132 monStr = str(1234.56) et que vous appuyez sur Entrée, vous créez une chaine de caractéres contenant la valeur «1234.56» et vous I’affectez nonstr. Le fait important est que vous pouvez basculer entre chaines de caractéres et nombres avec une grande facilité. Les chapitres suivants montrent comment ces conversions rendent de nombreuses taches ap- paremment impossibles tout a fait réalisables. Comme pour les nombres, vous pouvez utiliser certains opérateurs spéciaux avec des chaines de caracteres (et d’autres nombreux objets). Les opérateurs d’appartenance vous permettent de déterminer si une chaine posséde un contenu spécifique. Le Tableau 7.8 présente ces opé- rateurs. Vous avez évidemment aussi besoin de connaitre le type de données que les variables contiennent. Vous utilisez les opérateurs d’identité pour effectuer cette tache, comme |’illustre le Tableau 7.9. Partie 2 Préparer vos outils pour 'apprentissage automatique Tableau 78) Opérateurs d'appartenance de Python ea Etna In Détermine si la valeur de Lopérande de “Hello” in "Hello Goodbye” gauche apparait dans ta séquence trouvée est True (vrail dans opérande de droite not in Détermine sila valeur de 'opérande de “Hello” not in “Hello Goo- gauche est manquante dans la séquence dbye” est False (faux). trouvée dans Copérande de droite ‘Tableau 7.9 Opérateurs d'identité de Python ieee is Est évalué & True lorsque le type de la valeur ou de lex- _typel2/is int est pression dans Copérande de droite pointe vers le méme True type dans (opérande de gauche isnot Est évalué & True lorsque le type de la valeur ou de typel2] is not expression dans 'opérande de droite pointe vers un type _ int est False. différent de la valeur ou de expression dans Copérande de gauche Interagir avec les dates Les dates et les heures sont des éléments avec lesquels la plupart des gens travaillent beaucoup. Bon nombre entreprises basent une bonne partie de leur activité sur la date et I’heure a laquelle une tache doit étre ou a été accomplie. Nous prenons des rendez-vous et nous planifions des événements pour des dates et des heures précises. La majeure par- tie de notre journée tourne autour de l’horloge. En raison de la nature temporelle des humains, c’est une bonne idée de regarder comment Python gére les interactions avec les dates et les heures (en particulier le stockage de ces valeurs pour une utilisation ultérieure). Comme pour tout le reste, les ordinateurs ne comprennent que les chiffres — pour eux les dates et les heures n’existent pas vraiment. Pour travailler avec les dates et les heures, vous devez lancer une com- mande spéciale import datetime. Techniquement parlant, cela s’ap- pelle importer un module (voir la section « Stocker du code dans des modules >>, plus loin dans ce chapitre, pour plus de détails). Ne vous inquiétez pas pour |’instant de la facon dont cette commande fonc- tionne — utilisez-la simplement quand vous voulez faire quelque chose avec une date et une heure. Chapitre 7 Coder en Python avec Anaconda 133 134 Les ordinateurs contiennent des horloges, mais ces horloges sont des- tinées aux humains qui utilisent l’ordinateur. Bien sfir, certains lo- giciels dépendent aussi de 'horloge de l’ordinateur, mais, 1a encore, Paccent est mis sur les besoins humains plutét que sur ce que l’ordina- teur pourrait nécessiter. Pour obtenir l’heure actuelle, vous pouvez simplement taper datetime. datetime.now() et appuyer sur Entrée. Vous voyez les informations completes de date et d’heure trouvées sur l’horloge de votre ordina- teur, telles que datetime.datetime(2019, 9, 5, 13, 30, 44, 842809). Vous avez peut-étre remarqué que la date et |’heure sont un peu di ficiles a lire dans le format existant. Supposons donc que vous vouliez obtenir juste la date du jour, et ce dans un format lisible. Pour accom- plir cette tache, vous n’accédez qu’a la partie date de la sortie et vous la convertissez en chaine. Tapez str(datetime.datetime.now().date()) et appuyez sur Entrée. Vous voyez maintenant le résultat dans un format plus convivial, tel que ‘2019-09-05". Il est intéressant de noter que Python posséde également une com- mande time(), qui renvoie ’heure actuelle. Vous pouvez obtenir des valeurs séparées pour chacun des composants qui composent la date et l’heure en utilisant les valeurs jour, mois, année, heure, minute, se- conde et microseconde. Les chapitres suivants vous aideront 4 com- prendre comment utiliser ces différentes fonctions de date et d’heure pour faciliter votre travail avec les applications d’apprentissage auto- matique. Créer et utiliser des fonctions Pour bien gérer l’information, vous devez organiser les outils servant a effectuer les taches requises. Chaque ligne de code que vous créez exécute une tache spécifique, et vous combinez ces lignes de code pour obtenir un résultat souhaité. Parfois vous avez besoin de répéter les mémes instructions avec des données différentes, et dans certains cas votre code devient si long qu’il est difficile de garder la trace de ce que chaque partie fait. Les fonctions servent d’outils d’organisation qui maintiennent votre code propre et ordonné. De plus, elles vous per- mettent de réutiliser facilement les instructions que vous avez créées au besoin avec différentes données. Cette section du chapitre vous donne toutes les informations dont vous avez besoin sur les fonctions. Plus important encore, vous allez commencer a créer vos premiéres applications sérieuses de la méme maniére que ce que font les déve- loppeurs professionnels. Partie 2 Préparer vos outils pour l‘apprentissage automatique Créer des fonctions réutilisables Vous allez a votre placard, vous sortez votre pantalon et votre chemise, vous enlevez les étiquettes et vous les mettez. A la fin de la journée, vous enlevez tout et vous jetez les vétements 8 la poubelle. Ce n’est évidemment pas ce que font les gens (du moins, en général). La plupart des gens enlevent les vétements, les lavent et les remettent dans le placard pour les réutiliser. Les fonctions sont également réutilisables. Personne ne veut continuer a répéter encore et encore la méme tache : elle devient rapidement monotone et ennuyeuse. Lorsque vous créez une fonction, vous définissez un ensemble de code que vous pouvez utiliser 4 volonté pour effectuer la méme tache. Tout ce que vous avez & faire est de dire a ordinateur d’effectuer une tache spécifique en lui disant quelle fonction appeler. L’ordinateur exécute fidélement chaque instruction de la fonction a chaque fois que vous lui demandez de le faire. Lorsque vous travaillez avec des fonctions, le code qui a besoin des services d’une fonction est appelé l’appelant : il fait appel a la fonction pour effectuer un certain nombre de taches pour lui. La plupart des informations que vous voyez sur les fonctions se référent 4 l’appelant. L’appelant doit fournir des informations a la fonction, et la fonction renvoie des informations a l’appelant. A une certaine époque, les programmes informatiques n’incluaient pas le concept de réutilisation du code. En conséquence, les développeurs devaient continuer a réinventer le méme code. Mais trés vite, quelqu’un a eu Didée d’employer des fonctions, et le concept a évolué au fil des ans jusqu’a ce qu’elles soient devenues assez flexibles. Vous pouvez faire en sorte que les fonctions réalisent tout ce que vous voulez. La réutilisation du code est une partie nécessaire des applications pour : » réduire le temps de développement ; » réduire les erreurs de programmatio » augmenter la fiabilité des applications ; » permettre a des groupes entiers de bénéficier du travail d’un seul programmeutr ; » rendre le code plus facile a comprendre ; » améliorer ’efficacité des applications. En fait, les fonctions font toute une liste de choses pour les applications sous forme de code réutilisable. En parcourant les exemples de ce livre, Chapitre 7 Coder en Python avec Anaconda 135 136 vous constaterez a quel point la réutilisabilité vous facilite la vie. Sans cette réutilisabilité, vous en seriez toujours & programmer en bran- chant des 0 et des 1 manuellement dans l’ordinateur ! La création d’une fonction ne demande pas beaucoup de travail. Pour voir comment fonctionnent les fonctions, lancez Python via Anaconda Prompt et tapez le code suivant (appuyez sur Entrée a la fin de chaque ligne) : def DitBonjour() : print(’Bonjour tout le monde 1’) Pour terminer la fonction, appuyez une deuxiéme fois sur Entrée aprés la derniéte ligne. Une fonction commence par le mot-clé def (pour de- fine). Vous fournissez un nom de fonction, des parenthéses qui peuvent contenir des arguments de fonction (données utilisées dans la fonction) et un deux-points. L’éditeur indente automatiquement la ligne sui- vante pour vous (a défaut, saisissez vous-méme des espaces). Python s’appuie sur les caractéres d’espacement pour définir des blocs de code (instructions qui sont associées les unes aux autres dans une fonction). Vous pouvez maintenant utiliser la fonction. Tapez simplement DitBonjour() et appuyez sur Entrée. Les parenthéses apras le nom de la fonction sont importantes parce qu’elles indiquent a Python d’exécuter la fonction, plutét que de vous dire que vous accédez a une fonction comme un objet (pour déterminer de quoi il s’agit). Vous voyez s’affi- cher en sortie Bonjour tout le monde !. Appeler des fonctions Les fonctions peuvent accepter des arguments (données supplémen- taires) et renvoyer des valeurs. La capacité d’échanger des données rend les fonctions beaucoup plus utiles qu’elles ne le seraient autre- ment. Les sections suivantes décrivent comment appeler les fonctions de diverses maniéres pour envoyer et recevoir des données. Envoyer des arguments requis Une fonction peut demander a l’appelant de lui fournir des arguments. Un argument requis est une variable qui doit contenir des données pour que la fonction puisse agir. Ouvrez une fenétre Python et tapez le code suivant def CalcSonme(Valeur1, Valeur2): return Valeur + Valeur2 Partie 2 Préparer vos outils pour apprentissage automatique Vous avez une nouvelle fonction, CalcSomme(). Cette fonction nécessite ‘que vous fournissiez deux arguments pour l’utiliser. Du moins, c’est ce que vous avez vu jusqu’ici. Tapez CaleSomme() et appuyez sur Entrée. Un message d’erreur s’affiche vous indiquant que CalcSomme nécessite deux arguments. Essayer CalcSomme( ) avec un seul argument aurait comme conséquence Paffichage d’un autre message d’erreur. Pour utiliser CalcSomme(), vous devez fournir deux arguments. Pour voir comment cela fonc- tionne, tapez CalcSomme(4, 5) et appuyez sur Entrée. Vous obtenez en sortie la valeur 9. Notez que CalcSonme() donne toujours en sortie 9 lorsque vous four- nissez en entrée 4 et 5. L’instruction return fournit la valeur de la sor- tie, Chaque fois que vous voyez return dans une fonction, vous savez que celle-ci produit une certaine valeur en sortie. Envoyer des arguments par mot-clé Au fur et 4 mesure que vos fonctions deviennent plus complexes et que les méthodes pour les utiliser le sont également, vous voudrez peut- @tre fournir un peu plus de contréle sur la facon précise dont vous ap- pelez la fonction et dont vous lui fournissez des arguments. Jusqu’a présent, vous avez utilisé des arguments positionnels, ce qui signifie que vous avez fourni les valeurs dans l’ordre dans lequel elles appa- raissent dans la liste des arguments posée lors de la définition de la fonction. Cependant, Python dispose aussi d’une méthode permettant d’envoyer aux fonctions des arguments par mot-clé. Dans ce cas, vous communiquez le nom de I’argument, suivi d’un signe égal (=), puis de la valeur de argument. Pour voir comment cela fonctionne, ouvrez une fenétre Python et tapez le code suivant : def AffSonme(Valeur1, Valeur2): print(str(Valeur1) + ‘+ ‘ + str(Valeur2) + ‘= ‘+ str((Valeur1 + Valeur2))) Notez que l’argument de la fonction print () inclut une liste d’éléments a imprimer, et que ces éléments sont séparés par des signes plus (+). En outre, les arguments sont de types différents, vous devez donc les convertir en utilisant la fonction str(). Python vous permet de mélan- ger et de faire correspondre facilement des arguments de cette ma- niére. Cette fonction introduit également le concept de continuation automatique de la ligne. La fonction print() apparait en fait sur deux lignes, et Python continue automatiquement la fonction sur la seconde ligne. Chapitre 7 Coder en Python avec Anaconda 137 138 Maintenant, il est temps de tester affSonme(). Bien stir, vous voulez @abord essayer la fonction en utilisant des arguments positionnels. Vous tapez donc AffSomme(2, 3) et vous appuyez sur Entrée. Vous voyez la sortie attendue, soit 2 + 3 = 5. Tapez maintenant AffSom- me(Valeur2 = 3, Valeurt = 2) et appuyez sur Entrée. Vous retrouvez la méme sortie, 2 + 3 = 5, alors que la position des arguments a été inversée. Donner une valeur par défaut aux arguments de fonction Que vous appeliez une fonction 8 l’aide d’arguments positionnels ou de mots-clés, nos fonctions ont jusqu’ici exigé que vous fournissiez une valeur. Mais, parfois, une fonction peut utiliser des valeurs par défaut si cela est possible. Les valeurs par défaut rendent la fonction plus fa- cile a utiliser, et moins susceptible de provoquer des erreurs lorsqu’un développeur ne fournit pas d’entrée. Pour créer une valeur par défaut, il vous suffit de faire suivre le nom de l’argument par un signe égal puis par la valeur par défaut. Pour voir comment cela fonctionne, ouvrez une fenétre Python et tapez le code suivant : def DitBonjour(Salutation print (Salutation) «Aucune valeur fournie |»): La fonction DitBonjour() enregistre une valeur automatique pour Je message d’accueil lorsqu’un appelant n’en fournit pas. Quand quelqu’un essaie d’appeler DitBonjour() sans argument, Python ne généte pas d’erreur, mais il affiche Aucune valeur fournie !. Tapez DitBonjour() et appuyez sur Entrée pour le vérifier par vous-méme. Le message par défaut s’affiche. Tapez par exemple DitBonjour(«Sa- Tut !>>) pour voir une réponse normale. Créer des fonctions avec un nombre variable d’arguments Dans la plupart des cas, vous savez exactement combien d’arguments il convient de fournir avec votre fonction. Il est payant de travailler ainsi chaque fois que vous le pouvez, car les fonctions comportant un nombre fixe d’arguments sont plus faciles 4 dépanner plus tard. Cepen- dant, parfois, vous ne pouvez tout simplement pas déterminer combien d’arguments la fonction recevra au départ. Par exemple, lorsque vous créez une application Python qui fonctionne en mode ligne de com- mande, l'utilisateur peut ne fournir aucun argument, le nombre maxi- mum d’arguments (en supposant qu’il y en ait un), ou une quantité quelconque d’arguments entre les deux. Partie 2 Préparer vos outils pour lapprentissage automatique

You might also like