Critiques de formations en ligne et de livres
Critiques de formations en ligne et de livresConsultez tous les livres
Dernière mise à jour : 11 octobre 2024 - 136 livres - 136 critiques - note globale :
- Les nouveautés d'Adobe Photoshop CS5 - Comprendre et utiliser les nouvelles fonctions !
- Adobe Photoshop CS5 : les fondamentaux - Créez des images époustouflantes avec Photoshop !
- Photoshop CS5: The Missing Manual - The book that should have been in the box
- Programming Python
- La programmation orientée objet - cours et exercices en UML 2 avec Java 6, C#4, C++, Python, PHP 5 et LinQ
- Mathematica Cookbook
- CUDA par l'exemple - une introduction à la programmation parallèle de GPU
- Minimanuel de C++ - Cours et exos corrigés
- Semantic Web for the Working Ontologist - Effective Modeling in RDFS and OWL
- Thinking in Java
- Effective Java - Second Edition
- JavaScript - Introduction et notions fondamentales
- Structures de données avancées avec la STL - Programmation orientée objet en C++
- Le web sémantique - Comment lier les données et les schémas sur le web ?
- Maîtriser Joomla! - Guide professionnel du développement d'applications
- Réseaux
- Les bases de données NoSQL - Comprendre et mettre en œuvre
- Joomla! - Le Guide Officiel
- Coder efficacement - Bonnes pratiques et erreurs à éviter (en C++)
- Programmer en Fortran - Fortran 90 et ses évolutions : Fortran 95, 2003 et 2008
- Programmer efficacement en C++ - 42 conseils pour mieux maîtriser le C++ 11 et le C++ 14
- Apprentissage machine - De la théorie à la pratique - Concepts fondamentaux en Machine Learning
- Rercherche d'information - Applications, modèles et algorithmes — data mining, décisionnel et big data
- Data Scientist et langage R - Guide d'autoformation à l'exploitation des Big Data
- Big Data et Machine Learning - Les concepts et les outils de la data science
- Maîtrisez l'utilisation des technologies Hadoop - Initiation à l'écosystème Hadoop
- Machine Learning avec Scikit-Learn - Mise en oeuvre et cas concrets
- Deep Learning avec TensorFlow - Mise en oeuvre et cas concrets
- Apprentissage artificiel - Deep learning, concepts et algorithmes
- Data science - Cours et exercices
- Les réseaux - L'ére des réseaux cloud et de la 5G - Edition 2018-2020
- Design Patterns - Apprendre la conception de logiciels en réalisant un jeu vidéo (avec exercices et corrigés)
- Algorithms and Networking for Computer Games
- Conception d'algorithmes - Principes et 150 exercices corrigés
- Machine Learning for Data Streams - With Practical Examples in MOA
- Elements of Causal Inference - Foundations and Learning Algorithms
- Écrire un scénario interactif - Jeux vidéo, escape games, serious games
- Data Visualization - Charts, Maps, and Interactive Graphics
- Théorie des codes - Compression, cryptage, correction
- Hands-On Unsupervised Learning Using Python - How to Build Applied Machine Learning Solutions from Unlabeled Data
- Stream Processing with Apache Flink - Fundamentals, Implementation, and Operation of Streaming Applications
- Think Julia - How to Think Like a Computer Scientist
- GPU Parallel Program Development Using CUDA -
- Computer Graphics Through OpenGL - From Theory to Experiments
- Algorithms Illuminated: The Basics -
- Algorithms Illuminated: Graph Algorithms and Data Structures -
- Algorithms Illuminated: Greedy Algorithms and Dynamic Programming -
- Kernelization - Theory of Parameterized Preprocessing
- Les fibres optiques - Notions fondamentales (Câbles, Connectique, Composants, Protocoles, Réseaux...)
- Les réseaux informatiques - Guide pratique pour l'administration et la supervision
- Spark - Valorisez vos données en temps réel avec Spark ML et Hadoop
- Network Flow Algorithms
- Practical Time Series Analysis - Prediction With Statistics and Machine Learning
- Generative Deep Learning - Teaching Machines to Paint, Write, Compose, and Play
- Data Science from Scratch - First Principles with Python
- Practical Tableau - 100 Tips, Tutorials, and Strategies from a Tableau Zen Master
- Database Internals - A Deep Dive into How Distributed Data Systems Work
- Introduction à Julia - Programmer des mathématiques
- Big Data & Streaming - Le Traitement Streaming et temps réel des données en Big Data
- Graphes, ordres et programmation linéaire - Cours et exercices
- Programmation par contraintes - Démarches de modélisation pour l'optimisation
- Fundamentals of Data Visualization - A Primer on Making Informative and Compelling Figures
- Learning SQL - Generate, Manipulate, and Retrieve Data
- Handbook of Machine Learning - Volume 1: Foundation of Artificial Intelligence
- Handbook of Machine Learning - Volume 2: Optimization and Decision Making
- Ensemble Learning - Pattern Classification Using Ensemble Methods
- Crowds in Equations - An Introduction to the Microscopic Modeling of Crowds
- Algorithms Illuminated: Algorithms for NP-Hard Problems -
- Hands-On Design Patterns and Best Practices with Julia - Proven solutions to common problems in software design for Julia 1.x
- Hands-On C++ Game Animation Programming - Learn modern animation techniques from theory to implementation with C++ and OpenGL
- Automates à états finis et langages réguliers - Rappels des notions essentielles et plus de 170 exercices corrigés
- Le guide de survie Linux - L'essentiel du code et des commandes
- Coder proprement - Nettoyez votre code et devenez plus performant !
- Intelligence artificielle, l'affaire de tous - De la science au business
- Machine Learning Under a Modern Optimization Lens
- Petite leçon de Python - Introduction pratique et orientée projet
- Practical Optimization
- Introduction to Optimization and Hadamard Semidifferential Calculus
- Bandit Algorithms
- The Art of Feature Engineering - Essentials for Machine Learning
- Dynamics of Multibody Systems
- Network Traffic Engineering - Stochastic Models and Applications
- Introduction to the Finite Element Method and Implementation with MATLAB®
- Rigid Body Kinematics
- Modern C++ Programming Cookbook - Master C++ core language and standard library features, with over 100 recipes, updated to C++20
- Conception d'algorithmes - 150 exercices corrigés
- Apprentissage artificiel - Concepts et algorithmes : de Bayes et Hume au Deep Learning
- Professional C++
- Les réseaux 5G - Architecture système, radio et cœur, coexistance 4G, mise en œuvre opérationnelle
- Le grand livre de l'impression 3D
- Basic concepts in algorithms
- The Moment-SOS Hierarchy - Lectures in Probability, Statistics, Computational Geometry, Control and Nonlinear PDEs
- Reinforcement Learning - Industrial Applications of Intelligent Agents
- Antivirus Bypass Techniques - Learn practical techniques and tactics to combat, bypass, and evade antivirus software
- Graph Machine Learning - Take graph data to the next level by applying machine learning techniques and algorithms
- Interactive Dashboards and Data Apps with Plotly and Dash - Harness the power of a fully fledged frontend web framework in Python — no JavaScript required
- 3D Graphics Rendering Cookbook - A comprehensive guide to exploring rendering algorithms in modern OpenGL and Vulkan
- Operations Research - Introduction to Models and Methods
- Interpretable Machine Learning with Python - Learn to build interpretable high-performance models with hands-on real-world examples
- Clustering - Theoretical and Practical Aspects
- L'UX, c'est quoi exactement ? - Une approche bienveillante pour des expériences optimales
- Introduction au Machine Learning
- L'art du game design - Se focaliser sur les fondamentaux
- Data Algorithms with Spark - Recipes and Design Patterns for Scaling Up using PySpark
- Fluent Python - Clear, Concise, and Effective Programming
- Graph and Networks
- Reinforcement Learning and Stochastic Optimization - A Unified Framework for Sequential Decisions
- Classical And Modern Optimization
- Algorithms - Design Techniques and Analysis
- Scientific Writing 3.0 - A Reader and Writer's Guide
- Robust and Adaptive Optimization
- Deep Learning on Graphs
- Optimization for Data Analysis
- Computer Architecture for Scientists - Principles and Performance
- Mining of Massive Datasets
- Foundations of Data Science
- A First Course in Random Matrix Theory - For physicists, engineers and data scientists
- The Principles of Deep Learning Theory - An Effective Theory Approach to Understanding Neural Networks
- Machine Learning for Engineers
- Gradient Boosting - Exploitez les arbres de décision pour le Machine Learning (XGBoost, CatBoost, LightGBM)
- Cybersécurité et PowerShell - De l'attaque à la défense du système d'information
- Photoshop, Illustrator et InDesign 2021 - Les fondamentaux
- Sécurité informatique - Ethical Hacking : Apprendre l'attaque pour mieux se défendre
- The Staff Engineer's Path - A Guide for Individual Contributors Navigating Growth and Change
- Natural Language Processing with Transformers - Building Language Applications with Hugging Face
- Practical Simulations for Machine Learning - Using Synthetic Data for AI
- Text Analytics - An Introduction to the Science and Applications of Unstructured Information Analysis
- Large Outdoor Fire Dynamics
- Optimization Techniques and their Applications to Mine Systems
- Sparse Polynomial Optimization - Theory and Practice
- 15 énigmes ludiques pour se perfectionner en programmation Python
- 20 énigmes ludiques pour se perfectionner en cryptographie
- Applied Graph Theory - An Introduction With Graph Optimization And Algebraic Graph Theory
- Telling Stories with Data - With Applications in R
- Natural Language Processing in the Real World - Text Processing, Analytics, and Classification
- Natural Language Processing in the Real World - Text Processing, Analytics, and Classification
Les nouveautés d'Adobe Photoshop CS5
Comprendre et utiliser les nouvelles fonctions !
Résumé de l'éditeur
Des capacités 3D élargies, de nouveaux outils de création et une adaptation flexible à l'environnement de travail, voici quelques exemples des améliorations apportées à la nouvelle version d'Adobe Photoshop pour réaliser un travail de l'image adapté à un flux de travail de création et d'édition professionnelles.
Édition : video2brain
ISBN10 : 0123456789
Bridge CS5
- Nouvelles fonctionnalités de Bridge CS5
- Renommage des fichiers
- Panneau d'exportation
- Barre de chemin pour la navigation
- Sortie vers un fichier
Camera Raw 6
- Réduction du bruit
- Effet de grain d'image
- Netteté ou piqué d'image
- Vignettage
Photoshop CS5
-
Interface utilisateur
- Nouveautés des espaces de travail
- Raccourcis et astuces productives
- Améliorations utiles au quotidien
- Amélioration de la gestion de l'impression
- Copier-coller
-
Mini Bridge
- Mini Bridge dans un panneau de Photoshop
- Favoris de Bridge dans Mini Bridge
-
Les outils
- Redressement d'image
- Recadrer ses images
- Outil Netteté
- Tampon et Correcteur
- Correcteur de contenu manquant
- Pinceau mélangeur
- Pinceaux réalistes
- Sélecteur de couleur flottant
-
Correction des pixels des images
- Tons foncés/Tons clairs ou réglage Virage HDR ?
- Fusion HDR devient Fusion HDR pro
-
Correction géométrique des images
- Correction automatique dans Photoshop CS5
- Correction manuelle des objectifs
- Correction de l'objectif sur tout un lot d'images
-
Retouche et réparation des images
- Remplir avec analyse de contenu manquant
- Remplir avec le contenu pris en compte
- Déformation comme une Marionnette
-
Sélection d'images
- Amélioration de la sélection
- Rayon d'analyse et décontamination couleur
-
Autres nouveautés
- L'option Lancer de rayon finalisé
- La fonction Repoussé
- Animations .GIF
- Travail avec les calques
- Configurateur de palettes
- CS Review pour Photoshop CS5
Votre formateur à domicile. C'est vraiment l'impression que j'ai eue en regardant cette formation. Elle est détaillée, passe bien en revue les nouveautés de Photoshop CS5 : une mise à niveau vers cette nouvelle version, à peu près comme une formation en vrai. L'avantage ? Vous avez directement la liste des parties disponibles, vous pouvez sans problème aller directement à la partie qui vous intéresse. Elles ne sont pas prévues pour être visualisées les unes à la suite des autres : si vous n'utilisez jamais Camera Raw, il vous est inutile de regarder cette partie. Cependant, je ne vous le conseille pas : vous découvrirez ici des fonctionnalités très facilement accessibles (toujours disponibles sous Photoshop mais dans une interface plus lourde). Cela pose quand même un problème : quand on regarde toute la formation d'un bout à l'autre, on a l'impression que le formateur répète, voire bégaye.
La formation est divisée en trois chapitres, chaque chapitre étant subdivisé en une multitude de parties, généralement assez courtes (entre deux et trois minutes), parfois plus longues (jusqu'à une dizaine de minutes) soit plus globales, où l'on vous montre les principales nouveautés dans telle partie, soit plus précises, elles entrent alors dans le détail des nouveautés, tout ce qu'il est possible de dire sur une nouveauté l'est. Tout est bien expliqué, bien détaillé, rien à redire, la compréhension vient toute seule, tout est fait pour qu'elle ne tarde pas.
S'il y a des lacunes techniques dans la présentation (le volume sonore des vidéos n'est pas toujours égalisé) à certains niveaux, d'autres points les compensent : notamment la possibilité de mettre des signets pour revenir à un endroit que l'on n'a pas bien compris, plus intéressant pour son utilisation personnelle, que l'on aimerait montrer à un quidam, etc.
La formation n'est pas prévue pour débuter avec Photoshop, loin de là : elle s'adresse à ceux qui connaissent déjà Photoshop dans une version antérieure et ont envie d'exploiter au mieux cette nouveauté, voir ce qui est maintenant disponible et si elle mérite un achat ou tout simplement à ceux qui veulent devenir de plus en plus efficaces avec la nouvelle mouture du célèbre logiciel. Il n'est pas non plus nécessaire d'avoir une expérience millénaire dans le logiciel : simplement savoir l'utiliser correctement est suffisant.
On pourrait alors croire que des fonctionnalités plus avancées sont évincées de la formation : tel n'a pas été le but. Ici, toutes les nouveautés qui peuvent faire gagner du temps sont présentées, même si l'utilisateur moyen de Photoshop n'en connaît pas toutes les subtilités (j'ai particulièrement été étonné de voir que l'option d'expression régulière dans le renommage de Bridge a été citée, de même que grep, alors qu'en général elles sont réservées à une certaine élite qui les manie tant bien que mal).
Au final, il s'agit là d'une formation très intéressante, vous ne pourrez qu'y apprendre à mieux utiliser la dernière version en date de Photoshop. Grâce à elle, vous utiliserez le logiciel encore plus efficacement, sans passer du temps inutilement à essayer par des moyens détournés ce qui est possible directement. Au final, vous maîtriserez mieux l'outil mais surtout plus vite.
Vous avez vu cette formation ? Qu'en pensez-vous ? Commentez
Adobe Photoshop CS5 : les fondamentaux
Créez des images époustouflantes avec Photoshop !
Résumé de l'éditeur
Dans cette formation intégrale sur la dernière version d'Adobe Photoshop, explorez en compagnie d'Yves Chatain les bases fondamentales de Photoshop CS5. Au programme de cette formation : interface et panneaux, palette d'outils interactive, masques, effets, calques, 3D, retouches d'images et bien plus encore. Découvrez également un bon nombre de trucs et astuces à travers des ateliers pratiques qui feront de vous un pro de Photoshop CS5. Bien sûr, toutes les nouveautés de cette nouvelle version seront également abordées.
Édition : video2brain
ISBN10 : 3902550570
ISBN13 : 9783902550576
Introduction
- En préambule à la formation, parlons couleur
- Comprendre la notion de sélection
- Notion de plans et de calques
- Les masques
-
L'interface utilisateur
- Espaces de travail
- Les panneaux de Photoshop
- Les préférences
- Accès temporaires et raccourcis clavier
-
Dix exercices pour une entrée en matière rapide
- Renommer une sélection d'images dans Bridge
- Convertir une photo en noir et blanc
- Filtres artistiques
- Petites retouches d'image
- Créer un pêle-mêle
- Maquiller ou colorer un portrait
- Corrections automatiques
- Créer une image panoramique
- Recadrer et redresser une image
- Planche contact ou diaporama avec Bridge
-
Concepts généraux d'utilisation
- Astuce de modification et sélection des valeurs
- Les informations visuelles dans Photoshop
- Outils, boîtes de dialogue et commandes
- Principe des poignées
- Commandes clavier et menus
Travailler avec des fichiers image
-
Bridge et Camera Raw
- Vue d'ensemble de Bridge
- Étiqueter une image
- Sélection de l'image
- Mini Bridge, Bridge partout, toujours prêt à se rendre utile
- Traitement de masse et recadrage avec Camera Raw
-
Zoom, aperçu et navigation dans une image
- Introduction à la manipulation de l'image à l'écran
- Autres manières de zoomer
-
Plusieurs fichiers et fenêtres de document
- Ouvrir plusieurs fichiers et les disposer automatiquement à l'écran
- Deux fenêtres pour une même image
-
Taille et résolution d'une image
- Résolution d'image
- Modifier la taille de l'image
- Trois méthodes de changements de taille de l'image
- Agrandir la zone de travail
- Enregistrement et formats de fichier
Travailler avec des fichiers image
- Manipulation des outils
- Aperçu général du panneau Outils
- Outils : astuces et raccourcis
- Déplacement et sélection de contenu
- Sélection rectangulaire et elliptique
- Lasso, lasso polygonal et lasso magnétique
- Sélection rapide et baguette magique
- Recadrage et tranche
- Pipette, règle, annotation, comptage
- Correcteur de tons directs, pièce, oeil rouge
- Pinceau, crayon, remplacement de couleur
- Tampon de duplication, tampon de motif
- Pinceau Forme d'historique, forme d'historique artistique
- Gomme, gomme d'arrière-plan, gomme magique
- Dégradé et pot de peinture
- Goutte d'eau, netteté, doigt
- Densité -, densité +, éponge
- Dessin vectoriel
- Textes horizontal et vertical
- Sélection de tracé, sélection directe
- Rectangle, rectangle arrondi, ellipse, polygone, etc.
- Objet 3D
- Caméra 3D
- Outil main
- Outil zoom
- Couleur de premier plan et d'arrière-plan
- Mode masque
Exercices avec les outils
- Supprimer un bateau
- Redresser une image
- Une nuée d'étoiles à Shanghai
- Regrouper des images en pèle-mêle
- Tampon copie en action !
- Les outils de retouche d'images en action !
- Construire sa propre boîte à outils
La sélection
- Quel est l'intérêt de la sélection ?
- Combiner des sélections
- Outils et menus de sélection, le choix est vaste
- Modifier une sélection
- Sélectionner par plage de couleurs
- Combinaisons de sélections avec le mode Masque
- Récupérer et sauvegarder des sélections
- Affiner les contours des sélections
- Décontaminer les couleurs parasites
-
Quatre exercices pratiques en guise d'exemple
- Anneaux olympiques
- Imbrication d'images
- Ajuster la couleur des contours
- Protéger des sélections
Les calques
- Introduction et fonctions de base
- Aperçu global de la manipulation des calques
- Une attention particulière avec les calques
- Fonctions supplémentaires des calques
- Types de calques particuliers
- Création facile de calques à partir d'une sélection
- Effets et styles de calque
- Opacités et modes de fusion des calques
-
Trois exercices pratiques en guise d'exemple
- Retoucher simultanément plusieurs calques
- Empiler des pièces de monnaie !
- Las Vegas !
Les formes géométriques
- Mise à l'échelle, rotation et miroir
- Transformer la perspective
- Adapter une grande image dans une petite image
- Mise à l'échelle adaptée au contenu
- Mise à l'échelle non destructive avec les objets dynamiques
- Déformation de la marionnette
Les masques
- Les types de masque
- Les masques avec la palette de calques
- Le panneau Masques
- Détourer des personnes avec un masque de fusion
- Affiner les contours de sélection
- Améliorer les contours de sélection de cheveux
- Masque d'écrêtage
- Corriger avec les calques
- Raccourcis, astuces et conseils
- Créer un portrait composite avec un objet dynamique
Le texte
- Le texte dans Photoshop
- Les déformations du texte
- Ce qui est possible et ce qui ne l'est pas
- Mettre du texte dans une forme
- Le portefeuille d'Eli
- Le texte suit un tracé
- Intégration du texte en fusion dans l'image
Effets de calque, styles et filtres
- Créer et utiliser les styles
- Texte en lueur dans un paysage nocturne
- Du texte transparent avec effet de relief
- Filtres
- Filtres dynamiques
- Filtre de déformation
- Filtres de rendu
- Perspective avec le filtre Point de fuite
- Une peau affinée avec le filtre Atténuation
- Modifier la physionomie d'un portrait avec le filtre Fluidité
- Correction des aberrations d'objectif
Corrections et retouches d'image
- Équilibrer les couleurs d'une image
- Corriger une image avec les courbes
- Les masques de fusion
- Correction de photos anciennes
- Corriger avec le réglage Niveaux
- Corriger avec les courbes
- Tons foncés / Tons clairs
- Virage HDR
- Convertir en noir et blanc
- Régler une profondeur de champ impossible
Vous rêviez de prendre des cours sur Photoshop ? Les horaires ne vous convenaient pas ? video2brain vous a trouvé LA solution : les formations vidéo. À un tel point que certains profs utilisent leurs vidéos pour donner cours.
Au niveau du contenu, il respecte bien le titre : tout ce dont vous avez besoin pour commencer à travailler efficacement et sérieusement avec Photoshop est abordé, quelle que soit votre utilisation au final. Cependant, le formateur venant du monde de la photographie, il oriente sa formation en ce sens - tout en restant tout aussi bien adaptée à toutes les utilisations du logiciel. Vous apprendrez ainsi à vous servir de l'interface, à la personnaliser, à l'adapter à vos besoins - on parle bien ici de l'interface de Photoshop CS5, ce n'est pas une ancienne formation pour une version très antérieure du logiciel qui a été recyclée, c'est entièrement adapté aux dernières améliorations apportées par Adobe.
N'oublions pas un point important : les exercices. Évidemment, vous n'avez pas l'énoncé puis un quart d'heure pour résoudre le problème posé ; rien ne vous empêche de regarder le début de ces vidéos, voir ce à quoi le formateur veut parvenir et le faire par vous-mêmes. Vous en apprendrez ainsi beaucoup. Néanmoins, ces exercices sont prévus pour être regardés, visionnés, décortiqués puis refaits sur d'autres images. Ils ne sont pas vides de contenu didactique, ils font autant partie de la formation que les vidéos plus « théoriques ». Certains aiment, d'autres détestent.
Une question que beaucoup se poseront : cette formation est-elle bien prévue pour des débutants ? La réponse est oui. Enfin, si un débutant sait comment installer et lancer un logiciel, se servir d'une souris et d'un clavier, possède un minimum d'esprit artistique, alors il n'aura pas de problème pour suivre la formation. Il ne finira pas par maîtriser Photoshop, ce n'est pas l'objectif. Il parviendra à se servir efficacement des bases de Photoshop. Même des parties plus avancées, comme les courbes. Elles sont extrêmement dures à maîtriser et pourtant extrêmement pratiques. C'est pour ça que pas moins de deux vidéos y sont consacrées. Dix minutes pour comprendre cette fonctionnalité de Photoshop, ce n'est pas trop peu.
Vous connaissez déjà Photoshop ? Cette formation risque quand même de vous être utile. Vous ne connaissez peut-être pas toutes les bases de Photoshop, surtout si vous avez appris en autodidacte.
Si vous êtes professionnel et utilisez déjà Photoshop au quotidien, passez votre chemin, vous n'apprendrez rien de neuf (peut-être serez-vous remis sur le droit chemin de l'utilisation
de la version CS5).
Vous ne connaissez rien à Photoshop ni à la retouche en général ? Vous êtes très exactement au bon endroit ! Tout vous sera expliqué, trop peut-être.
Vous venez d'un autre logiciel ? Vous connaissez donc déjà les bases, vous sauterez l'introduction et quelques chapitres de base, les interfaces de ces logiciels n'étant pas sans aucune ressemblance.
Tout le reste vous sera utile, la puissance des outils de Photoshop étant souvent sans égale.
Vous avez vu cette formation ? Qu'en pensez-vous ? Commentez
Photoshop CS5: The Missing Manual
The book that should have been in the box
Résumé de l'éditeur
You'd be hard-pressed to find a published image that hasn't spent some quality time in Adobe Photoshop. With new features such as Content-Aware Fill and Puppet Warp, Photoshop CS5 is more amazing -- and perhaps more bewildering -- than ever. That's where this full-color Missing Manual comes in. It covers Photoshop from a practical standpoint, with tips, tricks, and practical advice you can use every day to edit photos and create beautiful documents.
Whether you're a beginner or an experienced pixel pusher ready to try advanced techniques, author and graphics pro Lesa Snider offers crystal-clear, jargon-free instructions to help you take advantage of these powerful tools -- not only how they work, but when you should use them. Describing the CS4 edition, bestselling Photoshop author Scott Kelby wrote, "Lesa did a great job on the book, and in my mind, it is the new Photoshop Bible."
- Learn your way around Photoshop's revamped workspace
- Get up to speed on essential features such as layers and channels
- Edit images by cropping, resizing, retouching, working with color, and more
- Create paintings and illustrations, work with text, and explore filters
- Prepare images for printing or the Web, and learn how to protect your images online
- Work smarter and faster by automating tasks and installing plug-ins
Written with the clarity, humor, and objective scrutiny, Photoshop CS5: The Missing Manual is the friendly, thorough resource you need.
Édition : O'Reilly
ISBN10 : 1449381685
ISBN13 : 978-1-449-38168-4
The Basics
-
Photoshop CS5 Guided Tour
- Meet the Application Frame
- Working with Panels
- The Power of Undo
- Tweaking Photoshop's Preferences
- The Preset Manager
-
Opening, Viewing, and Saving Files
- Creating a New Document
- Saving Files
- Opening an Existing Document
- Changing Your Image View
- Arranging Open Images
- Guides, Grids, and Rulers
-
Layers: The Key to Nondestructive Editing
- Layer Basics
- Managing Layers
- Layer Blending
- Layer Masks: Digital Masking Tape
- Using Smart Objects
- Layer Styles
-
Selections: Choosing What to Edit
- Selection Basics
- Selecting by Shape
- Selecting by Color
- Selecting Irregular Areas
- Modifying Selections
-
Controlling Color with Channels
- How Color Works
- The Channels Panel and You
- Meet the Color Channels
- The Mighty Alpha Channel
- Basic Channel Stunts
Editing Images
-
Cropping, Resizing, and Rotating
- Cropping Images
- Resizing Images
- The Content-Aware Scale Tool
- Rotating, Distorting, and Other Creative Madness
-
Combining Images
- Cut It Out
- Pasting into a Selection
- Fading Images Together
- Layer Blend Modes
- Zapping Backgrounds with Blending Sliders
- Auto-Aligning Layers and Photomerge
- Auto-Blending Layers
- Cloning Between Documents
- Combining Vectors and Rasters
- Mapping One Image onto Another
-
Draining, Changing, and Adding Color
- Draining Color
- Changing Color
- Adding Color
-
Correcting Color and Lighting
- Quick Fixer-Uppers
- Correcting Images in Camera Raw
- Using Levels
- Working with Curves
- Creating High Dynamic Range Images
- Making Colors Pop
- Rescuing the Unfixables
-
The Beauty Salon: Photoshopping People
- The Great Healers
- Zapping Shines and Shadows
- Whitening Teeth
- Super Slimmers
- Skin Softeners
- Show-Stopping Eyes
-
The Art of Sharpening
- What Is Sharpening?
- Basic Sharpening
- Advanced Sharpening Techniques
- Sharpening in Camera Raw
The Artistic Side of Photoshop
-
Painting in Photoshop
- Color Theory: The Basics
- Selecting a Color Scheme
- Choosing Individual Colors
- (Re)Introducing the Brush Tool
- Customizing Brushes
- Defining a New Brush
- Installing New Brushes
-
Drawing with the Vector Tools
- Photoshop's Drawing Modes
- Drawing Paths with the Pen Tool
- Saving Paths
- Drawing with the Shape Tools
- Editing Paths
- Making Selections and Masks with Paths
-
Creating Artistic Text
- Typography 101
- Creating and Editing Text
- Formatting Text
- Special Text Effects
- More Typographic Resources
-
The Wide World of Filters
- The Joy of Smart Filters
- A Filters Tour
Printing and the Web
-
Photoshop and Print
- The Challenge of WYSIWYG Printing
- Printer-Friendly Resizing and File Formats
- Printing on an Inkjet Printer
- Printing on a Commercial Offset Press
- Printing on a Digital Press
- Printing Several Images on a Page
- Recap: Stress-Free Printing Tips
-
Photoshop and the Web
- Creating Web- and Email-Friendly Images
- Animating a GIF
- Designing a Website Favicon
- Creating Web-Page Mockups and Image Maps
- Protecting Your Images Online
- Building Online Photo Galleries
Photoshop Power
-
Working Smarter with Actions
- The Actions Panel
- Using Actions
- Managing Actions
- Creating Droplets
- Sharing Actions
-
Beyond Photoshop: Plug-Ins
- Adding and Removing Plug-Ins
- Managing Plug-Ins
- Noise Reducers
- Making Selections and Masking
- Color Correction and Enhancement
- Miscellaneous Plug-Ins
Première impression en ouvrant ce livre : il va vraiment au fond des choses. L'auteure n'hésite pas à ponctuer son texte d'expressions comme « vous en apprendrez plus que vous ne l'auriez jamais voulu » - vraiment, c'est très exactement ce qu'elle fait ! Ainsi, le lecteur se trouve plongé dans les arcanes du logiciel, dans les palettes d'outils plus que pléthoriques - tous y passent, certains sont développés sur une section plus large que d'autres, étant par nature plus indispensables (comme les brosses), tandis que d'autres n'ont droit qu'à un encart, tel l'outil d'accentuation (un filtre d'accentuation associé aux masques donnant un résultat bien meilleur).
Avant d'aborder des notions plus pointues, quelques concepts sont prérequis ; quand certains vous laissent aller sur le Web faire une recherche sur le sujet, ce Missing Manual veut tout couvrir : vous apprendrez en profondeur toutes les bases nécessaires à la compréhension du fonctionnement de certains outils, filtres ou techniques. Cela n'étant évidemment pas sans but : sans ces connaissances, seul le flair pourrait guider l'utilisateur jusqu'au résultat désiré ; avec ce livre, vous ne serez plus livré aux aléas du « pifomètre », vous saurez quel outil utiliser à quel moment et pourquoi - très exactement l'objectif avoué du livre.
Le style, assez simple et sobre, ne vire pas dans le moindre excès, permettant à tout lecteur un peu aguerri de l'anglais de s'y plonger tête baissée : n'allez pas acheter un autre livre sous le prétexte qu'il est en français. Il y a très peu de chances qu'il soit meilleur que celui-ci, qu'il soit autant à la portée de tous que celui-ci.
Cependant, il ne faut pas croire que, ici, tout est rose. Il y a quand même quelques points plus noirs. Notamment, les trois appendices sont relégués en ligne. Peut-être pour sauver l'environnement, abaisser un peu le prix du livre... mais nettement moins lisible. Si tels étaient les objectifs, il aurait mieux valu tout laisser en ligne. Ensuite, l'absence de CD : quelques fichiers que l'auteure traite et maltraite dans l'ouvrage sont disponibles en ligne, pas de CD accompagnant. La dernière page statue qu'il s'agit là de cinq dollars économisés. Dernièrement, les renvois : chaque page recèle un bon nombre de renvois à d'autres sections du livre, pour plus de détails sur un sujet, pour renvoyer à ce qui a déjà été dit ; louable objectif s'il en est. Cependant, la fréquence de ces rappels n'est pas sans gêner la lecture ; un petit tour dans l'index, fort bien construit, ne nécessiterait pas beaucoup plus de temps et faciliterait la lecture. Sans oublier le lot de frustrations : page 133, voir une référence jusqu'à la page 388, qui ne viendra que bien plus tard dans une lecture séquentielle du livre. Cela n'est pas sans souligner une autre caractéristique de l'ouvrage : il est conçu à la fois pour être une référence rapide lors du travail quotidien et pour être un livre d'apprentissage de Photoshop, c'est en cela qu'il s'adresse autant aux débutants qu'aux utilisateurs plus avertis.
Remarquons aussi qu'il est organisé de telle sorte que tout utilisateur puisse l'utiliser : les photographes, notamment, auront une liste de chapitres
qui leur seront plus utiles que les autres, tandis que les webdesigners auront des parties qui leur sont plus dédiées qu'aux autres usagers de Photoshop.
Le tout enrobant quelques pépites de tutoriels étape par étape sur l'utilisation d'un outil, sur un effet, etc.
Pour les experts, des sections Power User Clinic sont incluses ; d'autres boîtes sur des sujets parents, voisins ou un peu plus éloignés mais toujours
pertinents sont aussi là pour vous guider, vous expliquer certains choix, certaines autres possibilités.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Programming Python
Résumé de l'éditeur
If you've mastered Python's fundamentals, you're ready to start using it to get real work done. Programming Python will show you how, with in-depth tutorials on the language's primary application domains: system administration, GUIs, and the Web. You'll also explore how Python is used in databases, networking, front-end scripting layers, text processing, and more. This book focuses on commonly used tools and libraries to give you a comprehensive understanding of Python's many roles in practical, real-world programming.
You'll learn language syntax and programming techniques in a clear and concise manner, with lots of examples that illustrate both correct usage and common idioms. Completely updated for version 3.x, Programming Python also delves into the language as a software development tool, with many code examples scaled specifically for that purpose.
- Quick Python tour: Build a simple demo that includes data representation, object-oriented programming, object persistence, GUIs, and website basics
- System programming: Explore system interface tools and techniques for command-line scripting, processing files and folders, running programs in parallel, and more
- GUI programming: Learn to use Python's tkinter widget library
- Internet programming: Access client-side network protocols and email tools, use CGI scripts, and learn website implementation techniques
- More ways to apply Python: Implement data structures, parse text-based information, interface with databases, and extend and embed Python
Édition : O'Reilly
ISBN10 : 0596158106
ISBN13 : 9780596158101
The Beginning
-
Chapter 1: A Sneak Preview
- “Programming Python: The Short Story”
- The Task
- Step 1: Representing Records
- Step 2: Storing Records Persistently
- Step 3: Stepping Up to OOP
- Step 4: Adding Console Interaction
- Step 5: Adding a GUI
- Step 6: Adding a Web Interface
- The End of the Demo
System Programming
-
Chapter 2: System Tools
- “The os.path to Knowledge”
- System Scripting Overview
- Introducing the sys Module
- Introducing the os Module
-
Chapter 3: Script Execution Context
- “I'd Like to Have an Argument, Please”
- Current Working Directory
- Command-Line Arguments
- Shell Environment Variables
- Standard Streams
-
Chapter 4: File and Directory Tools
- “Erase Your Hard Drive in Five Easy Steps!”
- File Tools
- Directory Tools
-
Chapter 5: Parallel System Tools
- “Telling the Monkeys What to Do”
- Forking Processes
- Threads
- Program Exits
- Interprocess Communication
- The multiprocessing Module
- Other Ways to Start Programs
- A Portable Program-Launch Framework
- Other System Tools Coverage
-
Chapter 6: Complete System Programs
- “The Greps of Wrath”
- A Quick Game of “Find the Biggest Python File”
- Splitting and Joining Files
- Generating Redirection Web Pages
- A Regression Test Script
- Copying Directory Trees
- Comparing Directory Trees
- Searching Directory Trees
- Visitor: Walking Directories “++”
- Playing Media Files
- Automated Program Launchers (External)
GUI Programming
-
Chapter 7: Graphical User Interfaces
- “Here's Looking at You, Kid”
- Python GUI Development Options
- tkinter Overview
- Climbing the GUI Learning Curve
- tkinter Coding Alternatives
- Adding Buttons and Callbacks
- Adding User-Defined Callback Handlers
- Adding Multiple Widgets
- Customizing Widgets with Classes
- Reusable GUI Components with Classes
- The End of the Tutorial
- Python/tkinter for Tcl/Tk Converts
-
Chapter 8: A tkinter Tour, Part 1
- “Widgets and Gadgets and GUIs, Oh My!”
- Configuring Widget Appearance
- Top-Level Windows
- Dialogs
- Binding Events
- Message and Entry
- Checkbutton, Radiobutton, and Scale
- Running GUI Code Three Ways
- Images
- Viewing and Processing Images with PIL
-
Chapter 9: A tkinter Tour, Part 2
- “On Today's Menu: Spam, Spam, and Spam”
- Menus
- Listboxes and Scrollbars
- Text
- Canvas
- Grids
- Time Tools, Threads, and Animation
- The End of the Tour
-
Chapter 10: GUI Coding Techniques
- “Building a Better Mousetrap”
- GuiMixin: Common Tool Mixin Classes
- GuiMaker: Automating Menus and Toolbars
- ShellGui: GUIs for Command-Line Tools
- GuiStreams: Redirecting Streams to Widgets
- Reloading Callback Handlers Dynamically
- Wrapping Up Top-Level Window Interfaces
- GUIs, Threads, and Queues
- More Ways to Add GUIs to Non-GUI Code
- The PyDemos and PyGadgets Launchers
-
Chapter 11: Complete GUI Programs
- “Python, Open Source, and Camaros”
- PyEdit: A Text Editor Program/Object
- PyPhoto: An Image Viewer and Resizer
- PyView: An Image and Notes Slideshow
- PyDraw: Painting and Moving Graphics
- PyClock: An Analog/Digital Clock Widget
- PyToe: A Tic-Tac-Toe Game Widget
- Where to Go from Here
Internet Programming
-
Chapter 12: Network Scripting
- “Tune In, Log On, and Drop Out”
- Python Internet Development Options
- Plumbing the Internet
- Socket Programming
- Handling Multiple Clients
- Making Sockets Look Like Files and Streams
- A Simple Python File Server
-
Chapter 13: Client-Side Scripting
- FTP: Transferring Files over the Net
- Transferring Files with ftplib
- Transferring Directories with ftplib
- Transferring Directory Trees with ftplib
- Processing Internet Email
- POP: Fetching Email
- SMTP: Sending Email
- email: Parsing and Composing Mail Content
- A Console-Based Email Client
- The mailtools Utility Package
- NNTP: Accessing Newsgroups
- HTTP: Accessing Websites
- The urllib Package Revisited
- Other Client-Side Scripting Options
-
Chapter 14: The PyMailGUI Client
- “Use the Source, Luke”
- Major PyMailGUI Changes
- A PyMailGUI Demo
- PyMailGUI Implementation
- Ideas for Improvement
-
Chapter 15: Server-Side Scripting
- “Oh, What a Tangled Web We Weave”
- What's a Server-Side CGI Script?
- Running Server-Side Examples
- Climbing the CGI Learning Curve
- Saving State Information in CGI Scripts
- The Hello World Selector
- Refactoring Code for Maintainability
- More on HTML and URL Escapes
- Transferring Files to Clients and Servers
-
Chapter 16: The PyMailCGI Server
- “Things to Do When Visiting Chicago”
- The PyMailCGI Website
- The Root Page
- Sending Mail by SMTP
- Reading POP Email
- Processing Fetched Mail
- Utility Modules
- Web Scripting Trade-Offs
Tools and Techniques
-
Chapter 17: Databases and Persistence
- “Give Me an Order of Persistence, but Hold the Pickles”
- Persistence Options in Python
- DBM Files
- Pickled Objects
- Shelve Files
- The ZODB Object-Oriented Database
- SQL Database Interfaces
- ORMs: Object Relational Mappers
- PyForm: A Persistent Object Viewer (External)
-
Chapter 18: Data Structures
- “Roses Are Red, Violets Are Blue; Lists Are Mutable, and So Is Set Foo”
- Implementing Stacks
- Implementing Sets
- Subclassing Built-in Types
- Binary Search Trees
- Graph Searching
- Permuting Sequences
- Reversing and Sorting Sequences
- PyTree: A Generic Tree Object Viewer
-
Chapter 19: Text and Language
- “See Jack Hack. Hack, Jack, Hack”
- Strategies for Processing Text in Python
- String Method Utilities
- Regular Expression Pattern Matching
- XML and HTML Parsing
- Advanced Language Tools
- Custom Language Parsers
- PyCalc: A Calculator Program/Object
-
Chapter 20: Python/C Integration
- “I Am Lost at C”
- Extending Python in C: Overview
- A Simple C Extension Module
- The SWIG Integration Code Generator
- Wrapping C Environment Calls
- Wrapping C++ Classes with SWIG
- Other Extending Tools
- Embedding Python in C: Overview
- Basic Embedding Techniques
- Registering Callback Handler Objects
- Using Python Classes in C
- Other Integration Topics
The End
-
Chapter 21: Conclusion: Python and the Development Cycle
- “Something's Wrong with the Way We Program Computers”
- The “Gilligan Factor”
- Doing the Right Thing
- Enter Python
- But What About That Bottleneck?
- On Sinking the Titanic
- So What's “Python: The Sequel”?
- In the Final Analysis…
Certains disent de ce livre qu'il va leur donner les bases de Python 3 : sur la quatrième de couverture, c'est écrit noir sur blanc, le lecteur est censé avoir une expérience en programmation. Les premiers chapitres ne changent pas le ton, la syntaxe ne sera pas expliquée. En fait, il n'est pas nécessaire de déjà maîtriser la syntaxe de Python pour comprendre pleinement ce livre. Une expérience de programmation suffit ; les exemples sont donnés dans le bon ordre, c'est-à-dire par niveau croissant de difficulté ; les meilleures pratiques n'ont pas droit à tous les détails quand elles se limitent à la syntaxe (alors que l'auteur, même s'il a dit qu'il ne le ferait pas, donne le squelette de ce qui est nécessaire à leur compréhension). Il n'est absolument pas nécessaire d'avoir un tel bagage en Python ; cela ne peut qu'aider, bien évidemment, le lecteur pourra alors se plonger plus directement dans l'étude des exemples.
Tout au long du livre, l'auteur a parsemé des exemples - réalistes, complets, jusque quelques milliers de lignes pour PyMailGUI -, pas seulement quelques lignes éclaircissant un concept. On trouve des exemples pour faire comprendre tout ce qui est à comprendre du concept étudié, avec sur le côté d'autres exemples, plus longs, commentés en suffisance, entourés de quelques paragraphes d'explication, etc. On peut dire que l'auteur construit ses exemples étape par étape, il est impossible de s'y perdre. Même sur l'épineux sujet des threads, bête noire de tout développeur, il explique en détail ce qui doit l'être, les subtilités techniques n'ont plus de secret. Le tout étant utilisé dans des applications réelles. On trouve même des chapitres dédiés à l'étude d'un exemple, utilisant bien évidemment le code déjà écrit - la réutilisation du code est très importante.
Presque tout sujet principal sur Python est couvert : la programmation système (Python tend à remplacer les scripts Bash et Perl) ; les GUI (Python se montre aussi puissant que le C++ à ce niveau) ; Internet (Python est en plein essor avec des frameworks Web comme Django ou Zope, même si aucun des deux n'est couvert, aucun ne supporte Python 3 actuellement). Le principal problème se situe dans tout ce qui ne peut pas trouver sa place dans ce livre : ZODB, Zope, Django, MySQL, etc. ne sont pas encore portés sur Python 3 ; le livre ne couvrant que cette version de Python, ces sujets doivent être écartés de cette quatrième édition. Notons quand même que ZODB est montré avec Python 2 pour exposer l'utilisation des bases de données orientées objet.
Même si le livre semble impressionnant de par sa taille (1600 pages), il est presque impossible de couvrir autant de sujets en aussi peu de pages. Même si certains sujets auraient pu être couverts, le livre est plus que complet. Certains chapitres aident à comprendre les bases de choses qui ne sont pas couvertes volontairement (les scripts CGI sont expliqués, alors que plus personne ne songerait à les utiliser pour des projets Web modernes, même si les frameworks actuels sont basés sur ces principes).
Avez-vous lu ce livre ? Qu'en pensez-vous ? 1 commentaire
Some thought this book was to give them the basics about Python 3.x; turn the book, it is written: the readers are supposed to have a "previous programming experience." The first chapters are no different, the syntax will not be explained. Actually, you do not need to know Python's syntax to fully understand the book. Programming experience is enough, examples are given in the right order, the best practices are explained not in full details when related to the core language (however, even if he said he will not, the author spends some lines outlining what is really needed). No, it is not required to have completely read a introductive text about Python; of course, it helps, the reader can get more quickly into the full depth of the examples.
Throughout the book you can find examples - realistic, complete (up to thousands of lines for PyMailGUI) -, not a few lines explaining only the concept;
you will find there examples for you to understand everything about the studied concept, along with more detailed examples, with comments, concept explanation
paragraphs, and the like. One can say he builds his examples step by step, no one can get lost - even when he starts with threads, a subject many developers
just do not like, he manages to make everyone completely aware of all those technical subtleties about beginning with threads. Everything here is also
shown in use in real world applications.
Examples also mean that the whole book is not all about theory, there are some examples chapters, chapters totally dedicated to a single example, using
many snippets written before (code reutilisation is important).
Almost every main subject in Python is covered: system programming, as Python is a replacement for Perl, Bash scripts, etc.; GUIs, as Python can do as much as C++ can in the GUIs' world; Internet, as Python is growing fast with frameworks like Django or Zope (even though any of these is covered: none currently supports Python 3). The main problem is that important things cannot find a place in that book: ZODB, Zope, Django, MySQL, etc. are not yet ported to Python 3; the book only covers Python 3 and thus cannot say much about these. Note that ZODB is shown, in its Python 2 flavour, to show the basics about OODB; wilingly, no Web framework is getting more than a paragraph or two, these technologies are said to change often.
Though this is an impressive book (about 1,600 pages), it is almost impossible to cover so many subjects in so few pages. Even if it lacks a few topics, this book is more than far complete. Some chapters help you understand the basics of things that cannot be covered (CGI scripting is shown, it is not used anymore for new Web projects, but current Web frameworks are based on these principles).
La programmation orientée objet - cours et exercices en UML 2 avec Java 6, C#4, C++, Python, PHP 5 et LinQ
Résumé de l'éditeur
L'approche objet est enseignée dans les universités dès les premiers niveaux des cursus informatiques, car sa compréhension est le prérequis indispensable à toute pratique économe, fiable et élégante de la plupart des techniques informatiques qui en sont dérivées, depuis Java et Python, jusqu'à UML 2, en passant par .Net et C++.
L'objet par la pratique avec Python, Java, C# et C++ et PHP 5... en UML 2
Cette cinquième édition de l'ouvrage L'orienté objet décortique l'ensemble des mécanismes de la programmation objet (classes et objets, interactions entre classes, envois de messages, encapsulation, héritage, polymorphisme, interface, multithreading, sauvegarde des objets, programmation distribuée, modélisation...) en les illustrant d'exemples empruntant aux technologies les plus populaires : Java et C#, C++, Python, PHP 5, UML 2, LinQ mais aussi les services web, Cobra, les bases de données objet, différentes manières de résoudre la mise en correspondance relationnel/objet dont le langage innovant de requête objet LinQ et enfin les design patterns. Chaque chapitre est introduit par un dialogue vivant, à la manière du maître et de l'élève et se complète de nombreux exercices en UML 2, Java, Python, PHP 5, C# et C++.
À qui s'adresse ce livre ?
Ce livre sera lu avec profit par tous les étudiants de disciplines informatiques liées à l'approche objet (programmation orientée objet, modélisation UML, Java, Python, PHP 5, C#/C++...) et pourra être utilisé par leurs enseignants comme matériel de cours. Il est également destiné à tous les développeurs qui souhaitent approfondir leur compréhension des concepts objet sous-jacents au langage qu'ils utilisent.
Édition : Eyrolles
ISBN10 : 2212128061
ISBN13 : 9782212128062
Avant-propos
- L'orientation objet en deux mots
- Objectifs de l'ouvrage
- Plan de l'ouvrage
- À qui s'adresse ce livre ?
Principes de base : quel objet pour l'informatique ?
- Le trio <entité, attribut, valeur>
- Stockage des objets en mémoire
- L'objet dans sa version passive
- L'objet dans sa version active
- Introduction à la notion de classe
- Des objets en interaction
- Des objets soumis à une hiérarchie
- Polymorphisme
- Héritage bien reçu
- Exercices
Un objet sans classe… n'a pas de classe
- Constitution d'une classe d'objets
- La classe comme module fonctionnel
- La classe comme garante de son bon usage
- La classe comme module opérationnel
- Un premier petit programme complet dans les cinq langages
- La classe et la logistique de développement
- Exercices
Du faire savoir au savoir-faire… du procédural à l'OO
- Objectif objet : les aventures de l'OO
- Mise en pratique
- Analyse
- Conception
- Impacts de l'orientation objet
Ici Londres : les objets parlent aux objets
- Envois de messages
- Association de classes
- Dépendance de classes
- Réaction en chaîne de messages
- Exercices
Collaboration entre classes
- Pour en finir avec la lutte des classes
- La compilation Java : effet domino
- En C#, en Python, PHP 5 et en C++
- De l'association unidirectionnelle à l'association bidirectionnelle
- Autoassociation
- Package et namespace
- Exercices
Méthodes ou messages ?
- Passage d'arguments prédéfinis dans les messages
- Passage d'argument objet dans les messages
- Une méthode est-elle d'office un message ?
- La mondialisation des messages
- Exercices
L'encapsulation des attributs
- Accès aux attributs d'un objet
- Encapsulation : pour quoi faire ?
- Exercices
Les classes et leur jardin secret
- Encapsulation des méthodes
- Les niveaux intermédiaires d'encapsulation
- Afin d'éviter l'effet papillon
- Exercices
Vie et mort des objets
- Question de mémoire
- C++ : le programmeur est le seul maître à bord
- En Java, C#, Python et PHP 5 : la chasse au gaspi
- Exercices
UML 2
- Diagrammes UML 2
- Représentation graphique standardisée
- Du tableau noir à l'ordinateur
- Programmer par cycles courts en superposant les diagrammes
- Diagrammes de classe et diagrammes de séquence
- Diagramme de classe
- Les bienfaits d'UML
- Diagramme de séquence
- Exercices
Héritage
- Comment regrouper les classes dans des superclasses
- Héritage des attributs
- Héritage ou composition ?
- Économiser en rajoutant des classes ?
- Héritage des méthodes
- La recherche des méthodes dans la hiérarchie
- Encapsulation protected
- Héritage et constructeurs
- Héritage public en C++
- Le multihéritage
- Exercices
Redéfinition des méthodes
- La redéfinition des méthodes
- Beaucoup de verbiage mais peu d'actes véritables
- Un match de football polymorphique
- Exercices
Abstraite, cette classe est sans objet
- De Canaletto à Turner
- Des classes sans objet
- Du principe de l'abstraction à l'abstraction syntaxique
- Un petit supplément de polymorphisme
- Exercices
Clonage, comparaison et assignation d'objets
- Introduction à la classe Object
- Décortiquons la classe Object
- Test d'égalité de deux objets
- Le clonage d'objets
- Égalité et clonage d'objets en Python
- Égalité et clonage d'objets en PHP 5
- Égalité, clonage et affectation d'objets en C++
- En C#, un cocktail de Java et de C++
- Exercices
Interfaces
- Interfaces : favoriser la décomposition et la stabilité
- Java, C# et PHP 5 : interface via l'héritage
- Les trois raisons d'être des interfaces
- Les Interfaces dans UML 2
- En C++ : fichiersh et fichierscpp
- Interfaces : du local à Internet
- Exercices
Distribution gratuite d'objets : pour services rendus sur le réseau
- Objets distribués sur le réseau : pourquoi ?
- RMI (Remote Method Invocation)
- Corba (Common Object Request Broker Architecture)
- Rajoutons un peu de flexibilité à tout cela
- Les services Web surNet
- Exercices
Multithreading
- Informatique séquentielle
- Multithreading
- Implémentation en Java
- Implémentation en C#
- Implémentation en Python
- L'impact du multithreading sur les diagrammes de séquence UML
- Du multithreading aux applications distribuées
- Des threads équirépartis
- Synchroniser les threads
- Exercices
Programmation événementielle
- Des objets qui s'observent
- En Java
- En C# : les délégués
- En Python : tout reste à faire
- Un feu de signalisation plus réaliste
- Exercices
Persistance d'objets
- Sauvegarder l'état entre deux exécutions
- Simple sauvegarde sur fichier
- Sauvegarder les objets sans les dénaturer : la sérialisation
- Les bases de données relationnelles
- Réservation de places de spectacles
- Les bases de données relationnelles-objet
- Les bases de données orientées objet
- Linq
- Exercices
Et si on faisait un petit flipper ?
- Généralités sur le flipper et les GUI
- Retour au Flipper
Les graphes
- Le monde regorge de réseaux
- Tout d'abord : juste un ensemble d'objets
- Liste liée
- La généricité en C++
- La généricité en Java
- Passons aux graphes
- Exercices
Petites chimie et biologie OO amusantes
- Pourquoi de la chimie OO ?
- Les diagrammes de classe du réacteur chimique
- Quelques résultats du simulateur
- La simulation immunologique en OO ?
Design patterns
- Introduction aux design patterns
- Les patterns « truc et ficelle »
- Les patterns qui se jettent à l'OO
Pour un panorama complet du monde de l'orienté objet, ce livre est certainement à conseiller. L'auteur, par ailleurs professeur à l'ULB (université libre de Bruxelles) démontre son talent pédagogique, dès le début. De nombreuses allusions font d'ailleurs remarquer que ce livre est principalement prévu pour un public étudiant se familiarisant avec la programmation orientée objet, sans rien en connaître, mais ayant déjà connaissance d'un langage de programmation procédural (ou au moins les principes).
Dès le premier exemple, on se plonge dans un environnement Java, sans que cela n'ait été introduit, sans donner vraiment d'explication sur la syntaxe - cela n'est pas vraiment nécessaire, le code est suffisamment documenté pour que la compréhension ne tarde pas. Ensuite sont présentés les différents langages, en s'axant sur leurs particularités syntaxiques, sur les points qui choquent en comparaison au Java. Il n'y a que le minimum qui est présenté, il ne faut pas prendre ce livre pour ce qu'il n'est pas : il introduit à la programmation orientée objet, il n'a pas pour vocation d'apprendre un langage.
C'est d'ailleurs sur ces langages que se portent mes seuls griefs à l'encontre de ce livre : les langages sont parfois fortement détournés pour
suivre le discours de l'auteur. On montrera, par exemple, du code Python très peu pythonique, sans utilisation de décorateurs comme
@staticmethod ou la définition d'autres constructeurs quand des arguments mots-clés peuvent être utilisés. Du côté C++, on voit,
dans les premiers exemples, des directives #include pointées sur... des fichiers .cpp ! Il faut attendre
le quinzième chapitre sur les interfaces pour voir l'existence de fichiers .h, ce qui permet de s'assurer de très mauvaises pratiques
dans du code C++... Cela passe aussi pour une faiblesse du langage, qu'un utilisateur du C++ pourra faire passer pour une méconnaissance du langage.
Passons le fait que le C++/CLI devient du Visual C++ .Net, nom qui n'est attesté sur le Web presque exclusivement comme les nouvelles
versions de l'EDI de Microsoft pour le C++, partie de l'environnement plus complet Visual Studio, ainsi que le fait qu'il semble jusqu'au
chapitre sur l'héritage que la seule raison de traiter le C++ est de pouvoir en dire tout le mal qu'on peut. Sans oublier que la STL est entièrement
nonobstée et que l'on juge les complexités du C++ comme des écarts par rapport aux autres langages, alors qu'il en est l'aîné.
On remarque aussi que le PHP est exclusivement utilisé en contexte Web, comme s'il était incapable de faire autre chose (sans oublier
que le décorum HTML tout autour ne facilite pas la compréhension de l'exemple, en ajoutant un bon nombre de lignes parfaitement inutiles).
En conclusion de ce paragraphe, on dira que ce livre n'est absolument pas là pour apprendre un langage ou l'autre, ce n'est pas son but, il veut simplement
apprendre les bases de la programmation orientée objet, en déclinant les concepts aux différents langages, en montrant leurs différences.
Tous les concepts sont illustrés dans tous les langages, permettant ainsi de visualiser in situ les différences de pensée entre les concepteurs.
Ces exemples, d'ailleurs, évoluent au fur et à mesure de la progression de la compréhension du lecteur : les premiers exemples sont fort didactiques,
on finit dans les derniers chapitres à simuler les réactions chimiques ayant lieu dans un réacteur, on passe d'exemples simplistes à des exemples réalistes.
À un niveau plus général, on remarquera quelques fautes d'orthographe restées malgré les relectures, les schémas de mauvaise facture (réalisés probablement à l'aide d'un logiciel peu évolué tel que Paint), qui font vraiment tache à côté des schémas UML, ainsi que des captures d'écran sur des systèmes d'exploitation relativement préhistoriques (aux alentours de Windows Millenium).
Ce ne sont pas ces quelques défauts qui vont entacher le principal du livre. On appréciera notamment le large chapitre dédié à UML2, ainsi que les schémas UML utilisés bien avant leur formalisation pour aider à comprendre les principes. Des exercices terminent la grande majorité des chapitres, permettant au lecteur de vérifier qu'il a bien assimilé les concepts ; on regrettera de ne voir les solutions que sur le site de l'éditeur, pas dans une annexe au livre.
Il faut aussi remarquer que l'utilisation plus pratique de l'orienté objet est aussi couverte : ainsi, on parlera des méthodes pour la communication entre un client et un serveur à l'aide de RMI, de Corba et d'autres. Sera aussi discutée la sérialisation dans les divers langages, sans toutefois rentrer dans les détails, car ils deviennent plus spécifiques aux langages. On regrettera de ne pas voir ici la sérialisation selon boost pour le C++ ou la fonction serialize() de PHP : ces deux langages ne sont pas arriérés, ils permettent aussi la sérialisation, alors qu'aucune mention n'en est faite.
Des sujets plus pointus comme le multithreading sont aussi abordés : point noir de ce chapitre, C++ et PHP sont oubliés. Signaler qu'aucune méthode vraiment propre n'existe en PHP n'est pas un luxe, préciser l'existence d'une pléthore de possibilités en C++ est un minimum pour tout qui parle de multithreading et de C++ (il n'aurait pas été utile de développer le sujet, mais au moins d'indiquer dans quelle direction chercher si le besoin s'en fait sentir). Les autres langages jouissent d'une description des méthodes disponibles en standard pour obtenir une application multithreadée, en tenant compte de la problématique des accès concurrents.
En bref ? Un ouvrage plus qu'excellent, didactique, qui passe par tous les jalons, toutes les étapes, sans en oublier une, pour la programmation orientée objet. Que le lecteur soit débutant ou plus avancé, il trouvera dans ce livre de quoi apprendre ou se remettre à niveau. Par contre, prendre ce livre pour apprendre un langage n'est pas forcément la meilleure idée, ce n'est pas son objectif, les explications ne vont d'ailleurs pas en ce sens. Le style assez humoristique de l'auteur en fait un livre très facile à lire.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Mathematica Cookbook
Résumé de l'éditeur
Mathematica Cookbook helps you master the application's core principles by walking you through real-world problems. Ideal for browsing, this book includes recipes for working with numerics, data structures, algebraic equations, calculus, and statistics. You'll also venture into exotic territory with recipes for data visualization using 2D and 3D graphic tools, image processing, and music.
Although Mathematica 7 is a highly advanced computational platform, the recipes in this book make it accessible to everyone -- whether you're working on high school algebra, simple graphs, PhD-level computation, financial analysis, or advanced engineering models.
- Learn how to use Mathematica at a higher level with functional programming and pattern matching
- Delve into the rich library of functions for string and structured text manipulation
- Learn how to apply the tools to physics and engineering problems
- Draw on Mathematica's access to physics, chemistry, and biology data
- Get techniques for solving equations in computational finance
- Learn how to use Mathematica for sophisticated image processing
- Process music and audio as musical notes, analog waveforms, or digital sound samples
Édition : O'Reilly
ISBN10 : 0596520999
ISBN13 : 9780596520991
Numerics
- Introduction
- Controlling Precision and Accuracy
- Mixing Different Numerical Types
- Representing Numbers in Other Bases
- Extracting the Digits of a Number
- Working with Intervals
- Converting Between Numerical Types
- Displaying Numbers in Alternate Forms
Functional Programming
- Introduction
- Mapping Functions with More Than One Argument
- Holding Arbitrary Arguments
- Creating Functions That Automatically Map Over Lists
- Mapping Multiple Functions in a Single Pass
- Keeping Track of the Index of Each Item As You Map
- Mapping a Function over a Moving Sublist
- Using Prefix and Postfix Notation to Produce More Readable Code
- Defining Indexed Functions
- Understanding the Use of Fold As an Alternative to Recursion
- Incremental Construction of Lists
- Computing Through Repeated Function Application
- Building a Function Through Iteration
- Exploiting Function Composition and Inverse Functions
- Implementing Closures
- Currying in Mathematica
- Creating Functions with Default Values
- Creating Functions That Accept Options
Data Structures
- Introduction
- Ensuring the Most Efficient Representation of Numerical Lists
- Sorting Lists
- Determining Order Without Sorting
- Extracting the Diagonals of a Matrix
- Constructing Matrices of Specific Structure
- Constructing Permutation and Shift Matrices
- Manipulating Rows and Columns of Matrices
- Using Sparse Arrays to Conserve Memory
- Manipulating Deeply Nested Lists Using Functions with Level Specifications
- Implementing Bit Vectors and Using Format to Customize Their Presentation
- Implementing Trees and Traversals Using Lists
- Implementing Ordered Associative Lookup Using a Red-Black Tree
- Exploiting Mathematica's Built-In Associative Lookup
- Constructing Graphs Using the Combinatorica' Package
- Using Graph Algorithms to Extract Information from Graphs
Patterns and Rule-Based Programming
- Introduction
- Collecting Items That Match (or Don't Match) a Pattern
- Excluding Items That Match (or Don't Match) a Pattern
- Counting Items That Match a Pattern
- Replacing Parts of an Expression
- Finding the Longest (or Shortest) Match for a Pattern
- Implementing Algorithms in Terms of Rules
- Debugging Infinite Loops When Using ReplaceRepeated
- Preventing Evaluation Until Replace Is Complete
- Manipulating Patterns with Patterns
- Optimizing Rules
- Using Patterns As a Query Language
- Semantic Pattern Matching
- Unification Pattern Matching
String and Text Processing
- Introduction
- Comparing Strings
- Removing and Replacing Characters from Strings
- Extracting Characters and Substrings
- Duplicating a String
- Matching and Searching Text
- Tokenizing Text
- Working with Natural Language Dictionaries
- Importing XML
- Transforming XML Using Patterns and Rules
- Transforming XML Using Recursive Functions (à la XSLT)
- Writing Parsers and Grammars in Mathematica
Two-Dimensional Graphics and Plots
- Introduction
- Plotting Functions in Cartesian Coordinates
- Plotting in Polar Coordinates
- Creating Plots Parametrically
- Plotting Data
- Mixing Two or More Graphs into a Single Graph
- Displaying Multiple Graphs in a Grid
- Creating Plots with Legends
- Displaying 2D Geometric Shapes
- Annotating Graphics with Text
- Creating Custom Arrows
Three-Dimensional Plots and Graphics
- Introduction
- Plotting Functions of Two Variables in Cartesian Coordinates
- Plotting Functions in Spherical Coordinates
- Plotting Surfaces in Cylindrical Coordinates
- Plotting 3D Surfaces Parametrically
- Creating 3D Contour Plots
- Combining 2D Contours with 3D Plots
- Constraining Plots to Specified Regions
- Plotting Data in 3D
- Plotting 3D Regions Where a Predicate Is Satisfied
- Displaying 3D Geometrical Shapes
- Constructing Wireframe Models from Mesh
- Controlling Viewing Geometry
- Controlling Lighting and Surface Properties
- Transforming 3D Graphics
- Exploring Polyhedra
- Importing 3D Graphics from CAD and Other 3D Software
Image Processing
- Introduction
- Extracting Image Information
- Converting Images from RGB Color Space to HSV Color Space
- Enhancing Images Using Histogram Equalization
- Correcting Images Using Histogram Specification
- Sharpening Images Using Laplacian Transforms
- Sharpening and Smoothing with Fourier Transforms
- Detecting Edges in Images
- Image Recognition Using Eigenvectors (Eigenimages)
Audio and Music Processing
- Introduction
- Creating Musical Notes
- Creating a Scale or a Melody
- Adding Rhythm to a Melody
- Controlling the Volume
- Creating Chords
- Playing a Chord Progression
- Writing Music with Traditional Chord Notation
- Creating Percussion Grooves
- Creating More Complex Percussion Grooves
- Exporting MIDI files
- Playing Functions As Sound
- Adding Tremolo
- Adding Vibrato
- Applying an Envelope to a Signal
- Exploring Alternate Tunings
- Importing Digital Sound Files
- Analyzing Digital Sound Files
- Slicing a Sample
Algebra
- Introduction
- Solving Algebraic Equations
- Finding a Polynomial from a Given Root
- Transforming Expressions to Other Forms
- Generating Polynomials
- Decomposing Polynomials into Their Constituent Parts
- Dividing Polynomials by Other Polynomials
Calculus: Continuous and Discrete
- Introduction
- Computing Limits
- Working with Piecewise Functions
- Using Power Series Representations
- Differentiating Functions
- Integration
- Solving Differential Equations
- Solving Minima and Maxima Problems
- Solving Vector Calculus Problems
- Solving Problems Involving Sums and Products
- Solving Difference Equations
- Generating Functions and Sequence Recognition
Statistics and Data Analysis
- Introduction
- Computing Common Statistical Metrics of Numerical and Symbolic Data
- Generating Pseudorandom Numbers with a Given Distribution
- Working with Probability Distributions
- Demonstrating the Central Limit Theorem
- Computing Covariance and Correlation of Vectors and Matrices
- Measuring the Shape of Data
- Finding and Adjusting for Outliers
- Fitting Data Using a Linear Model
- Fitting Data Using a Nonlinear Model
- Creating Interpolation Functions from Data
- Testing for Statistically Significant Difference Between Groups Using ANOVA
- Hypothesis Testing with Categorical Data
- Grouping Data into Clusters
- Creating Common Statistical Plots
- Quasi-Random Number Generation
- Creating Stochastic Simulations
Science and Engineering
- Introduction
- Working with Element Data
- Working with Chemical Data
- Working with Particle Data
- Working with Genetic Data and Protein Data
- Modeling Predator-Prey Dynamics
- Solving Basic Rigid Bodies Problems
- Solving Problems in Kinematics
- Computing Normal Modes for Coupled Mass Problems
- Modeling a Vibrating String
- Modeling Electrical Circuits
- Modeling Truss Structures Using the Finite Element Method
Financial Engineering
- Introduction
- Leveraging Mathematica's Bundled Financial Data
- Importing Financial Data from Websites
- Present Value of Future Cash Flows
- Interest Rate Sensitivity of Bonds
- Constructing and Manipulating Yield Curves
- Black-Scholes for European Option Pricing
- Computing the Implied Volatility of Financial Derivatives
- Speeding Up NDSolve When Solving Black-Scholes and Other PDEs
- Developing an Explicit Finite Difference Method for the Black-Scholes Formula
- Compiling an Implementation of Explicit Trinomial for Fast Pricing of American Options
- Modeling the Value-at-Risk of a Portfolio Using Monte Carlo and Other Methods
- Visualizing Trees for Interest-Rate Sensitive Instruments
Interactivity
- Introduction
- Manipulating a Variable
- Manipulating a Symbolic Expression
- Manipulating a Plot
- Creating Expressions for Which Value Dynamically Updates
- Intercepting the Values of a Control Attached to a Dynamic Expression
- Controlling Updates of Dynamic Values
- Using DynamicModule As a Scoping Construct in Interactive Notebooks
- Using Scratch Variables with DynamicModule to Balance Speed Versus Space
- Making a Manipulate Self-Contained
- Remembering the Values Found Using Manipulate
- Improving Performance of Manipulate by Segregating Fast and Slow Operations
- Localizing a Function in a Manipulate
- Sharing DynamicModule Variables across Cell or Window Boundaries
- Creating Your Own Custom Controls
- Animating an Expression
- Creating Custom Interfaces
- Managing a Large Number of Controls in Limited Screen Real Estate
Parallel Mathematica
- Introduction
- Configuring Local Kernels
- Configuring Remote Services Kernels
- Sending a Command to Multiple Kernels for Parallel Evaluation
- Automatically Parallelizing Existing Serial Expressions
- Distributing Data Segments in Parallel and Combining the Results
- Implementing Data-Parallel Algorithms by Using ParallelMap
- Decomposing a Problem into Parallel Data Sets
- Choosing an Appropriate Distribution Method
- Running Different Algorithms in Parallel and Accepting the First to Complete
- Sharing Data Between Parallel Kernels
- Preventing Race Conditions When Multiple Kernels Access a Shared Resource
- Organizing Parallel Processing Operations Using a Pipeline Approach
- Processing a Massive Number of Files Using the Map-Reduce Technique
- Diagnosing Parallel Processing Performance
- Measuring the Overhead of Parallelization in Your Environment
Interfacing Mathematica
- Introduction
- Calling External Command Line Programs from Mathematica
- Launching Windows Programs from Mathematica
- Connecting the Frontend to a Remote Kernel
- Using Mathematica with C and C++
- Using Mathematica with Java
- Using Mathematica to Interact with Microsoft's .NET Framework
- Using the Mathematica Kernel from a .NET Application
- Querying a Database
- Updating a Database
- Introspection of Databases
Tricks of the Trade
- Introduction
- Cleaning Up During Incremental Development
- Modifying Built-in Functions and Constants
- Locating Undocumented Functions
- Packaging Your Mathematica Solutions into Libraries for Others to Use
- Compiling Functions to Improve Performance
- Automating and Standardizing the Appearance of Notebooks Using Stylesheets
- Transforming Notebooks into Other Forms
- Calling into the Mathematica Frontend
- Initializing and Cleaning Up Automatically
- Customizing Frontend User Interaction
Debugging and Testing
- Introduction
- Printing as the First Recourse to Debugging
- Debugging Functions Called Many Times
- Stack Tracing to Debug Recursive Functions
- Taming Trace to Extract Useful Debugging Information
- Creating a Poor Man's Mathematica Debugger
- Debugging Built-In Functions with Evaluation and Step Monitors
- Visual Debugging with Wolfram Workbench
- Writing Unit Tests to Help Ensure Correctness of Your Code
- Creating MUnit Tests Where Success Is Not Based on Equality Testing
- Organizing and Controlling MUnit Tests and Test Suites
- Integrating Wolfram Workbench's MUnit Package into the Frontend
Mathematica est un outil très puissant, l'auteur le montre à chaque nouvelle recette. Cependant, il faut arriver à l'utiliser, cela n'étant pas facilement possible sans aide externe. Ici, le lecteur est pris par la main, depuis une connaissance très basique requise pour commencer la lecture (avoir joué quelque peu avec Mathematica est bien suffisant), jusqu'à pouvoir résoudre de vrais problèmes à l'aide du logiciel, sans s'enfermer dans un domaine particulier : ce livre s'adresse à tous les publics d'utilisateurs de Mathematica, de l'étudiant au musicien, sans oublier scientifiques, ingénieurs, photographes, développeurs, financiers…
Le livre se base entièrement sur le principe de la résolution de problèmes, des « recettes ». Il n'y a pas de collection de code utile, plus de petits programmes réalisant une tâche spécifique (la dérivation symbolique d'une fonction ou un trémolo).
On ne perd pas de temps sur les bases de Mathematica, un chapitre les expédie rapidement, étant donné qu'il n'est pas nécessaire d'en connaître beaucoup plus. Suit un chapitre sur la programmation fonctionnelle, le paradigme de conception privilégié dans Mathematica. C'est l'un des chapitres les plus durs de tout l'ouvrage, surtout pour ceux qui ne sont pas habitués à une vision fonctionnelle de la programmation ; en tant que tel, il est absolument nécessaire d'avoir compris les principes de ce chapitre, l'auteur n'étant pas avare en exemples : son but est clairement que tout lecteur puisse en comprendre les subtilités. Pour ceux qui connaissent déjà l'un ou l'autre langage fonctionnel, l'auteur réalise quelques parallèles, afin de leur fournir une entrée en matière plus rapide. Les exemples sont généralement dans la catégorie des « one-liners », des programmes rédigés en une seule ligne, bien connus des développeurs Perl, tout en restant lisibles - du moins, pour qui sait les lire, ils sont très explicites. On pourra regretter que plusieurs solutions ne sont pas systématiquement proposées, quand cela peut être utile (autre algorithme, versions intermédiaires menant à la finale, autre paradigme, etc.).
A contrario, un utilisateur beaucoup plus expérimenté avec Mathematica pourra directement consulter les sections qui l'intéressent, l'ouvrage n'étant pas conçu pour n'être lu que d'une couverture à l'autre. En cas de dépendance d'une recette sur un autre chapitre, le lecteur est renvoyé vers la recette correspondante.
On peut diviser ce livre en trois parties : la première, l'introduction à Mathematica, ce qu'il faut savoir pour l'utiliser correctement (programmation fonctionnelle, par motifs ou règles, les structures de données, la gestion du texte et les graphiques - les sept premiers chapitres) ; ensuite, l'utilisation de ces concepts dans des cas plus réalistes (traitement de l'image, du son, fonctionnalités algébriques et analytiques, statistiques, sciences, ingénierie, finance, interactivité) ; finalement, des concepts beaucoup plus avancés pour retirer le maximum de Mathematica (programmation parallèle, interfaçage avec d'autres langages, astuces de débogage et diverses - les quatre derniers chapitres).
Même un utilisateur plus expérimenté peut avoir intérêt à lire la première partie, car il pourra y apprendre à se servir d'outils qu'il n'avait potentiellement jamais imaginés, mais surtout y apprendre à réaliser de meilleurs programmes, pas simplement fonctionnels.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
CUDA par l'exemple - une introduction à la programmation parallèle de GPU
Résumé de l'éditeur
CUDA est une architecture qui facilite le développement de programmes parallèles. Associé à une plate-forme logicielle complète, CUDA permet de tirer parti de la grande puissance des processeurs graphiques, ou GPU, afin de construire des applications très performantes dans de multiples domaines - ingénierie, calcul, finance, etc. - et ce sans nécessiter de connaissances en programmation graphique : il suffit de savoir programmer dans une version légèrement modifiée du langage C.
CUDA par l'exemple, écrit par deux membres éminents de l'équipe de développement de la plate-forme CUDA, a pour objectif d'expliquer comment utiliser cette nouvelle technologie. Cet enseignement s'appuie sur des exemples réels, pour lesquels tous les outils CUDA nécessaires sont librement téléchargeables à partir du site de NVIDIA.
L'ouvrage débute par une présentation de la plateforme de développement et son architecture, puis par une introduction rapide à CUDA C. Il détaille ensuite les techniques et les choix liés aux aspects essentiels de CUDA, ainsi que chaque extension de CUDA C. Grâce à ce livre, vous saurez rapidement écrire des programmes CUDA aux performances exceptionnelles.
Édition : Pearson
ISBN10 : 2744024864
ISBN13 : 9782744024863
- Pourquoi CUDA ? Pourquoi maintenant ?
- Démarrage
- Introduction à CUDA C
- Programmation parallèle en CUDA C
- Coopération entre threads
- Mémoire de données constante et événements
- Mémoire de texture
- Interopérabilité avec les traitements graphiques
- Atomicité
- Flux
- CUDA C avec plusieurs GPU
- Compte à rebours final
- Atomicité avancée
- CUDA 4.0
Petit livre s'il en est. Ses ambitions sont à la hauteur de son épaisseur : avec lui, on peut facilement se mettre dans le bain de CUDA, écrire ses premiers kernels, utiliser l'outil de manière relativement efficace. Par contre, il ne détaille pas l'architecture sous-jacente des processeurs graphiques, il ne perd pas son temps à expliquer le vocabulaire et les détails de la programmation parallèle tant que ce n'est pas nécessaire.
Les auteurs se sont basés sur une méthode d'apprentissage par l'exemple : chaque chapitre est organisé autour de plusieurs exemples, décortiqués autant que nécessaire pour que le lecteur s'y plonge sans trop de difficulté. L'objectif n'est pas de former des gens capables de comprendre jusque dans les moindres détails CUDA et l'optimisation profonde des algorithmes employés, mais plus de les amener à utiliser CUDA, en profitant de grands gains de performances par rapport à la version CPU, le tout dans un ton joyeux, sans se prendre la tête, avec une complexité croissante, sans sauter une marche. On remarquera notamment l'utilisation d'une bibliothèque de fonctions dans les exemples, afin de s'abstraire de ce qui ne concerne pas l'objectif premier du livre. Les auteurs semblent avoir remarqué ce qui pose souvent problème aux débutants avec CUDA et en profitent pour insister sur ces quelques points-clés.
Chaque chapitre est constitué de trois phases : l'introduction, où l'on introduit le sujet qui sera étudié dans le chapitre, avec la liste des objectifs ; le développement en lui-même ; la conclusion, où l'on résume les points essentiels du chapitre pour répondre aux objectifs fixés.
Il ne faut pas considérer ce livre comme une approche exhaustive de CUDA - tel n'en est pas le but -, il donne cependant les pistes nécessaires pour continuer son apprentissage de la technologie, comme le confirme le chapitre 12, où quelques pistes sont évoquées pour aller plus loin (livres de référence à consulter, bibliothèques utiles, etc.).
Par rapport à l'original, on remarquera l'ajout d'une annexe concernant CUDA 4.0, listant simplement les nouveautés de cette version, on aurait apprécié un peu plus de détails (des exemples, du code, notamment). On y apprend aussi que de nouvelles fonctionnalités du C++ sont supportées, alors que rien n'est précédemment dit sur ce langage. On n'apprendra rien sur l'architecture des GPU, pas plus sur la nouvelle architecture Fermi et les grandes nouveautés qu'elle apporte (elle n'est même pas citée), cela n'étant absolument pas l'objectif du livre.
Les prérequis ne sont pas exorbitants : la connaissance de la programmation en C est bien suffisante, inutile de connaître la programmation graphique. Dans cet ordre d'idées, chaque exemple est précédé d'une introduction plus théorique, qui explique ce qui va être réalisé par la suite, au cas où le lecteur ne le saurait pas. Ainsi, on explique brièvement le principe des réductions, des histogrammes, du lancer de rayons, etc.
Avez-vous lu ce livre ? Qu'en pensez-vous ? 1 commentaire
Minimanuel de C++
Cours et exos corrigés
Résumé de l'éditeur
Comment aller à l'essentiel, comprendre les méthodes et les techniques de programmation avant de les mettre en application ?
Conçus pour faciliter aussi bien l'apprentissage que la révision, les minimanuels proposent un cours concis et progressif pour vous accompagner jusqu'à l'examen. Des exemples, des savoir-faire et des méthodes pour éviter les pièges et programmer efficacement, ainsi que des exercices et leurs corrigés complètent le cours.
Ce minimanuel de C++ fournit les bases de l'un des langages de programmation incontournables dans toute formation d'informaticien, en particulier pour ceux qui vont travailler dans des domaines techniques et industriels.
Le code source des listings est disponible sur le site de Dunod sur la page dédiée à cet ouvrage.
Édition : Dunod
ISBN10 : 2100543296
ISBN13 : 9782100543298
- Expression arithmétiques en C++
- Chaînes et types énumération
- Tableaux et vecteurs
- Structures de contrôle
- Pointeurs
- Fonctions
- Classes
- La surcharge des opérateurs
- Agrégation, héritage, polymorphisme et patrons
Petit livre s'il en est, tout comme l'indique son nom (le « minimanuel »). Pourtant, tout est couvert : grâce à ce livre, pas besoin d'une expérience dans un langage pour faire ses premiers pas en C++. Une manière d'aborder le C++ très spéciale : on ne considère pas le C comme un prérequis, le C++ est enseigné comme premier langage, partant des bases de la syntaxe jusqu'à la programmation orientée objet, à laquelle pas moins d'une cinquantaine de pages sont dédiées (soit approximativement un quart de l'ouvrage).
Cependant, le tableau n'est pas que clair : on peut remarquer quelques fautes d'orthographe évidentes du début à la fin, ainsi que la présentation de Dev-C++, un EDI dont le support est arrêté depuis... 2005. On remarquera que ce livre a été édité en 2010 et qu'un particulier continue de manière non officielle la maintenance de l'EDI, sans que ce soit précisé.
Aucun point n'est jamais abordé en détail : le polymorphisme, par exemple, est expédié en trois pages seulement. C'est amplement suffisant pour la portée voulue de l'ouvrage (un minimanuel de C++), l'essentiel y est dit, on ne se pose pas de question supplémentaire la partie lue.
Chaque chapitre est divisé en plusieurs parties : le plan et les objectifs, le développement, un récapitulatif (l'essence des éléments principaux du chapitre) puis des exercices avec leur solution. Le développement est parsemé d'exemples, plus que bien commentés ; après chaque portion de code, le résultat que donne son exécution.
Il ne faut pas prendre ce livre pour ce qu'il n'est pas non plus : son but n'est pas d'introduire de l'algorithmique, il n'y en a d'ailleurs aucune trace. Il donne le condensé de la syntaxe du C++, pas une miette de plus - le format ne le permettant pas non plus. En tant que tel, il pourra servir de référence à celui qui ne pratique pas de longue date le C++ ; l'utilisateur plus avancé ne bénéficiera dans ce cas que des annexes, fort complètes, des mots-clés (tous avec un mot d'explication, même s'ils n'ont pas été abordés dans le texte) et des fonctions de la bibliothèque standard (avec l'en-tête de définition).
Sans oublier le point fort du livre : je l'ai lu d'une seule traite, en à peine quelques heures. Il est prévu pour être compréhensible par le commun des mortels.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Semantic Web for the Working Ontologist
Effective Modeling in RDFS and OWL
Résumé de l'éditeur
The promise of the Semantic Web to provide a universal medium to exchange data information and knowledge has been well publicized. There are many sources too for basic information on the extensions to the WWW that permit content to be expressed in natural language yet used by software agents to easily find, share and integrate information. Until now individuals engaged in creating ontologies-- formal descriptions of the concepts, terms, and relationships within a given knowledge domain -- have had no sources beyond the technical standards documents.
Semantic Web for the Working Ontologist transforms this information into the practical knowledge that programmers and subject domain experts need. Authors Allemang and Hendler begin with solutions to the basic problems, but don't stop there: they demonstrate how to develop your own solutions to problems of increasing complexity and ensure that your skills will keep pace with the continued evolution of the Semantic Web.
Provides practical information for all programmers and subject matter experts engaged in modeling data to fit the requirements of the Semantic Web.
De-emphasizes algorithms and proofs, focusing instead on real-world problems, creative solutions, and highly illustrative examples.
Presents detailed, ready-to-apply "recipes" for use in many specific situations.
Shows how to create new recipes from RDF, RDFS, and OWL constructs.
Édition : Morgan Kaufmann
ISBN10 : 0123735564
ISBN13 : 9780123735560
- What is the Semantic Web?
- Semantic Modeling
- RDF - The Basis of Semantic Web
- Semantic Web Application Architecture
- RDF and Inferencing
- RDF Schema
- RDFS-Plus
- Using RDFS-Plus in the Wild
- Basic OWL
- Counting and Sets in OWL
- Using OWL in the Wild
- Good and Bad Modeling Practices
- OWL Levels and Logic
Constatation : le Web sémantique semble réservé à une élite de théoriciens. Or, pour qu'il continue à se développer, il faut donner des outils à d'autres personnes, des praticiens. C'est l'objectif de ce livre : le Web sémantique d'un point de vue pratique. On peut dire qu'il y est parvenu. Les exemples ne sont pas simplement des exemples théoriques : ce sont de vrais exemples, présentant de vraies situations.
On vise ici une compréhension du Web sémantique, de ses concepts du point de vue du praticien, de celui qui va utiliser le Web sémantique pour l'apporter au plus grand nombre. Il doit donc bien comprendre chacun des concepts, pas seulement les manières de les exprimer.
Par contre, en ligne de mire, on ne trouve pas une compréhension en profondeur et exhaustive des concepts liés : il s'agit avant tout d'une introduction au sujet. Après avoir lu ce livre, on peut s'aventurer plus loin dans son étude du domaine.
On notera la présence de chapitres In the Wild, présentant l'utilisation pratique d'un langage, un cas d'utilisation réel (pas simplement réaliste), ainsi qu'un Good and Bad Modeling Practices, présentant les avantages et inconvénients de certaines pratiques en matière de modélisation d'ontologies.
Avez-vous lu ce livre ? Qu'en pensez-vous ? 2 commentaires
Thinking in Java
Résumé de l'éditeur
The classic object-oriented introduction for beginners and experts alike, fully updated for Java SE5/6 with many new examples and chapters!
Test framework shows program output.
Design patterns are shown with multiple examples throughout: Adapter, Bridge, Chain of Responsibility, Command, Decorator, Facade, Factory Method, Flyweight, Iterator, Data Transfer Object, Null Object, Proxy, Singleton, State, Strategy, Template Method, and Visitor.
Introduction to XML for data transfer; SWT, Flash for user interfaces.
Completely rewritten concurrency chapter gives you a solid grasp of threading fundamentals.
500+ working Java programs in 700+ compiling files, rewritten for this edition and Java SE5/6.
Companion web site includes all source code, annotated solution guide, weblog, and multimedia seminars.
Thorough coverage of fundamentals; demonstrates advanced topics.
Explains sound object-oriented principles.
Hands-On Java Seminar CD available online, with full multimedia seminar by Bruce Eckel.
Live seminars, consulting, and reviews available. See www.MindView.net
Édition : Prentice Hall
ISBN10 : 0131872486
ISBN13 : 9780131872486
- Preface
- Introduction
- Introduction to Objects
- Everything Is an Object
- Operators
- Controlling Execution
- Initialization & Cleanup
- Access Control
- Reusing Classes
- Polymorphism
- Interfaces
- Inner Classes
- Holding Your Objects
- Error Handling with Exceptions
- Strings
- Type Information
- Generics
- Arrays
- Containers in Depth
- I/O
- Enumerated Types
- Annotations
- Concurrency
- Graphical User Interfaces
- A: Supplements
- B: Resources
- Index
Un des meilleurs livres sur la programmation déjà parus (comme l'indiquent, par ailleurs, les très nombreuses critiques incluses en début d'ouvrage sur les précédentes éditions) : les sujets abordés sont larges et couvrent plus que ce qu'il faut connaître pour se lancer dans une vraie application Java, les explications n'étant pas en reste (plutôt trop longues que trop courtes, mais toujours agrémentées d'exemples, autant que possible). Du début à la fin, on a l'impression d'être mené par un maître du langage : la prose se révèle précise, les détails très poussés, à un point que l'auteur montre sans cesse qu'il maîtrise le langage et ses spécificités sur le bout des doigts, sans que cela ne gêne la lecture. Par moments, on arrête l'apprentissage du langage pour une petite balade philosophique, en discutant les choix posés par les concepteurs du langage, en expliquant, quand ils se sont trompés, ce qui ne convenait pas. Par moment, les explications vont trop loin et risquent réellement de perdre les plus débutants (écrire un livre pour les débutants est l'une des tâches les plus ardues, l'auteur y arrive la majorité du temps).
S'il faut trouver des points négatifs, on pourrait citer certains exemples dignes de romans-fleuves : des pages de code, bien commenté, compréhensible, mais certainement trop verbeux, voire effrayant pour un débutant. L'introduction mène directement jusque dans certains recoins du langage, une partie que les débutants ne pourront pas comprendre en entier, à moins d'avoir une certaine expérience dans un ou plusieurs autres langages ; de même, l'entièreté d'un concept n'est pas couverte dans le chapitre dédié, car certaines notions nécessaires n'ont pas encore été abordées, cela peut donner une impression de fouillis.
Ce livre a aussi une assez forte orientation « migration depuis C++ », ce qui risque de gêner les lecteurs ne connaissant pas le C++. Cependant, les autres bénéficieront d'un apprentissage qui oppose les deux langages : ce que fait l'un par rapport à l'autre, ce qui les distingue, les avantages et inconvénients de chacun.
Les exercices ne seront pas au goût de tout le monde : certaines fois, il suffit de montrer la véracité d'une explication, ce qui risque de paraître fort inutile aux yeux de certains (tandis que d'autres apprécieront). À côté, des exercices bien plus exigeants, pour lesquels quelques minutes de réflexion ne suffiront probablement pas ; certains sont même proposés comme projets de quadrimestre pour certains cours universitaires.
Maintenant, ce livre est-il à recommander comme tout premier livre Java ? Pour un débutant accroché, oui : certains chapitres sont relativement compliqués à comprendre, il s'agit de ne pas abandonner à la première difficulté. Pour un vrai débutant, sans aucune notion de programmation préalable, il vaut mieux profiter du Thinking in C en long et en large avant d'attaquer cette brique. Une fois lu entièrement, on peut être sûr d'avoir une bonne compréhension du langage, ce qui ne peut qu'être bénéfique aux plus débutants, même si beaucoup vont se demander à quoi cela sert et vont aller voir un ouvrage moins détaillé, plus pragmatique, qui part moins dans de longues discussions sur un sujet pas forcément utile au développement pur et dur.
Avez-vous lu ce livre ? Qu'en pensez-vous ? 5 commentaires
Effective Java
Second Edition
Résumé de l'éditeur
Are you looking for a deeper understanding of the Java™ programming language so that you can write code that is clearer, more correct, more robust, and more reusable? Look no further! Effective Java™, Second Edition, brings together seventy-eight indispensable programmer's rules of thumb: working, best-practice solutions for the programming challenges you encounter every day.
This highly anticipated new edition of the classic, Jolt Award-winning work has been thoroughly updated to cover Java SE 5 and Java SE 6 features introduced since the first edition. Bloch explores new design patterns and language idioms, showing you how to make the most of features ranging from generics to enums, annotations to autoboxing.
Each chapter in the book consists of several “items” presented in the form of a short, standalone essay that provides specific advice, insight into Java platform subtleties, and outstanding code examples. The comprehensive descriptions and explanations for each item illuminate what to do, what not to do, and why.
- New coverage of generics, enums, annotations, autoboxing, the for-each loop, varargs, concurrency utilities, and much more
- Updated techniques and best practices on classic topics, including objects, classes, libraries, methods, and serialization
- How to avoid the traps and pitfalls of commonly misunderstood subtleties of the language
- Focus on the language and its most fundamental libraries: java.lang, java.util, and, to a lesser extent, java.util.concurrent and java.io
Simply put, Effective Java™, Second Edition, presents the most practical, authoritative guidelines available for writing efficient, well-designed programs.
Édition : Prentice Hall PTR
ISBN10 : 0321356683
ISBN13 : 9780321356680
- Introduction
- Creating and Destroying Objects
- Methods Common to All Objects
- Classes and Interfaces
- Generics
- Enums and Annotations
- Methods
- General Programming
- Exceptions
- Concurrency
- Serialization
Un ensemble d'items, de gemmes pourrait-on dire, contenant des conseils de programmation en Java, tant pour le novice que pour le développeur plus expérimenté, du point de vue d'un concepteur d'API Java, tous utiles, un jour ou l'autre, vu la diversité des sujets évoqués.
Dans l'avant-propos, on remarque une citation intéressante :
This book address your third need: customary and effective usage. [...] Here he offers good advice, systematically organized, on how to structure your code so that it works well, so that other people can understand it, so that future modifications and improvements are less likely to cause headache.
Ce livre répond à votre troisième besoin : l'habitude et l'usage pratique. [...] Ici, il offre de bons conseils, systématiquement organisés, sur la manière de structurer le code pour qu'il fonctionne bien, que d'autres puissent le comprendre, que de futures modifications et améliorations ne causent pas trop de maux de tête.
C'est exactement ce qui est fait : alors que bien des livres décrivent en longueur la syntaxe du langage ou les outils disponibles, très peu se penchent sur la manière de bien les utiliser. On comprend alors les avantages mais aussi les faiblesses du langage, ce que l'on peut faire et ce qu'il est préférable d'éviter, même avec les meilleures intentions, pour que tous en bénéficient (tant les futurs mainteneurs que les utilisateurs des API).
Un point cependant que l'on pourrait reprocher : une grande partie est orientée du point de vue d'un concepteur d'API, c'est-à-dire pas vraiment le but de la majorité des développements. Ces bonnes pratiques, néanmoins, utilisées dans toute application, ne peuvent qu'améliorer le code et tout ce qui s'en suit, sans beaucoup extrapoler.
On peut donc, sans grand danger, le recommander à tout qui a déjà débuté dans le langage (il n'est pas du tout prévu pour apprendre la syntaxe, il la considère acquise en grande partie) : le seul effet sera de produire du code de meilleure qualité !
Les items ne sont pas prévus pour être lus l'un après l'autre obligatoirement, il y a souvent une série de références d'items qui approfondissent certains points, ce qui fait qu'ils sont généralement assez spécialisés - bien que, parfois, une seule page leur est dédiée, ce qui est un peu court. On peut donc utiliser ce livre comme référence constante lors d'un développement, pour avoir une approche souvent considérée comme la meilleure : tous en bénéficieront, à tout moment de l'utilisation du langage. Cependant, se limiter à le lire ne sera probablement pas suffisant : tester soi-même ce qui est proposé et les alternatives, voir pourquoi, « en vrai », la solution proposée est meilleure en général, déceler les cas où cela n'est pas tellement d'application, discuter de cela avec des experts du langage.
Cette deuxième édition a été complètement revue pour Java SE 5 et 6 et dispense donc les dernières nouveautés de ces deux versions, principalement la 5, étant donné que la mise à jour a commencé avant la sortie de Java 6.
Avez-vous lu ce livre ? Qu'en pensez-vous ? 1 commentaire
JavaScript
Introduction et notions fondamentales
Résumé de l'éditeur
Ce livre sur JavaScript est extrait du titre "Ajax - Développez pour le web 2.0" dans la collection Ressources Informatiques aux Editions ENI.
Il s'adresse à un public de lecteurs initiés désireux d'ajouter des éléments dynamiques et de l'interactivité aux pages Web qu'ils développent. Cette connaissance du JavaScript est la base indispensable pour accéder aux techniques de création de sites plus évoluées que sont le Dhtml et l'Ajax.
Pour tirer le meilleur profit possible de ces éléments et pour la bonne compréhension de cet ouvrage, la connaissance et l'expérience du langage Html ou Xhtml sont des pré-requis nécessaires.
- Chapitre 1 - Introduction au JavaScript : Définitions, outils, code JavaScript...
- Chapitre 2 - Notions fondamentales : La casse, les commentaires, les constantes, les variables, les opérateurs...
- Chapitre 3 - Fonctions et méthodes : Déclaration, appel, passage de paramètres, quelques méthodes JavaScript...
- Chapitre 4 - Conditions et boucles : Les conditions if ... else, la boucle for, la boucle while, l'instruction break, l'instruction continue...
- Chapitre 5 - Gestionnaire d'événement : les événements onClick, onFocus, onLoad, onUnLoad, onMouseOver, onMouseOut, onSubmit...
- Chapitre 6 - Formulaires : La ligne de texte, les boutons de choix, le menu déroulant, les boutons d'envoi, de réinitialisation, de commande...
- Chapitre 7 - Manipulation des chaînes de caractères : Length(), charAt(), indexOf(), substring(), toLowerCase(), toUpperCase(), replace(), les expressions régulières...
- Chapitre 8 - Tableaux en JavaScript : Définition, initialisation, accès aux données, tableaux associatifs, méthodes spécifiques aux tableaux...
- Chapitre 9 - Quelques autres objets JavaScript : Les objets Date, Math, navigator, window...
Édition : éditions ENI
ISBN10 : 2746042401
ISBN13 : 9782746042407
- Introduction au JavaScript
- Notions fondamentales
- Fonctions et méthodes
- Conditions et boucles
- Gestionnaire d'événement
- Formulaires
- Manipulation des chaînes de caractères
- Tableaux en JavaScript
- Quelques autres objets JavaScript
Sans grande prétention, cet ouvrage propose d'apprendre les notions fondamentales de JavaScript. On remarquera l'effort pédagogique fourni par l'auteur, qui explique la programmation à des profils plutôt orientés infographie que développeurs. Il y arrive d'une belle manière, allant étape par étape, sans en brûler une seule, pour construire des notions de base en programmation avec JavaScript. L'auteur présuppose une connaissance de HTML.
On n'y retrouvera à ce titre que l'essentiel : après lecture, on pourra ajouter un peu d'interactivité aux pages, mais sans avoir des connaissances très approfondies de JavaScript. Notamment, le modèle DOM y est à peine survolé. Il ne faut pas espérer être à même d'écrire du code JavaScript poussé, ni même d'entreprendre l'AJAX sans formation plus avancée, mais ce n'est clairement pas l'objectif poursuivi. Le développeur ayant déjà une expérience de programmation n'aura sans doute pas grand-chose à apprendre de ce livre, si ce n'est les quelques différences de JavaScript dues à son utilisation côté client.
Malgré quelques fautes d'orthographe, l'auteur s'ingénie à montrer, dans un style clair, l'utilité de JavaScript dans des sites, pas seulement pour s'amuser à réaliser quelques effets, plutôt pour donner une valeur ajoutée, à travers de nombreux exemples illustrés par des captures d'écran du résultat dans le navigateur.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Structures de données avancées avec la STL
Programmation orientée objet en C++
Résumé de l'éditeur
Destiné aux étudiants de premier cycle en informatique ainsi qu'aux développeurs, ce manuel a trois objectifs : le premier est de présenter des structures de données avancées ; le deuxième, d'introduire la programmation orientée objet telle qu'elle a été définie en C++ ; et le troisième, de présenter un certain nombre d'algorithmes classiques liés aux structures de données.
- un rappel sur l'analyse des algorithmes (notation grand O) ;
- des méthodes de tri interne efficaces ;
- un rappel sur les structures de données linéaires ;
- les structures de données et les algorithmes de la STL (Standard Template Library) ;
- les divers algorithmes de recherche dans une chaîne de caractères ;
- diverses sortes d'arborescences (arbres binaires de recherche, arbres équilibrés AVL, arbres Rouge-Noir) ;
- les graphes et les algorithmes de Prim, de Warshall, de Floyd, de Dijkstra, de Sharir, et de Kruskal ;
- le type de données abstrait Table accompagné de la technique du hachage et des méthodes qui lui sont associées pour la résolution des collisions.
Édition : Dunod
ISBN10 : 2100495232
ISBN13 : 9782100495238
- Fondements du langage de programmation C++
- Tableaux, structures, pointeurs et entrée-sortie
- Algorithmes et leur complexité
- Génie logiciel et orientation objet
- STL, algorithmes et structures de données
- Structures de données simples
- Programmation orientée objet : hiérarchie et polymorphisme
- Arborescences
- Arborescences spécialisées
- Graphes
- Tables
Un livre tel qu'on aimerait en avoir plus souvent dans les mains : le côté pédagogue de l'auteur n'est en rien gâché par la qualité de l'écrit. Bien qu'il semble a priori plus orienté vers la pratique, ce livre présente également les aspects théoriques nécessaires à la bonne compréhension du contenu (ni éléments de la théorie de la complexité, ni fondements et concepts mathématiques des structures de données ne sont oubliés). Les structures de données les plus utiles sont présentées, leurs méthodes d'accès sont toujours accompagnées de leur complexité en temps (et en espace si cela revêt une certaine importance), pour arriver à comparer plusieurs manières d'implémenter les graphes en fonction des opérations qui devront être effectuées. Les algorithmes généralement appliqués sur ces structures ne sont en rien oubliés, ils sont d'ailleurs doublement présentés : tant un aspect pratique (l'implémentation en C++) que théorique (l'explication de l'algorithme, son pseudocode). Le contenu est orienté du côté du développeur qui doit utiliser ces structures, plutôt que du théoricien qui doit en développer de nouvelles (on ne s'appesantira pas sur le pourquoi du comment, plutôt les avantages et inconvénients, sur les cas d'utilisation, etc.).
Cependant, tout ne concerne pas les structures de données : l'auteur part du principe que le lecteur sait développer dans un certain langage et réexplique donc les fondements de la syntaxe du C++ sans s'appesantir, mais approfondit la programmation orientée objet (il en donne les bases nécessaires pour un aperçu global du sujet, mais sans aller dans toutes les finesses que l'on attendrait d'un livre spécifiquement consacré à la programmation orientée objet). Ceci empêche notamment d'utiliser la STL dès les premiers morceaux de code (les tableaux sont préférés pour les premiers chapitres), bien que, une fois les bases acquises, elle est utilisée de manière systématique.
Du style, on retiendra une certaine dose d'humour, mais aussi de fréquentes références culturelles (pas forcément de culture informatique) tout au long de l'ouvrage (ce dès la préface, d'ailleurs nommée « prolégomènes »). On remarquera aussi une certaine dose de notes de bas de page, des incitations à consulter d'autres ouvrages ou articles pour de plus amples informations sur un sujet, tant pour les principes des structures que pour les nombreux exemples d'utilisation.
Avez-vous lu ce livre ? Qu'en pensez-vous ? 11 commentaires
Le web sémantique
Comment lier les données et les schémas sur le web ?
Résumé de l'éditeur
Le web sémantique désigne un ensemble de technologies visant à rendre les ressources du web plus largement utilisables ou plus pertinentes grâce à un système de métadonnées qui utilisent notamment la famille des langages développés par le W3C (World Wide Web Consortium).
Cet ouvrage offre dans un langage accessible une synthèse de ce qu'il faut aujourd'hui savoir du web sémantique. Il explique simplement quelles sont les techniques mises en œuvre et dresse un panorama des utilisations potentielles et des bénéfices attendus.
Édition : Dunod
ISBN10 : 2100572946
ISBN13 : 9782100572946
- Un seul web
- Le web des données
- Sémantique des vocabulaires et inférences
- Règles d'inférence
- Ressources, outils et standards connexes
- Pour en finir avec quelques idées reçues
- Web et métadonnées ubiquitaires
Domaine émergent malgré son âge (les premiers développements du Web sémantique datent de la fin des années 1990), on en décrie parfois le manque de pédagogie des ressources disponibles. De fait, les concepts sont nombreux et abstraits, mais ce livre les résume en permettant de comprendre les tenants et aboutissants de ces technologies que l'on peut facilement croire comme détachées du Web - pourtant, les auteurs arrivent à en montrer la continuité par rapport à l'existant, à les raccrocher à la réalité (oui, les concepts sont utiles, des applications sont montrées).
Ce livre est destiné à divers publics : tant le décideur que l'étudiant, tous y trouveront leur compte, mais ne le liront pas de la même manière. Il est d'ailleurs prévu de la sorte : il n'est pas nécessaire de le lire de manière linéaire pour en apprécier le contenu. Pour avoir une vue d'ensemble du domaine, les chapitres 1 et 5 à 7 résument l'essentiel sans entrer dans les détails techniques ; celui qui cherche à se former plus spécifiquement sur la pile de standards se focalisera sur les chapitres 2 à 4, qui traitent des standards par ordre de dépendance (d'abord le framework RDF, puis les formalismes des vocabulaires pour finir sur les règles d'inférence).
Ainsi, le livre est bien structuré, pour faciliter une lecture rapide, une utilisation en tant que livre de référence, pour éviter de passer son temps sur des détails qui paraissent peu intéressants aux yeux du lecteur. Chaque chapitre débute par un encadré précisant les objectifs à atteindre et se finit par un autre encadré fournissant un résumé des notions abordées.
Ce n'est pas pour autant qu'on peut parler de livre de vulgarisation : la technique est très présente, les détails plus d'ordre théorique ne sont pas omis, des raccourcis trop rapides ne sont pas pris. Cependant, il reste accessible à tout public intéressé par les révolutions en cours dans le domaine du Web.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Maîtriser Joomla!
Guide professionnel du développement d'applications
Résumé de l'éditeur
Ce livre sur Joomla! (en version 1.6 au moment de la rédaction) est une référence unique et complète pour le développement d'applications avec Joomla!. Il a été conçu à la fois comme un guide permettant de mettre en œuvre les concepts sous-jacents à son fonctionnement mais aussi comme une description exhaustive des classes et méthodes du cadre applicatif. Il s'adresse aux développeurs PHP désireux d'exploiter la librairie étonnamment performante de Joomla! pour créer des applications internet de très haute facture.
Après une description de l'architecture générale de Joomla! l'auteur explique quel est le cheminement entre une demande d'affichage de page internet et son rendu sur le navigateur de l'utilisateur. C'est à travers un exemple concret que le chapitre 3 détaille la procédure à suivre pour développer des modules et le chapitre 4 est consacré au développement de composants, ceux-ci constituant la colonne vertébrale du système de gestion de contenus. Le chapitre 5 détaille la création de templates et le chapitre 6 décrit le développement de plugins qui permettent à Joomla! d'appeler des fonctions complémentaires au système.
Enfin, le chapitre 7 constitue la documentation de référence de l'ensemble des classes non décrites dans les autres chapitres.
Écrit par Christophe Demko, membre de l'équipe de développement de Joomla!, ce livre est le reflet fidèle des concepts à utiliser pour le développement d'applications internet fiables. Rempli de conseils d'expert sur tous les aspects de la programmation avec Joomla!, il sera votre guide de référence dans vos tâches de développement d'applications.
Édition : Editions ENI
ISBN10 : 2746063417
ISBN13 : 9782746063419
- Avant-propos
- Introduction
- Cheminement d'une requête utilisateur
- Développement de modules
- Développement de composants
- Développement de plugins
- Les templates
- Les outils du framework
Joomla! est un système de gestion du contenu (CMS, en anglais) très répandu (aux alentours de deux pour cent du Web l'utilise) et très orienté vers les utilisateurs. De ce fait, la documentation autour du développement d'extensions (au sens large) est assez limitée : un de ses défauts est d'être peu orientée développeur, au sens au peu de choses sont expliquées (une série de pièces s'assemblent au fil du tutoriel, sans qu'une ligne directrice soit présente, sans qu'on sache ce que l'on fait).
Dans ce contexte, un tel livre est une aubaine : l'auteur y explique ce qu'il fait, pourquoi il le fait, comment il choisit ses noms de classe et de fichier. Pour chaque type d'extension, il y décrit la manière de procéder, les classes spécifiques à utiliser, les concepts mis en œuvre. Il ne néglige pas de mentionner le fonctionnement interne du CMS derrière cette API, de telle sorte que l'on puisse bien comprendre ce qui se trame en coulisse.
Le livre s'ouvre sur le cheminement d'une requête dans le CMS, de l'appel du fichier index.php aux événements qui apparaissent, en déroulant méthodiquement et sans presser le pas ce fichier, levant le masque sur chaque partie intéressante de son organisation. Ce premier chapitre offre une vue d'ensemble sur les entrailles du logiciel.
Cependant, le livre n'est clairement pas destiné aux débutants : de bonnes connaissances en PHP objet sont absolument requises pour comprendre une grande majorité du livre, il est nécessaire d'avoir déjà joué avec Joomla!, savoir l'utiliser, l'installer. L'auteur passe toutes les prémisses utiles à l'utilisateur de base et se destine directement au développement pour le CMS.
Également, la pédagogie n'est pas le point fort du livre, elle n'est pas voulue du début à la fin : il s'agit d'une documentation technique francophone sur les mécanismes en jeu, sur les API proposées. Pas d'exemple développé de long en large dans le livre, mais bien un fil rouge (le développement d'un dictionnaire, avec composant, module et extension), dont les sources sont proposées à côté du livre. Seuls les morceaux importants sont repris et développés dans le livre, l'auteur se base beaucoup sur la pratique et la lecture de code ; elle est cependant grandement facilitée par les explications plus ex cathedra.
On en retiendra qu'il s'agit d'une excellente documentation technique, loin d'être désuète malgré l'âge de l'ouvrage et l'évolution rapide du CMS ; cependant, le livre n'est pas à conseiller au débutant en programmation (Web, PHP et en général).
Avez-vous lu ce livre ? Qu'en pensez-vous ? 1 commentaire
Réseaux
Résumé de l'éditeur
L'ouvrage de référence sur les réseaux, entièrement mis à jour pour inclure les technologies incontournables de demain.
Ce best-seller mondial a fait l'objet d'une révision minutieuse pour refléter les évolutions technologiques récentes, avec une attention particulière accordée aux avancées en matière de multimédia, aux réseaux 3G utilisés avec les smartphones et les terminaux de poche, aux étiquettes radio (RFID) et aux réseaux de capteurs, aux réseaux de distribution de contenu (CDN), et aux réseaux peer-to-peer. De nouveaux développements concernent également le temps réel (audio et vidéo à partir de fichiers ou en streaming), la vidéo à la demande et la téléphonie sur Internet (voix sur IP).
Andrew Tanenbaum et David Wetherall exposent de façon détaillée le fonctionnement interne des réseaux, depuis la couche physique jusqu'à la couche application. Cet ouvrage est organisé de la façon suivante :
- Couche physique (cuivre, fibre, sans fil, satellites, OFDM et CDMA, etc.).
- Couche liaison de données (principes des protocoles, détection et correction des erreurs, HDLC, PPP, etc.).
- Sous-couche MAC (Ethernet gigabit, 802.11, 802.16, Bluetooth et les RFID, sans fil à large bande, etc.).
- Couche réseau (algorithmes de routage, qualité de service en temps réel, IPv4, IPv6, etc.).
- Couche transport (programmation de sockets, UDP, TCP, RTP, contrôle de congestion, performances des réseaux, réseaux tolérants aux délais, etc.).
- Couche application (messagerie électronique, Web, PHP, DNS, streaming audio, etc.).
- Sécurité des réseaux (AES, RSA, chiffrement quantique, IPSec, sécurité du Web, sécurité 802.11 et Kerberos V5, etc.).
Ce livre présente en outre de nombreux exemples issus de l'Internet et des réseaux sans fil ; il comporte plusieurs centaines d'exercices, tous entièrement corrigés sur le site compagnon.
Édition : Pearson
ISBN10 : 2744075213
ISBN13 : 9782744075216
- Introduction
- La couche physique
- La couche liaison de données
- La sous-couche MAC de contrôle d'accès au canal
- La couche réseau
- Couche transport
- La couche application
- La sécurité des réseaux
Les réseaux informatiques sont un vaste sujet : on peut regrouper sous ce titre tant le manuel d'utilisation d'un routeur que les concepts généraux implémentés dans ce routeur. Ce livre se concentre sur la deuxième partie : il donne une vision d'abord théorique sur les concepts, les protocoles, les algorithmes généralement mis en œuvre dans le domaine des réseaux. Ainsi, son public premier sera les étudiants en informatique, mais aussi toute personne désireuse de connaissances en réseaux ; son exhaustivité le rendra également utile en tant qu'ouvrage de référence.
L'approche globale est plus académique, théorique que praticienne : les auteurs se focalisent sur les principes, les concepts avant de partir dans leur utilisation. Les raisons théoriques pour lesquelles les solutions adoptées fonctionnent ne sont pas oubliées.
L'ouvrage n'est pas seulement complet, il est vraiment exhaustif : toutes les couches du modèle étudié (proche du modèle OSI) sont vues en détail, avec force exemples réels. L'inconvénient de cette approche est qu'il n'est pas possible d'en saisir tous les détails en première lecture à moins d'avoir une grande expérience dans le domaine. On peut vraiment parler de la « bible » des réseaux - à ce titre, la taille de l'ouvrage (on devrait plutôt parler de brique) ne devrait pas effrayer, c'est le gage de la complétude dans l'exposé, de la minimisation des non-dits.
Les bases sont couvertes, au même titre que les technologies plus récentes : IPv6, Wi-Fi, VoIP, RFID et bien d'autres sont abordées.
Un point plus noir : les théories sur lesquelles se construisent les réseaux sont supposées connues. Ainsi, une approche des mathématiques, de la programmation (en C, bien que les exemples devraient rester compréhensibles pour des personnes sans connaissance du C), de l'électromagnétisme est requise pour saisir l'utilité de certains développements.
La traduction est de bonne facture, les anglicismes y sont réduits autant que possible dans leur nombre, ce qui rend le texte d'autant plus accessible que l'auteur fait preuve de pédagogie, en introduisant au fur et à mesure des solutions de plus en plus complexes, réelles et actuelles, passant des solutions plus historiques aux principes utilisés actuellement.
Avez-vous lu ce livre ? Qu'en pensez-vous ? 2 commentaires
Les bases de données NoSQL
Comprendre et mettre en œuvre
Résumé de l'éditeur
Des bases pour la performance et le Big Data
En quelques années, le volume des données brassées par les entreprises a considérablement augmenté. Émanant de sources diverses (transactions, comportements, réseaux sociaux, géolocalisation...), elles sont souvent structurées autour d'un seul point d'entrée, la clé, et susceptibles de croître très rapidement. Autant de caractéristiques qui les rendent très difficiles à traiter avec des outils classiques de gestion de données. Par ailleurs, certains cas d'utilisation exigeant des temps d'accès très courts défient également les capacités des moteurs transactionnels. C'est pour répondre à ces différentes problématiques que sont nées les bases de données NoSQL (Not Only SQL), sous l'impulsion de grands acteurs du Web comme Facebook ou Google, qui les avaient développées à l'origine pour leurs besoins propres. Grâce à leur flexibilité et leur souplesse, ces bases non relationnelles permettent en effet de gérer de gros volumes de données hétérogènes sur un ensemble de serveurs de stockage distribués, avec une capacité de montée en charge très élevée. Elles peuvent aussi fournir des accès de paires clé-valeur en mémoire avec une très grande célérité. Réservées jusqu'à peu à une minorité, elles tendent aujourd'hui à se poser en complément du modèle relationnel qui dominait le marché depuis plus de 30 ans.
Du choix de la base NoSQL à sa mise en oeuvre
Cet ouvrage d'une grande clarté dresse un panorama complet des bases de données NoSQL, en analysant en toute objectivité leurs avantages et inconvénients. Dans une première partie, il présente les grands principes de ces bases non relationnelles : interface avec le code client, architecture distribuée, paradigme MapReduce, etc. Il détaille ensuite dans une deuxième partie les principales solutions existantes (Hadoop, MongoDB, Cassandra, CouchDB...), en précisant spécificités, forces et faiblesses de chacune. Complétée par une étude de cas réel, la dernière partie du livre est consacrée au déploiement concret de ces bases : dans quel cas passer au NoSQL ? quelle base adopter selon ses besoins ? quelles données basculer en NoSQL ? comment mettre en place une telle base ? comment la maintenir et superviser ses performances ?
- Aux experts en bases de données, architectes logiciels, développeurs...
- Aux chefs de projet qui s'interrogent sur le passage au NoSQL
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Eyrolles
ISBN10 : 2212135602
ISBN13 : 9782212135602
Qu'est-ce qu'une base de données NoSQL ?
- Des SGBD relationnels au NoSQL
- NoSQL versus SQL : quelles différences ?
- Les choix techniques du NoSQL
- Les schémas de données dans les bases NoSQL
Panorama des principales bases de données NoSQL
- Hadoop et HBase
- CouchDB
- MongoDB
- Riak
- Redis
- Cassandra
- Les autres bases de données de la mouvance NoSQL
Mettre en oeuvre une base NoSQL
- Quand aller vers le NoSQL et quelle base choisir ?
- Mettre en place une solution NoSQL
- Maintenir et superviser ses bases NoSQL
- Etude de cas : le NoSQL chez Skyrock
- Conclusion : comment se présente le futur ?
Parmi les premiers ouvrages en français sur le sujet du NoSQL, ce livre présente la particularité intéressante d'avoir été rédigé par un spécialiste des bases de données relationnelles. Cette compétence est largement mise à profit tout au long du livre, où l'approche NoSQL (unifiée en ce qu'elle abandonne le relationnel) est sans cesse comparée à l'approche relationnelle, déjà fort ancienne au vu de l'histoire de l'informatique. Il ne faut cependant pas croire que l'objectif est de prouver une quelconque supériorité des systèmes largement déployés : l'auteur n'hésite pas à signaler les points où l'une ou l'autre approche est plus adapté, en indiquant qu'il n'est pas rare de devoir faire cohabiter une solution relationnelle en plus d'un accès NoSQL.
Le contenu s'organise selon trois parties fort distinctes.
- La première introduit les notions de base du NoSQL, en partant de l'origine des systèmes de gestion de bases de données (avant l'omniprésence du relationnel) et amène les éléments qui ont propulsé le mouvement NoSQL, les difficultés éprouvées par le relationnel pur (notamment en cas de montée en charge pour des volumes typiques du big data) mais aussi les problèmes qu'il résout. Dès le début, les points plus techniques ne sont pas mis de côté, avec une discussion des interfaces de programmation offertes par les systèmes NoSQL, leurs avantages et inconvénients, sans oublier l'architecture grandement distribuée pour la plupart des représentants de la mouvance NoSQL (ainsi qu'une série de tests pratiques sur MongoDB ou Redis) ou le modèle de données implémenté (schéma, paires clé-valeur, documents, colonnes, etc.).
- La deuxième partie se concentre sur les logiciels regroupés sous le pavillon NoSQL plus en détail : leur installation sur une distribution Linux (Ubuntu), leur programmation (la grande majorité des codes d'exemple est écrite en Python), ainsi que quelques éléments sur les spécificités de chacun. Les plus connus MongoDB ou CouchDB ne sont pas les seuls traités, puisque le moteur de recherche ElasticSearch ou la base de données orientée graphes Neo4j sont aussi introduits, bien qu'en moindres détails.
- L'ouvrage s'achève sur une approche plus pragmatique de la nébuleuse NoSQL. Quand faut-il aller vers du NoSQL ? Comment le marier avec du relationnel ? Quelle base de données choisir ? Comment modéliser ses données ? Comment évaluer le matériel requis pour les besoins estimés ? Comment importer des données ? Il ne s'agit pas simplement de poser les bonnes questions, mais aussi de donner les éléments de réponse qui aideront à effectuer le bon choix, avec un exemple sous forme d'étude du cas de SkyRock, qui mèle allègrement relationnel et NoSQL (y compris les bases MySQL sans relationnel, sans jointures).
Une fois posées, ces presque trois centaines de pages donnent l'impression d'avoir survolé une grande partie de la sphère NoSQL, mais aussi d'en savoir plus sur ses motivations : ces outils ont été créés d'abord pour répondre à un besoin précis, pas pour être génériques. En plus de s'épancher longuement sur les particularités de chaque moteur, il a l'avantage de donner les premiers éléments pour s'en servir, tant du côté client (exemples de programmes) que serveur (administration de base, déploiement de groupes de machines), de telle sorte qu'il est aisé de commencer à tester les moteurs, voir comment ils réagissent dans une situation donnée et effectuer son choix en toute connaissance de cause.
Joomla!
Le Guide Officiel
Résumé de l'éditeur
Le Guide officiel Joomla! est l'ouvrage de référence pour tout administrateur, blogueur, éditeur de contenus, développeur ou designer, débutant ou utilisateur averti. Grâce à des explications simples et des exemples pratiques, il vous permettra de mettre en place un site web de qualité, en accord avec vos cibles et le public que vous visez.
Si vous débutez avec Joomla!, vous apprendrez dans ce livre à créer et mettre en ligne des sites de qualité immédiatement opérationnels et entièrement personnalisables. Si vous êtes un utilisateur plus expérimenté, vous découvrirez comment rendre vos sites plus flexibles, plus attractifs, plus riches en fonctionnalités, en exploitant toutes les capacités et nouveautés de Joomla! 2.5 et 3. Dans un cas comme dans l'autre, vous maîtriserez tous les mécanismes de Joomla! et ferez connaissance avec la grande communauté Joomla!, afin de prendre appui sur elle pour la mise en place de votre site, ou pour contribuer au projet.
Le Guide officiel Joomla! vous guidera de la première étape de votre projet de site à la dernière, en passant par les thèmes, les extensions, et les fonctionnalités. Il vous donnera toutes les astuces dont vous avez besoin pour améliorer le référencement de votre site pour Joomla!, ainsi que de précieux conseils le tenir à jour, penser son marketing, et l'adapter votre site en fonction de votre activité.
- Pensez vos sites en amont, avant de les mettre en place
- Créez des sites web rapidement, sans commettre les erreurs les plus courantes
- Installez et confi gurez Joomla!
- Créez et éditez votre contenu pour votre site Joomla!
- Personnalisez votre site avec les thèmes Joomla! et les extensions
- Optimisez le référencement de votre site pour les moteurs de recherche
- Maintenez votre site Joomla! et effectuez des sauvegardes de sécurité
- Participez à la communauté Joomla! en tant qu'utilisateur ou en tant que contributeur
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Pearson
ISBN10 : 2744025704
ISBN13 : 9782744025709
- Le projet Joomla
- Avant d'installer Joomla
- Installer Joomla
- Configurer Joomla
- Gérer le contenu
- Introduction aux extensions
- Introduction aux templates
- Créer un template simple
- Promouvoir et s'occuper du site
- Garder le site à jour
- Joomla pour l'entreprise
- Joomla pour les associations
- Joomla pour l'enseignement
L'avant-propos de ce livre le résume fort bien en peu de mots :
Joomla!, le guide officiel prend une approche différente de celles des autres "modes d'emploi". Il se focalise non pas sur l'utilisation de Joomla, mais sur la construction de sites web réels avec Joomla.
Couvrant tant Joomla 2.5 que 3 (ce qui lui assure d'être à jour jusqu'en 2015), il replace le CMS Joomla! dans une approche holistique de construction d'un site : il ne s'agit pas seulement d'installer une application sur un serveur puis de la configurer, il faut également penser le site, réfléchir aux implications. Ainsi, le deuxième chapitre s'oriente autour des questions essentielles lors la construction d'un site : déterminer son objectif, enregistrer un nom de domaine, choisir un hébergeur ; il présente également des notions de droit d'auteur et de marketing.
Cette caractéristique est approfondie dans les études de cas des derniers chapitres : avant d'entrer dans les détails des extensions utiles dans un cas particulier et des personnalisations à apporter au logiciel, les auteures prennent le temps de planifier le site, d'évaluer les besoins auxquels il répond.
Le cheminement du lecteur commence par une présentation du projet Joomla!, de son histoire dès la scission d'avec Mambo, avec une présentation des outils indispensables à tout utilisateur de Joomla! (les communautés d'entraide, le recueil d'extensions) et de la communauté derrière le projet. Bien évidemment, pour un projet open source, les auteures n'hésitent pas à signaler que toute contribution est intéressante.
La partie réellement technique n'arrive qu'après une quarantaine de pages avec l'installation d'un premier site, sans prérequis : l'utilisateur n'est pas considéré maître de son logiciel FTP et administrateur système, mais bien simple utilisateur d'un service d'hébergement. Les explications sont fondées sur cPanel.
Les chapitres suivants construisent sur ce site vierge en présentant, de manière thématique, les fonctionnalités utiles pour les utilisateurs, en commençant par celles utiles avant de créer la première page de contenu (la configuration et les menus), puis en présentant les extensions et les possibilités de développement de thèmes simples.
Avant de partir sur les études de cas, les auteures expliquent ce qu'il faut faire une fois le site lancé pour le maintenir en vie : s'assurer qu'il est bien référencé, fidéliser les visiteurs, mettre Joomla! à jour.
Ainsi, il est prévu pour parer les lecteurs de toutes les compétences nécessaires pour réaliser un site Web réussi. À lui seul, il donne toutes les clés nécessaires. Notamment, une annexe présente une série de problèmes classiques et la manière de les résoudre ; une autre présente une série de ressources utiles pour approfondir ses connaissances. Par contre, il ne faut pas chercher en lui une présentation avancée des concepts derrière l'implémentation de Joomla! ou pour le personnaliser jusqu'aux tréfonds, ce n'est pas son objectif : il reste relativement orienté vers les utilisateurs débutants, tout au long de l'ouvrage (un glossaire présentant les termes techniques pas forcément connus mais souvent rencontrés dans l'univers Joomla! est disponible à la fin de l'ouvrage).
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Coder efficacement
Bonnes pratiques et erreurs à éviter (en C++)
Résumé de l'éditeur
Développer une application peut rapidement devenir un enfer si vous n'avez pas anticipé certaines difficultés et fait les bons choix au moment de sa conception. Ce livre vous aidera à vous poser les bonnes questions et à tirer le meilleur parti de la programmation objet, en particulier en C++, sans tomber dans les pièges les plus fréquents. Il clarifie certains concepts délicats et passe en revue un ensemble de bonnes pratiques, qui rendront vos projets plus évolutifs et plus faciles à maintenir.
Organisé en quatre parties, il traite successivement :
- des principes de base qui devraient être respectés quel que soit le langage de programmation ou le paradigme utilisé ;
- des fondements de la programmation orientée objet et des principes qui sont applicables en toutes circonstances dès lors qu'on utilise ce paradigme ;
- des principes spécifiques au C++ ;
pour se terminer sur une étude de cas approfondie détaillant les différentes étapes de conception d'un jeu d'échecs en conformité avec les principes énoncés précédemment. L'annexe vous apporte quelques compléments sur des aspects transversaux tels que la compilation ou les outils d'aide au développement.
Sa présentation sous forme de fiches thématiques permet aussi bien une lecture continue qu'un accès direct aux points qui vous intéressent.
Écrit sur un ton vivant et personnel, ce livre vous présente un point de vue résolument engagé en faveur d'une approche moderne de la programmation.
Avez-vous lu ce livre ? Qu'en pensez-vous ? 10 commentaires
Édition : D-BookeR
ISBN13 : 978-2-8227-0166-2
- Quelques concepts de base
- Les fondements de la programmation orientée objet
- Et le C++ dans tout ça ?
- Étude de cas : un jeu d'échecs en 3000 lignes de code
- Annexe
Bien peu d'ouvrages se concentrent sur la manière de bien programmer. À l'instar de Effective Java (Joshua Bloch), ce livre a pour objectif de présenter les principes à respecter pour obtenir un code maintenable, évolutif. Il n'est pas spécifique au C++ dans ses deux premières parties : les principes généraux qui y sont énoncés sont valables pour une série de langages (de manière générale quand il s'agit d'écrire du code lisible ou d'éviter les effets de bord, plus spécifiquement pour l'orienté objet avec les grands principes que sont la substitution ou l'ouvert/fermé).
L'un de ses points forts est que l'auteur fait preuve de pragmatisme : ces préceptes sont prévus pour faciliter la maintenance du code lors de son évolution, mais leur respect peut mener à un code plus compliqué à écrire, à plus de réflexion avant de se lancer au clavier. Si ces évolutions sont très peu probables, inutile d'ajouter une couche de complexité au projet pour en faciliter l'ajout ultérieur (« la solution la plus simple est toujours la meilleure »).
Les premières parties du livre sont alors mises en application dans un jeu d'échecs en console. Bien que l'exemple soit relativement simple, bien coder l'application (pour en faciliter les évolutions, tant dans la jouabilité que dans l'interface) requiert de se poser, de réfléchir avant d'agir. Il s'agit d'ailleurs d'un des points sur lesquels l'auteur insiste : pour produire du code, une application de qualité, il n'est pas suffisant de s'installer derrière un clavier et de taper à un rythme effréné.
L'application des principes se fait exclusivement en C++, avec une certaine utilisation de C++11 là où le standard apporte au code une lisibilité supplémentaire ou de meilleurs messages d'erreur. L'ouvrage suppose cependant une connaissance de C++03, le standard précédent du langage : les nouveautés sont expliquées afin que le lecteur comprenne l'avantage d'utiliser les nouvelles constructions. Par contre, il ne s'agit pas d'un ouvrage traitant en long et en large du nouveau standard.
Certains patrons de conception sont aussi présentés, au niveau de l'étude de cas, afin de résoudre des problématiques propres au développement logiciel. Bien que le paradigme orienté objet soit omniprésent, l'œuvre n'est pas intégriste : d'autres paradigmes implémentés par C++, notamment la programmation générique, sont employés afin de limiter la quantité de code à écrire.
L'organisation est plus proche d'une série de fiches thématiques que d'une narration continue : la partie plus « théorique » de l'ouvrage n'est pas tant prévue pour une lecture linéaire qu'un piochage des éléments intéressants à un instant donné.
Ce livre vivant peut donc être recommandé chaudement à tous les développeurs. Les débutants y trouveront diverses manières d'améliorer leur code, mais ils n'en bénéficieront vraiment qu'avec de l'expérience de la programmation, notamment en C++ (l'annexe présente d'ailleurs un aperçu général de la chaîne de compilation en C++, souvent mystifiante pour ce public cible). Les plus chevronnés pourront découvrir de nouvelles pratiques pour améliorer leur manière de développer.
Avez-vous lu ce livre ? Qu'en pensez-vous ? 10 commentaires
Programmer en Fortran
Fortran 90 et ses évolutions : Fortran 95, 2003 et 2008
Résumé de l'éditeur
Bien qu'existant depuis de nombreuses décennies, Fortran a toujours su évoluer pour garder sa place auprès de langages plus récents dans le domaine du calcul scientifique.
Cet ouvrage est destiné à tous ceux qui souhaitent maîtriser la programmation en Fortran : étudiants des disciplines scientifiques, chercheurs ou ingénieurs, enseignants de ce langage.
Il a été conçu sous forme d'un cours complet, chaque notion importante étant illustrée d'un programme d'exemple montrant comment la mettre en ?uvre dans un contexte réel. La plupart des chapitres sont dotés d'exercices corrigés en fin de volume. Ils vous permettront de contrôler l'acquisition de vos connaissances.
La présente édition tient compte des différentes versions du langage. L'exposé privilégie Fortran 90/95, qui reste toujours très utilisé, les différences avec Fortran 77 et les apports des normes 2003 et 2008 étant mentionnés au fil du texte.
Deux nouvelles annexes présentent les possibilités de programmation orientée objet offertes par Fortran 2003, ainsi que les autres apports des normes Fortran 95, 2003 et 2008.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Eyrolles
ISBN13 : 978-2-2121-4020-0
- Généralités sur Fortran 90
- Les types de base de Fortran 90 : integer, real, double précision et logical
- Les expressions et l'instruction d'affectation
- Les instructions de contrôle
- Les tableaux
- Les entrées-sorties standards
- Les sous-programmes et les fonctions
- Les chaînes de caractères
- Les structures (ou types dérivés)
- La gestion dynamique et les pointeurs
- Les modules et la généricité
- Les fichiers
Annexes
- Les procédures intrinsèques de Fortran 90
- Les variantes des types de base
- Le type complex
- Les descripteurs de format
- Les priorités des opérateurs
- Les instructions de déclaration
- L'ordre des instructions
- La programmation objet depuis Fortran 2003
- Les nouveautés de Fortran 95, 2003 et 2008
- Les instructions obsolètes
- Correction des exercices
Fortran n'est assurément pas le langage à la mode dans la communauté informatique au sens large : l'Histoire le retient comme l'un des tout premiers langages de programmation (il remonte aux années 1950), mais il reste couramment utilisé aujourd'hui — même si son emploi actuel ne ressemble en rien à ses débuts sur cartes perforées. Ce livre se place résolument au début de la renaissance de Fortran : il s'axe exclusivement autour de la version 90 et l'antique FORTRAN 77 est à peine cité dans le texte principal. En effet, le passage de l'une à l'autre marque une vraie rupture pour les développeurs. La rétrocompatibilité est cependant entièrement conservée, c'est pourquoi les constructions désuètes héritées de FORTRAN 77 sont expliquées dans une annexe — principalement pour faciliter la lecture et la compréhension du code de cette époque.
L'ouvrage, fort académique, a l'avantage d'être pédagogique et d'introduire progressivement les différentes notions, en partant de connaissances assez limitées de la programmation impérative. Il donne également un aperçu très large des possibilités de Fortran, y compris des fonctionnalités les plus récentes telles que la programmation orientée objet. Certains autres aspects, comme les cotableaux, sont à peine survolés — le livre ayant une longueur limitée. Un point gênant pour les plus débutants est l'impasse totale sur les aspects pratiques : l'auteur ne cite ni compilateur ni environnement de développement pour démarrer avec Fortran, pas même en annexe ; certes, ces informations peuvent rapidement devenir dépassées, mais elles aident à entrer dans la pratique du langage.
Toutefois, la lecture laisse une désagréable impression de manque de mise à jour. Outre la mise en page vieillotte, certains exemples font encore référence à des montants en francs et à des taux de TVA de 18,6 % (héritage français du début des années 1990). Les références aux versions plus récentes de Fortran donnent parfois l'impression d'avoir été ajoutées à la va-vite. De même, l'ouvrage cite régulièrement les avantages de Fortran par rapport aux autres langages pour une utilisation scientifique, mais les exemples sont rarement tirés de ce domaine ; les points mis en avant ont surtout trait à la syntaxe de manipulation des tableaux, qui ne sont absolument pas comparés aux langages de référence actuels, à l'instar de MATLAB (qui n'est même pas cité).
Le style de rédaction pourra rebuter plus d'un lecteur. Il est très académique, parfois plus proche du livre de référence que du cours (dix annexes), avec une bonne quantité de notes de bas de page et de remarques renvoyant vers la suite de l'ouvrage. L'auteur se perd régulièrement dans des détails de bas niveau, moins importants à l'heure actuelle, comme l'arithmétique des compléments à deux, les nombres en virgule flottante en base seize et autres détails des architectures IBM relativement anciennes.
Globalement, l'ouvrage apporte des bases de programmation en Fortran moderne largement suffisantes pour bien écrire de grandes quantités de code. Les exercices permettent de bien assimiler la matière. Cependant, pour débuter avec le langage, il reste souvent trop abstrait : la partie théorique, parfois assez consistante, vient toujours avant les exercices ; le lien avec la pratique de développement reste relativement ténu.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Programmer efficacement en C++
42 conseils pour mieux maîtriser le C++ 11 et le C++ 14
Résumé de l'éditeur
Le C++ 11 et plus encore le C++ 14 sont des évolutions significatives du langage C++. Cet ouvrage vous aidera non seulement à découvrir ce qui a changé, mais aussi à écrire du code qui soit correct, efficace, facile à maintenir et à porter. Son objectif n'est pas de décrire ce que vous devez faire ou ne pas faire, mais de vous apporter une compréhension en profondeur du fonctionnement de C++11 et de C++14.
Il est structuré en 42 conseils qui vous enseigneront à la fois les bonnes pratiques et les pièges à éviter.
Vous voulez :
- comprendre les différentes formes de déduction de type,
- savoir quand (ne pas) utiliser les déclarations auto,
- découvrir pourquoi les fonctions membres const doivent être sûres vis-à-vis des threads,
- apprendre à implémenter l'idiome Pimpl avec std::unique_ptr,
- comprendre pourquoi éviter le mode de capture par défaut dans les expressions lambda,
- assimiler les différences entre std::atomic et volatile.
Toutes les réponses se trouvent ici. Elles sont indépendantes de la plate-forme et conformes à la norme. Cet ouvrage présente un C++ portable.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Dunod
ISBN10 : 2-10-074391-0
ISBN13 : 9782100743919
- Comprendre les types
- Les fonctions auto
- Migrer vers les versions modernes du C++
- Les pointeurs intelligents
- Les références Rvalue, les Move semantics et le Perfect forwarding
- Les Lamdba expressions
- Le runtime d'accès concurrentiel pour C++
Scott Meyers est un gourou du C++, maintenant parti à la retraite. Sa dernière contribution à l'environnement C++ se veut magistrale, en détaillant les points les moins bien compris et utilisés des dernières itérations de la norme, c'est-à-dire C++11 et C++14, avec un code dans un style résolument moderne. L'auteur exploite dans cet ouvrage sa participation active dans la préparation des nouvelles versions du langage, en expliquant les raisons de l'ajout de l'une ou l'autre fonctionnalité. Il n'est pas avare en clarifications dans l'implémentation des compilateurs les plus courants. Globalement, ce livre fournit une vue approfondie des points les plus délicats des nouveautés syntaxiques.
Clairement, le livre ne s'adresse pas aux débutants : pour en profiter, il est nécessaire d'avoir déjà une certaine exposition aux nouveautés de C++11 et de C++14, avec une bonne expérience de C++ ; ce texte n'est pas un guide complet sur le C++ moderne et les derniers ajouts au langage. Sans ces connaissances préalables, l'ouvrage se montrera très ardu à aborder : l'auteur descend dans les détails les plus sombres de la norme, expose au grand jour toute une série de cas limites, le tout dans un style assez dense (à peine plus de trois cents pages pour autant de contenu, c'est un exploit, surtout que l'écriture reste lisible).
De par cette conception, le livre ravira cependant un public très large. Ceux qui n'ont pas encore une grande compréhension des avancées du C++ moderne auront une explication rationnelle des nouveaux concepts, les plus avancés se réjouiront du style d'écriture orienté vers un usage à long terme : il ne contient pas vraiment de solution directe à des problèmes rencontrés, mais entretient une culture C++ moderne. La performance du code généré est un point sur lequel l'auteur insiste, parfois lourdement.
Chaque « conseil » s'achève toujours sur un bref résumé des points essentiels à retenir. Cependant, la terminologie de « conseil » est très mal adaptée : il s'agit plutôt de séquences sur un sujet donné, préférant l'explorer à fond, en présentant les diverses alternatives et les avantages et défauts des unes et des autres. D'ailleurs, les points spécifiques à C++11 ou C++14 sont indiqués, en précisant ce qui est valable dans une version et pas l'autre, mais aussi tout ce qui s'applique depuis C++98.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Apprentissage machine
De la théorie à la pratique - Concepts fondamentaux en Machine Learning
Résumé de l'éditeur
Apprentissage machine et intelligence artificielle
L'apprentissage machine est l'un des domaines phares de l'intelligence artificielle. Il concerne l'étude et le développement de modèles quantitatifs permettant à un ordinateur d'accomplir des tâches sans qu'il soit explicitement programmé à les faire. Apprendre dans ce contexte revient à reconnaître des formes complexes et à prendre des décisions intelligentes. Compte tenu de toutes les entrées existantes, la complexité pour y arriver réside dans le fait que l'ensemble des décisions possibles est généralement très difficile à énumérer. Les algorithmes en apprentissage machine ont par conséquent été conçus dans le but d'acquérir de la connaissance sur le problème à traiter en se basant sur un ensemble de données limitées issues de ce problème.
Un ouvrage de référence
Cet ouvrage présente les fondements scientifiques de la théorie de l'apprentissage supervisé, les algorithmes les plus répandus développés suivant ce domaine ainsi que les deux cadres de l'apprentissage semi-supervisé et de l'ordonnancement, à un niveau accessible aux étudiants de master et aux élèves ingénieurs. Nous avons eu ici le souci de fournir un exposé cohérent reliant la théorie aux algorithmes développés dans cette sphère. Mais cette étude ne se limite pas à présenter ces fondements, vous trouverez ainsi quelques programmes des algorithmes classiques proposés dans ce manuscrit, écrits en langage C (langage à la fois simple et populaire), et à destination des lecteurs qui cherchent à connaître le fonctionnement de ces modèles désignés parfois comme des boîtes noires.
À qui s'adresse ce livre ?
- Aux élèves ingénieurs, étudiants de master et doctorants en mathématiques appliquées, algorithmique, recherche opérationnelle, gestion de production, aide à la décision.
- Aux ingénieurs, enseignants-chercheurs, informaticiens, industriels, économistes et décideurs ayant à résoudre des problèmes de classification, de partitionnement et d'ordonnancement à large échelle.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Eyrolles
ISBN10 : 2-212-13800-8
ISBN13 : 978-2-212-13800-9
- Introduction à la théorie de l'apprentissage
- Algorithmes d'optimisation convexe non-contrainte
- Classification bi-classes
- Classification multi-classes
- Apprentissage semi-supervisé
- Apprentissage de modèles d'ordonnancement
- Annexes (rappels de probabilités, code programmes)
La science des données est un mot clé à la mode actuellement, puisque les entreprises cherchent à tirer le meilleur profit des informations enregistrées. L'un de ses principaux outils est l'apprentissage automatique, domaine actuellement aussi en explosion : il attire l'attention et les auteurs. Certains ouvrages ont une vocation purement pratique, en ignorant complètement les détails des algorithmes, ce qui empêche de comprendre ce qui se passe en cas de résultats insatisfaisants. Ce livre ne se place pas dans cette optique : il descend au cœur des méthodes d'apprentissage, avec les détails mathématiques afférents, de telle sorte que ces outils ne soient pas des boîtes noires. En cela, il s'oriente très clairement vers un public de chercheurs dans le domaine, d'utilisateurs conscients de leurs outils.
C'est aussi, probablement, son point faible : les détails mathématiques occultent le reste du contenu. Le formalisme y est poussé très loin, notamment pour s'accrocher autour de l'axe du principe de minimisation du risque empirique : cette organisation confère au document une remarquable cohérence, mais ignore les questions de mise en œuvre. Le titre indique pourtant un voyage de la théorie à la pratique : cette dernière est résumée à l'implémentation (en C, parfois K&R !) des algorithmes. Les traces d'utilisation réelle des algorithmes sont ténues… et nulle trace de motivation par des applications réelles du contenu. En réalité, en opposition avec son titre, le livre se destine, à peu près exclusivement, aux chercheurs, avec une abondance de preuves mathématiques, mais aussi de références vers la littérature.
On peut pointer quelques manques dans l'ouvrage, comme les arbres de décision et leurs multiples variantes comme les forêts aléatoires, mais aussi la régression, qui n'est pas traitée explicitement. Ils ne sont cependant pas gênants, bon nombre d'algorithmes sont déjà au programme (perceptrons, SVM, AdaBoost, par exemple). Par contre, la question de l'évaluation de la qualité d'un modèle généré n'est pas véritablement à l'ordre du jour, sauf dans le chapitre sur l'apprentissage de fonctions d'ordonnancement.
La mise en page est soignée et aide généralement la lecture. Certaines parties du texte sont encadrées, notamment des sections qui mettent en évidence des notions centrales ou qui récapitulent le chapitre. Cependant, les mêmes artéfacts esthétiques sont employés pour des preuves : sont-elles alors mises en avant par rapport au reste du texte ? Ce n'est pas clair.
Globalement, l'ouvrage est complet et axé sur la théorie, difficile d'accès pour des personnes n'ayant pas eu une formation universitaire poussée en mathématiques. Celui qui souhaite se mettre à l'apprentissage automatique dans la pratique en retirera néanmoins quelques avantages, principalement pour la désacralisation des méthodes employées.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Rercherche d'information
Applications, modèles et algorithmes — data mining, décisionnel et big data
Résumé de l'éditeur
Le premier ouvrage francophone sur les algorithmes qui sous-tendent les technologies de big data et les moteurs de recherche !
Depuis quelques années, de nouveaux modèles et algorithmes sont mis au point pour traiter des données de plus en plus volumineuses et diverses. Cet ouvrage présente les fondements scientifiques des tâches les plus répandues en recherche d'information (Rl), tâches également liées au data mining, au décisionnel et plus générale-ment à l'exploitation du big data.
La deuxième édition de cet ouvrage propose un exposé détaillé et cohérent des algorithmes classiques développés dans ce domaine, abordable par des lecteurs qui cherchent à connaître le mécanisme des outils quotidiens d'Internet. De plus, le lecteur approfondira les concepts d'indexation, de compression, de recherche sur le Web, de classification et de catégorisation, et pourra prolonger cette étude avec les exercices corrigés proposés en fin de chapitre.
Ce livre s'adresse tant aux chercheurs et ingénieurs qui travaillent dans le domaine de l'accès à l'information et employés de PME qui utilisent en profondeur les outils du webmarketing, qu'aux étudiants de Licence, Master, écoles d'ingénieurs ou doctorants qui souhaitent un ouvrage de référence sur la recherche d'information.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Eyrolles
ISBN10 : 2-212-67376-0
ISBN13 : 978-2-212-67376-0
- Représentation et indexation
- Recherche d'information
- Recherche sur le Web
- Catégorisation de documents
- Partitionnement de documents
- Réseaux de neurones profonds
- Recherche de thèmes latents
- Considérations pratiques
L'exploitation des données, dans toute la généricité des termes employés, est un terme qui revient très régulièrement dans toutes les libraires, avec quantité d'ouvrages sur le sujet. Cependant, fort peu nombreux sont ceux qui traitent du cas très particulier où les données sont textuelles : c'est exactement ce trou que veut combler ce livre. Son titre indique qu'il portera principalement sur la manière de rechercher de l'information utile dans une masse de documents, tel un moteur de recherche. C'est d'ailleurs à ce thème que sont dédiés les premiers chapitres. Les deux auteurs s'ouvrent à des sujets connexes qui traitent de l'exploitation d'une quantité de textes, comme leur classification ou l'extraction de thèmes latents. On peut regretter que certains mots aient été ajoutés à la couverture sans qu'ils soient réellement traités dans le livre : « data mining », « big data »…
Ces trois cents pages explorent le domaine avec une approche mathématique : les auteurs ne vous présentent pas d'outil-boîte noire à utiliser pour obtenir un résultat sans en comprendre le fonctionnement — ni les hypothèses à poser pour donner des résultats en des temps raisonnables. Les auteurs y passent d'ailleurs un certain temps. Au contraire, l'aspect pratique est relativement délaissé dans l'ouvrage, se concentrant sur les concepts principalement utilisés dans le domaine. Ainsi, contrairement à ce que la quatrième de couverture promet, il ne s'adresse pas tellement à un public de professionnels, mais plutôt d'étudiants et de chercheurs, dont l'objectif est d'atteindre un bon niveau de compréhension du domaine. En cela, le grand nombre de références vers des publications scientifiques de pointe pour approfondir les sujets abordés est une bonne chose. L'ouvrage pourra rester des années dans une bibliothèque sans prendre une ride.
Cependant, après avoir fini la lecture, difficile de mettre en pratique le contenu de l'ouvrage : c'est une chose que l'on peut regretter dans ce livre. Peu d'outils pratiques sont cités : quelques-uns sont égrainés à travers le texte (auquel cas peu de choix est proposé au lecteur), le dernier chapitre se consacre exclusivement à une liste raisonnée de logiciels. Par contre, leur mise en pratique est relativement occultée — à moins que l'on veuille écrire soi-même le code de chacun des algorithmes proposés (ils sont tous détaillés, pas simplement esquissés).
Le sujet est traité de manière relativement exhaustive et progressive, sans précipitation malvenue vers l'un ou l'autre sujet hyper pointu. Quand plusieurs formules sont régulièrement utilisées en pratique, les variantes sont détaillées et justifiées, pour indiquer dans quel cas l'une ou l'autre aura plus de sens. Néanmoins, le style est relativement sec, les auteurs entrent rapidement dans le vif du sujet, sans forcément chercher à justifier le pourquoi du comment. Certaines parties sont structurées au point de mettre d'abord les détails mathématiques, puis quelques utilisations potentielles par après — ce qui aura du mal à accrocher un lecteur qui ne voit pas la vie au travers d'équations. À ce niveau, quelques applications numériques ne feraient pas de mal dans le texte (elles sont rares), car elles aident à bien comprendre la mise en pratique de formules : le lien entre des séries de mots et des suites de chiffres n'est jamais aisé.
Au niveau de la structure globale de l'ouvrage, on peut principalement regretter que l'introduction de l'apprentissage automatique soit si tardive. Certes, cela aide à limiter les prérequis. Cependant, ce choix oblige les auteurs à de vagues formulations indiquant qu'il est possible d'utiliser ce genre d'algorithmes à certains endroits : le niveau de détail est insuffisant pour bien comprendre les tenants et les aboutissants de cette utilisation.
En mode mineur, on peut reprocher à certaines figures d'être relativement peu claires à comprendre. Une bonne partie du contenu du livre se trouve dans les exercices, qui donnent l'impression de ramasser toutes les parties théoriques moins importantes (les auteurs y présentent notamment l'algorithme AdaBoost, plutôt que de l'inclure dans la section sur les algorithmes d'apprentissage). Le chapitre sur les réseaux neuronaux profonds laisse sur sa faim : il présente les concepts essentiels aux réseaux neuronaux tels qu'ils étaient utilisés dans les années 1980 et 1990 (avant leur qualificatif de profond), mais la pratique dans le cadre de la recherche d'information est éclipsée en trois pages.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Data Scientist et langage R
Guide d'autoformation à l'exploitation des Big Data
Résumé de l'éditeur
Tous les experts s'accordent à dire que 90% des usages du Big Data proviennent de l'utilisation des data sciences. L'objectif de ce livre est de proposer une formation complète et opérationnelle sur les data sciences qui permet de délivrer des solutions via l'usage du langage R.
Ainsi, l'auteur propose un parcours didactique et professionnalisant qui, sans autre pré-requis qu'un niveau Bac en mathématiques et une grande curiosité, permet au lecteur :
- de s'intégrer à une équipe de data scientists,
- d'aborder des articles de recherche possédant une haute teneur en mathématiques,
- le cas échéant de développer en langage R, y compris des algorithmes nouveaux et de beaux graphiques,
- ou tout simplement de manager une équipe projet comprenant des data scientists, en étant à même de dialoguer avec eux de façon efficace.
Le livre ne se cantonne pas aux algorithmes du "machine learning", il aborde divers sujets importants comme le traitement du langage naturel, les séries temporelles, la logique floue, la manipulation des images.
La dynamique de l'ouvrage soutient le lecteur pas à pas dans sa découverte des data sciences et l'évolution de ses compétences théoriques et pratiques. Le praticien en exercice y découvrira également de nombreux savoir-faire à acquérir et le manager pourra surfer sur l'ouvrage après avoir lu attentivement le bestiaire des data sciences de l'introduction, qui sans inexactitude ou vulgarisation excessive présente le sujet en faisant l'économie de mathématiques ou de formalismes dissuasifs.
Les programmes R décrits dans le livre sont accessibles en téléchargement sur le site www.editions-eni.fr et peuvent être exécutés pas à pas.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Eni
ISBN10 : 2-409-00043-6
ISBN13 : 978-2-409-00043-0
- Introduction
- Premiers pas avec R
- Maîtriser les bases
- Techniques et algorithmes incontournables
- Cadre méthodologique du data scientist
- Traitement du langage naturel
- Graphes et réseaux
- Autres problèmes, autres solutions
- Feature Engineering
- Compléments utiles
- Annexes
La « science des données » se veut à la mode, ce qui incite à la publication de nombreux livres sur ce sujet. Les axes d'approche sont multiples et variés : du côté purement académique (les algorithmes d'apprentissage, étudiés dans l'abstrait) à l'extrême pragmatique (utiliser ces algorithmes comme des boîtes noires). Cet ouvrage se place entre ces deux extrêmes, ce qui le rend, de prime abord, intéressant pour un public large. La présence du terme (voire jargonnerie) « big data » donne l'impression qu'il sera sujet de grands volumes de données, mais l'auteur n'en traite que très rapidement, se focalisant sur les aspects de traitement des données, de leur visualisation et de l'application des algorithmes principaux d'apprentissage automatique.
D'une manière générale, ce livre déçoit par son manque de structure. Les sections se succèdent sans nécessairement avoir de lien entre elles, en présentant parfois approximativement des techniques issues des statistiques et de l'apprentissage automatique sans vraiment de recul. Par exemple, on aura droit à une présentation des data frames de R, très rapidement suivie de la notion d'arbre de décision — sans que les deux aient l'air liés d'une quelconque manière — ou encore à RCommander juste après une introduction à la notion de variable aléatoire. Cette construction déstructurée pourrait être avantageuse pour un public plutôt débutant, sans bagage substantiel en mathématiques ou en programmation, qui aura ainsi la possibilité de tester directement la syntaxe de R entre le chargement d'un jeu de données et son exploitation par apprentissage automatique, sans s'alourdir de considérations autres que pratiques. Néanmoins, une structure assumée aiderait certains à comprendre… et surtout à utiliser l'ouvrage comme référence.
Cet ouvrage contient une introduction à la programmation en R de manière intuitive, renforcée par quantité d'exemples : elle devrait donner les bases à ceux qui n'ont que très peu touché à la programmation, des bases suffisantes pour écrire leur propre code proprement — même en utilisant l'approche orientée objet. Cependant, par la suite, l'auteur ne convainc pas réellement que R est l'outil le plus approprié pour ce cas d'utilisation, notamment à cause du nombre d'avertissements égrainés tout au long de l'ouvrage, autant d'indicateurs que le langage est piégeur. Un bon nombre d'outils est présenté, mais très rarement approfondi : par exemple, dplyr est très rapidement présenté, mais tout aussi vite oublié, sans montrer réellement ses apports par rapport aux fonctionnalités de base de R.
Le premier chapitre du livre est néanmoins très intéressant, notamment pour son bestiaire de la science des données : tous les concepts de base y sont représentés,
dont une série graphiquement. Les explications sont succinctes, parfois approximatives, mais facilitent la compréhension du domaine dans son ensemble, chaque élément menant au suivant.
L'autre chapitre qui fait sortir ce livre de la moyenne concerne le suivi d'un projet de développement dans le domaine de la science des données. Il devrait aider le lecteur à
s'organiser en situation réelle, notamment en pointant les différences par rapport aux cycles de développement logiciel.
Tout au long de l'ouvrage, l'auteur ne suit qu'une seule approche : comprendre le jeu de données (à l'aide de graphiques, principalement) aide à le modéliser, c'est-à-dire à choisir et appliquer un algorithme d'apprentissage automatique. L'approche inverse, qui consiste à exploiter le résultat d'algorithmes d'apprentissage pour analyser les données, n'est reléguée qu'à quelques notes éparses (à peine parle-t-on de l'importance des variables déterminée par une forêt aléatoire). On a là l'impression que l'auteur a une bonne expérience du domaine, avec un biais très fort envers les solutions très pragmatiques, mais nettement moins envers la recherche, toujours florissante dans le domaine — un comble, quand l'un des objectifs annoncés du livre est de mener à un niveau de compréhension suffisant du domaine pour aborder la littérature scientifique de pointe. Les notions théoriques ne sont toutefois pas oubliées, avec des présentations assez détaillées en ce qui concerne les probabilités et variables aléatoires (jusqu'à préciser la définition d'une tribu !) ou encore l'algèbre linéaire — sans que ces rappels soient réellement mis en rapport avec le reste de l'ouvrage.
Certains sujets sont abordés de manière extrêmement superficielle (comme le traitement d'images ou encore la logique floue), les rendant strictement inutiles. D'autres le sont nettement plus, mais sans que ce soit justifié (le niveau de détail des variables aléatoires ou encore l'optimisation par essaims) : ces outils ne sont pas mis en lien avec le reste des thèmes abordés.
En résumé, ce livre pourrait être utile pour des débutants dans le domaine, qui n'ont pas une grande expérience dans le domaine ou un bagage mathématique poussé. Ces gens pourront profiter du livre, en omettant les parties trop mathématiques abstraites. Cela ne signifie pas que, pour ce public, tous les objectifs annoncés sont atteints. Difficile d'être pleinement opérationnel après uniquement la lecture de ce livre, de « s'autoformer », même en approfondissant chacun des exemples. Par contre, le niveau d'exposition devrait être suffisant pour dialoguer en profondeur avec des personnes dont la science des données est le domaine de prédilection.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Big Data et Machine Learning
Les concepts et les outils de la data science
Résumé de l'éditeur
Cet ouvrage s'adresse à tous ceux qui cherchent à tirer parti de l'énorme potentiel des « technologies Big Data », qu'ils soient data scientists, DSI, chefs de projets ou spécialistes métier.
Le Big Data s'est imposé comme une innovation majeure pour toutes les entreprises qui cherchent à construire un avantage concurrentiel grâce à l'exploitation de leurs données clients, fournisseurs, produits, processus, machines, etc.
Mais quelle solution technique choisir ? Quelles compétences métier développer au sein de la DSI ?
Ce livre est un guide pour comprendre les enjeux d'un projet Big Data, en appréhender les concepts sous-jacents (en particulier le Machine Learning) et acquérir les compétences nécessaires à la mise en place d'un data lab.
Il combine la présentation :
- de notions théoriques (traitement statistique des données, calcul distribué...) ;
- des outils les plus répandus (écosystème Hadoop, Storm...) ;
- d'exemples d'applications ;
- d'une organisation typique d'un projet de data science.
Cette deuxième édition est complétée et enrichie par des mises à jour sur les réseaux de neurones et sur le Deep Learning ainsi que sur Spark..
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Dunod
ISBN10 : 2-100-75463-7
ISBN13 : 978-2-100-75463-2
Les fondements du Big Data
- Les origines du Big Data
- Le Big Data dans les organisations
- Le mouvement NoSQL
- L'algorithme MapReduce et le framework Hadoop
Le métier de data scientist
- Le quotidien du data scientist
- Exploration et préparation de données
- Le Machine Learning
- La visualisation des données
Les outils du Big Data
- L'écosystème Hadoop
- Analyse de logs avec Pig et Hive
- Les architectures lambda
- Apache Storm
Cet ouvrage concerne deux mots qui reviennent régulièrement à l'actualité : le « big data » et le « machine learning ». Il dresse effectivement un tour d'horizon assez large de cet univers : toutes les étapes d'un projet d'exploitation de données sont traitées, depuis les questions auxquelles on peut s'attendre à trouver une réponse au traitement des données, depuis le déploiement d'une grappe de calcul jusqu'aux algorithmes qui y tourneront, sans oublier la visualisation.
Le principal avantage du livre est qu'il présente, dans un format compact, l'ensemble des notions de base utiles à toute personne devant intervenir dans un projet d'exploitation de données. Son public est donc assez large, le contenu ne nécessite bien souvent pas une longue expérience en informatique pour s'y retrouver : les auteurs assument entièrement ce choix. Les explications sont généralement claires, ce qui cadre bien avec l'objectif ; les nombreuses illustrations aident également. Malgré les quatre auteurs, l'ensemble est extrêmement fluide.
Le livre n'hésite pas à tordre le cou à certaines idées reçues. Non, la science de données n'est pas neuve : ce qui l'est, c'est la capacité (technique) de gérer de grands volumes d'informations. Non, de grandes quantités de données ne résoudront pas tout problème dans une entreprise.
Les aspects réellement techniques ne sont pas oubliés. Le livre s'appesantit sur l'architecture MapReduce avec l'outil Hadoop pour déployer les calculs à large échelle, mais n'oublie pas de présenter YARN ou Drill. Conformément à l'esprit des auteurs, l'installation des outils est mise sur le côté, puisqu'ils préfèrent parler de distributions qui facilitent en bonne partie le travail et sont très bien adaptées à ceux qui débutent dans le domaine.
On peut cependant noter l'un ou l'autre point faible. Le côté apprentissage automatique est extrêmement limité, malgré sa présence dans le titre. La section sur l'apprentissage profond dénote fortement avec le reste du chapitre, étant extrêmement mathématique (au contraire du reste de l'ouvrage !). Une seule étude de cas est présentée, ce qui est dommage, notamment au niveau de la partie sur les outils.
Pour résumer, ce livre est à mettre entre toutes les mains des personnes qui aimeraient découvrir le domaine de l'exploitation des données à grande échelle. Elles auront un aperçu complet et bon nombre de pointeurs pour continuer leur apprentissage.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Maîtrisez l'utilisation des technologies Hadoop
Initiation à l'écosystème Hadoop
Résumé de l'éditeur
Le manuel d'apprentissage de référence
Cet ouvrage est un manuel d'apprentissage technique qui a été rédigé pour toute personne souhaitant développer des compétences sur une ou plusieurs technologie(s) de l'écosystème Hadoop. Il permet d'utiliser de façon professionnelle 18 technologies clés de l'écosystème Hadoop : Spark, Hive, Pig, Impala, ElasticSearch, HBase, Lucene, HAWQ, MapReduce, Mahout, HAMA, Tez, Phoenix, YARN, ZooKeeper, Storm, Oozie et Sqoop.
L'ouvrage permet d'initier les débutants pour les emmener vers une utilisation professionnelle de ces technologies. Pour faciliter la compréhension de l'ouvrage, chaque chapitre s'achève par un rappel des points clés et un guide d'étude qui permettent au lecteur de consolider ses acquis. Des compléments web sont également disponibles en téléchargement sur le site www.editions-eyrolles.com/dl/0067478.
Au fil de la lecture de cet ouvrage, vous allez comprendre les approches conceptuelles de chacune de ces technologies pour rendre vos compétences indépendantes de l'évolution d'Hadoop. Vous serez finalement capable d'identifier les portées fonctionnelle, stratégique et managériale de chacune de ces technologies.
Ce livre est un guide pour comprendre les enjeux d'un projet Big Data, en appréhender les concepts sous-jacents (en particulier le Machine Learning) et acquérir les compétences nécessaires à la mise en place d'un data lab.
À qui cet ouvrage s'adresse-t-il ?
- Aux consultants BI/big data, data scientists, chargés d'études et chefs de projets data
- Aux étudiants désireux de s'orienter vers le big data
- Plus généralement, à tout professionnel souhaitant prendre le virage du big data ou souhaitant valoriser les données de son entreprise
Avez-vous lu ce livre ? Qu'en pensez-vous ? 2 commentaires
Édition : Eyrolles
ISBN10 : 2-212-67478-3
ISBN13 : 978-2-212-67478-1
Les modèles de calcul de l'écosystème Hadoop
- Les modèles de calcul batch
- Les modèles de calcul interactifs
Les abstractions des modèles de calcul d'Hadoop
- Les langages d'abstraction d'Hadoop
- Le SQL sur Hadoop
Le stockage de données en Hadoop
- Généralités sur le stockage des données
- HBase
- L'indexation de contenu
- Apache Lucene
- ElasticSearch
La gestion du cluster Hadoop
- YARN
- Apache ZooKeeper
Le streaming en temps réel dans Hadoop
- Apache Storm
Les outils annexes de l'écosystème Hadoop
- Oozie et Sqoop
- Hue et Ambari
Adoption à grande échelle d'Hadoop
- Distributions d'Hadoop
- Solutions Hadoop embarquées
- Hadoop dans le Cloud
- Le big data
Hadoop est probablement l'une des technologies phares actuelles dès que l'on s'approche du traitement de données à grande échelle. Cependant, l'écosystème ne cesse de grandir, avec de plus en plus de composants à connaître pour bien exploiter sa grappe de serveurs Hadoop. Ce livre fournit une introduction exhaustive à cet environnement, il vous familiarise rapidement avec l'ensemble des composants qui constituent Hadoop aujourd'hui.
L'un des grands avantages de cet ouvrage est qu'il recontextualise en permanence les éléments les uns par rapport aux autres : il devient aisé de se retrouver dans la jungle Hadoop. De même, chaque brique est présentée avec les objectifs et les contraintes qui l'ont vue naître, ce qui permet d'apprécier les choix techniques qui ont été posés. Le côté véritablement technique est largement présent : dès le premier chapitre, le lecteur est plongé dans des détails de l'organisation de Hadoop. L'un des maîtres-mots était de chercher à comprendre avant d'utiliser. Pari tenu !
À la fin de la lecture de l'ouvrage, vous êtes censés atteindre un niveau « professionnel » avec Hadoop. Les exemples vous montreront au moins comment utiliser chaque partie de Hadoop, d'une manière relativement basique, mais néanmoins suffisante pour bon nombre d'utilisations. L'aspect administration des machines n'est pas abordé, il ne fait pas partie du périmètre visé par l'auteur.
On peut regretter que le niveau attendu du lecteur ne soit pas clair : l'ouvrage rappelle (assez brièvement) ce qu'est une classe, une fonction, etc., alors que le public cible semble plutôt fin connaisseur de ces notions. Un point bien plus gênant est le nombre d'erreurs techniques, qui diminuent la crédibilité du texte. Par exemple, selon l'auteur, le format PDF est propriétaire (alors qu'il correspond à la norme ISO 32000-1 depuis 2008), W3Schools est un site officiel du W3C, Google utilise l'algorithme PageRank pour l'indexation (en réalité, uniquement pour mesurer la popularité de pages). De même, certains exemples ne sont pas toujours très bien choisis. Par exemple, présenter le NoSQL avec une application extrêmement bien traitée par des systèmes relationnels à très grande échelle (listes du personnel, des commandes) n'est pas le plus judicieux.
En résumé, ce livre aide à se forger une vue d'ensemble de Hadoop pour envisager de l'utiliser efficacement. Il ne fera pas du lecteur un maître, mais lui donnera les éléments nécessaires pour commencer son utilisation sereinement.
Avez-vous lu ce livre ? Qu'en pensez-vous ? 2 commentaires
Machine Learning avec Scikit-Learn
Mise en oeuvre et cas concrets
Résumé de l'éditeur
Cet ouvrage, conçu pour tous ceux qui souhaitent s'initier au Machine Learning (apprentissage automatique) est la traduction de la première partie du best-seller américain Hands-On Machine Learning with Scikit-Learn & TensorFlow.
Il ne requiert que peu de connaissances en mathématiques et présente les fondamentaux du Machine Learning d'une façon très pratique à l'aide de Scikit-Learn qui est l'un des frameworks de ML les plus utilisés actuellement.
Des exercices corrigés permettent de s'assurer que l'on a assimilé les concepts et que l'on maîtrise les outils.
Des compléments en ligne interactifs sous forme de notebooks Jupyter complètent le livre avec des exemples exécutables.
Ce premier titre est complété par un second ouvrage intitulé Deep Learning avec TensorFlow.
Avez-vous lu ce livre ? Qu'en pensez-vous ? 1 commentaire
Édition : Dunod
ISBN10 : 2-100-76540-X
ISBN13 : 978-2-100-76540-9
- Vue d'ensemble du Machine Learning
- Un projet de Machine Learning de bout en bout
- Classification
- Entraînement de modèles
- Machines à vecteurs de support
- Arbres de décision
- Apprentissage d'ensemble et forêts aléatoires
- Réduction de dimension
On trouve sur le marché quantité de livres sur l'apprentissage automatique, mais rares sont ceux qui valent vraiment la peine. Cet ouvrage trouve le juste équilibre entre une composante théorique (savoir comment fonctionnent les algorithmes, sans formalisme excessif) et pratique (utiliser des méthodes d'apprentissage en réalité, sans code inutile). Le sujet du passage à l'échelle (avec une plateforme comme Hadoop) n'est pas abordé, mais cela ne nuit pas au lecteur, qui pourra se référer à l'abondante littérature sur le sujet, tout comme les sujets les plus avancés : l'auteur se focalise sur les algorithmes les plus utiles, plutôt que sur les dernières avancées de la recherche. Le style est très loin d'être académique, même si l'ouvrage pointe régulièrement vers des articles de la littérature scientifique pour approfondir certains points.
Un des points forts est sans nul doute la pédagogie dont fait preuve l'auteur. Il n'abuse pas de jargon (la traduction en français est d'ailleurs de très bonne facture, sans quantité phénoménale d'anglicismes), pour des explications claires et progressives. Les exemples sont aussi bien choisis et donnent envie d'en faire plus. La présentation de scikit-learn n'est pas exhaustive, l'auteur préférant passer du temps sur les éléments les plus importants pour structurer correctement son code.
En résumé, on peut vraiment recommander ce livre pour toutes les personnes qui débutent dans le domaine de l'apprentissage automatique, mais aussi à toutes celles qui ont une certaine expérience et aimeraient la formaliser quelque peu. Le niveau attendu n'est pas très élevé, il suffit de connaissances assez basiques en mathématiques (à condition d'avoir une formation en informatique), comme les fonctions, les dérivées et les matrices. Par contre, il ne conviendra pas vraiment à celles et ceux qui cherchent une ressource plus avancée (même s'ils apprendront l'une ou l'autre chose utile au passage). Le seul aspect vraiment négatif est la séparation en deux ouvrages, celui-ci faisant complètement l'impasse sur les réseaux neuronaux, même si certaines remarques dans le fil du texte y font référence.
Avez-vous lu ce livre ? Qu'en pensez-vous ? 1 commentaire
Deep Learning avec TensorFlow
Mise en oeuvre et cas concrets
Résumé de l'éditeur
Cet ouvrage, conçu pour tous ceux qui souhaitent s'initier au Deep Learning (apprentissage profond) est la traduction de la deuxième partie du best-seller américain Hands-On Machine Learning with Scikit-Learn & TensorFlow.
Le Deep Learning est récent et il évolue vite. Ce livre en présente les principales techniques : les réseaux de neurones profonds, capables de modéliser toutes sortes de données, les réseaux de convolution, capables de classifier des images, les segmenter et découvrir les objets ou personnes qui s'y trouvent, les réseaux récurrents, capables de gérer des séquences telles que des phrases, des séries temporelles, ou encore des vidéos, les autoencodeurs qui peuvent découvrir toutes sortes de structures dans des données, de façon non supervisée, et enfin le Reinforcement Learning (apprentissage par renforcement) qui permet de découvrir automatiquement les meilleures actions pour effectuer une tâche (par exemple un robot qui apprend à marcher).
Ce livre présente TensorFlow, le framework de Deep Learning créé par Google. Il est accompagné de notebooks Jupyter (disponibles sur github) qui contiennent tous les exemples de code du livre, afin que le lecteur puisse facilement tester et faire tourner les programmes. Il complète un premier livre intitulé Machine Learning avec Scikit-Learn.
Avez-vous lu ce livre ? Qu'en pensez-vous ? 1 commentaire
Édition : Dunod
ISBN10 : 2-100-75993-0
ISBN13 : 978-2-100-75993-4
- Les fondamentaux du Machine Learning
- Introduction à TensorFlow
- Introduction aux réseaux de neurones artificiels
- Entraînement de réseaux de neurones profonds
- Distribution de TensorFlow sur des processeurs ou des serveurs
- Réseaux de neurones convolutifs
- Réseaux de neurones récurrents
- Autoencodeurs
L'apprentissage profond est la dernière technique à la mode pour l'apprentissage automatique, avec un évident manque de maturité. Il n'empêche que le domaine a donné d'excellents résultats dans un certain nombre d'applications, pour des jeux (comme AlphaGo) et la reconnaissance d'images, notamment. C'est pourquoi des livres comme celui-ci ont un marché à saisir. Comme dans le premier tome, Aurélien Géron ne se focalise pas sur les applications directement pratiques, mais passe aussi du temps sur les principes sous-jacents, de telle sorte que le lecteur a toutes les clés en main pour comprendre ce qu'il fait. Par rapport au premier ouvrage, celui-ci se montre néanmoins beaucoup plus pratique (les exemples de code sont plus nombreux) et passe nécessairement sur le sujet du calcul à plus grande échelle (sur plusieurs machines et cartes graphiques) — sans quoi on serait bien en peine d'exploiter complètement les techniques décrites.
Les points forts de cette œuvre se rapprochent de la première partie, notamment une bonne dose de pédagogie et une langue compréhensible par la majorité (à condition d'avoir les bonnes bases mathématiques) — l'emploi de termes anglophones est cependant plus présent que dans le premier tome. La variété de sujets abordés est intéressante, car elle s'étend sur tous les domaines actuels où l'apprentissage profond se développe (convolution, récursion, apprentissage par renforcement, principalement). Ce dernier exemple est particulièrement important, car rares sont les ressources qui parlent d'apprentissage par renforcement, surtout à un tel niveau de détail (en omettant toutefois les parties mathématiques assez complexes qui viennent rapidement dans le domaine — un grand plus de cet ouvrage qui facilite fortement la compréhension !). On peut regretter que Keras ou une autre interface de plus haut niveau ne soit pas traitée, pour faciliter l'expérimentation rapide.
Cet ouvrage se destine donc à toutes les personnes débutant dans l'apprentissage profond (ou qui connaissent l'utilisation plus classique des réseaux neuronaux, mais souhaitent se mettre au goût du jour). Il servira surtout à ceux qui veulent une référence écrite à garder sous la main ou qui n'aiment pas apprendre par le biais de vidéos en ligne (à ce niveau, quand il faut clairement faire un tri dans les vidéos disponibles, ce livre n'est pas démuni d'avantages).
Avez-vous lu ce livre ? Qu'en pensez-vous ? 1 commentaire
Apprentissage artificiel
Deep learning, concepts et algorithmes
Résumé de l'éditeur
Les programmes d'intelligence artificielle sont aujourd'hui capables de reconnaître des commandes vocales, d'analyser automatiquement des photos satellites, d'assister des experts pour prendre des décisions dans des environnements complexes et évolutifs (analyse de marchés financiers, diagnostics médicaux...), de fouiller d'immenses bases de données hétérogènes, telles les innombrables pages du Web...
Pour réaliser ces tâches, ils sont dotés de modules d'apprentissage leur permettant d'adapter leur comportement à des situations jamais rencontrées, ou d'extraire des lois à partir de bases de données d'exemples. Ce livre présente les concepts qui sous-tendent l'apprentissage artificiel, les algorithmes qui en découlent et certaines de leurs applications. Son objectif est de décrire un ensemble d'algorithmes utiles en tentant d'établir un cadre théorique pour l'ensemble des techniques regroupées sous ce terme "d'apprentissage artificiel".
La troisième édition de ce livre a été complètement réorganisée pour s'adapter aux évolutions très significatives de l'apprentissage artificiel ces dernières années. Une large place y est accordée aux techniques d'apprentissage profond et à de nouvelles applications, incluant le traitement de flux de données.
A qui s'adresse ce livre ?
Ce livre s'adresse tant aux décideurs et aux ingénieurs qui souhaitent mettre au point des applications qu'aux étudiants de niveau Master 1 et 2 et en école d'ingénieurs, qui souhaitent un ouvrage de référence sur ce domaine clé de l'intelligence artificielle.
Avez-vous lu ce livre ? Qu'en pensez-vous ? 1 commentaire
Édition : Eyrolles
ISBN10 : 2-212-67522-4
ISBN13 : 978-2-212-67522-1
- Des machines apprenantes !
- L'induction exploitant la structure de l'espace des hypothèses
- L'induction par optimisation d'un critère inductif
- L'induction par comparaison à des exemples (et par collaboration)
- L'apprentissage descriptif
- Apprentissage en environnement et non stationnaire
- Aspects pratiques et suppléments
- Annexes et bibliographie
À l'achat, ce livre se dénote par son poids, son nombre de pages. Que peut-il donc contenir de plus que la concurrence ? Le lecteur intéressé regardera ensuite la table des matières et verra que les sujets abordés sont plus étendus : les auteurs ne se focalisent pas sur l'apprentissage automatique, mais visent plus large, toutes les techniques qui permettent à un ordinateur d'extraire des connaissances depuis un jeu de données. C'est là le grand avantage de cet ouvrage, il cherche à donner une vue d'ensemble aussi diversifiée que possible sur un domaine d'étude loin d'être jeune. À la lecture, ce pressentiment se confirme : c'est complet, si ce n'est exhaustif ; c'est une référence (et le texte est prévu comme tel : aucun ordre n'est imposé sur la lecture des chapitres).
La rédaction diffère également de la concurrence, le point de vue adopté étant plus basé sur la théorie que la pratique. Les titres des chapitres ne révèlent pleinement leur cohérence qu'à la lecture. C'est là un parti pris : plus de théorie que de pratique. Cette structuration mène également à des points plus étonnants, comme le fait que la question de l'évaluation d'un apprentissage est traitée d'abord pour l'apprentissage non supervisé, puis (bien) après pour l'apprentissage supervisé plus classique. Également, le texte fourmille de références vers des articles plus académiques encore (les pages 851 à 889 sont réservées à la bibliographie), pour creuser plus avant si le cœur vous en dit.
Un point négatif (par rapport au public visé : « décideurs et […] ingénieurs […, ainsi] qu'aux étudiants de niveau Master 1 et 2 et en école d'ingénieurs ») est justement le côté théorique de toutes choses, le formalisme mathématique poussé à un très bon niveau. Les auteurs se veulent formels, et ce, dès l'introduction. Cela rend malheureusement l'ouvrage assez peu accessible, voire complètement imperméable pour les allergiques des mathématiques. Pourtant, lors de la majorité des chapitres, on se rend compte de l'effort fourni pour éviter l'abus d'anglicismes. Le sous-titre présente le mot clé « deep learning », mais celui-ci n'occupe pas une place aussi prépondérante que cela laisserait penser (deux chapitres sur vingt-trois).
On sent assez fortement qu'il y a trois auteurs, l'ouvrage manquant parfois de cohérence. Il est régulier de voir des références au passé à des notions qui ne sont pourtant détaillées que dans plusieurs chapitres (de manière similaire, les couvertures de Markov sont présentées au moins trois fois). Les rappels sont fréquents, mais il est plus gênant que, lorsque tous les chapitres pointent vers une notion à un endroit précis, cette définition soit elle aussi un rappel. Finalement, certaines informations sont clairement périmées : une note de bas de page indique que « très peu de travaux traitent de ce problème à ce jour (octobre 2009) », soit un peu avant la sortie de l'édition… précédente (en 2010). Trois sources de données sont citées (Microsoft Azure Marketplace, Datamarket, Data Publica), seule la dernière existe encore — quid dans quelques années ?
Par conséquent, l'ouvrage semble plutôt prédestiné à ceux qui veulent une compréhension profonde de la théorie derrière l'apprentissage, de ses liens avec les algorithmes. Il pèche sur les questions plus pratiques. Il n'y a donc pas beaucoup de souci à se faire pour la péremption des informations, qui resteront valables des années, si ce n'est dizaines d'années pour la plupart. Le public visé est plutôt mathématicien ou chercheur dans le domaine : il faut avoir déjà des connaissances préalables en apprentissage pour tirer un maximum du livre.
Avez-vous lu ce livre ? Qu'en pensez-vous ? 1 commentaire
Data science
Cours et exercices
Résumé de l'éditeur
Un ouvrage de référence sur les data sciences !
La data science, ou science des données, est la discipline qui traite de la collecte, de la préparation, de la gestion, de l'analyse, de l'interprétation et de la visualisation de grands ensembles de données complexes. Elle n'est pas seulement concernée par les outils et les méthodes pour obtenir, gérer et analyser les données ; elle consiste aussi à en extraire de la valeur et de la connaissance.
Cet ouvrage présente les fondements scientifiques et les composantes essentielles de la science des données, à un niveau accessible aux étudiants de master et aux élèves ingénieurs. Notre souci a été de proposer un exposé cohérent reliant la théorie aux algorithmes développés dans ces domaines. Il s'adresse aux chercheurs et ingénieurs qui abordent les problématiques liées à la science des données, aux data scientists de PME qui utilisent en profondeur les outils d'apprentissage, mais aussi aux étudiants de master, doctorants ou encore futurs ingénieurs qui souhaitent un ouvrage de référence en data science.
A qui s'adresse ce livre ?
- Aux développeurs, statisticiens, étudiants et chefs de projets ayant à résoudre des problèmes de data science.
- Aux data scientists, mais aussi à toute personne curieuse d'avoir une vue d'ensemble de l'état de l'art du machine learning.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Eyrolles
ISBN10 : 2-212-67410-4
ISBN13 : 978-2-212-67410-1
- Introduction
- Prétraitement des données
- Gestion de données large-échelle et systèmes distribués
- Calcul haute performance
- Optimisation pour l'analyse de données
- Décomposition matricielle/tensorielle
- Modèles génératifs
- Modèles discriminants
- Deep learning
- Visualisation interactive d'information
Ce petit livre se dénote de la concurrence par son focus sur les bases de la science des données : pas uniquement les algorithmes d'apprentissage ou d'extraction de connaissances. En effet, il traite aussi de la représentation des données, chose importante en début de projet . Globalement, les chapitres sont organisés comme le serait un projet en science des données. Le lecteur commence son parcours avec les données, puis passe aux techniques d'implémentation (c'est-à-dire le calcul distribué, l'optimisation, les méthodes numériques), finalement aux algorithmes proprement dits.
Tous ces sujets sont abordés de manière assez brève (le livre ne fait même pas trois cents pages) et concise, en insistant juste sur les éléments principaux. Le texte est rédigé de manière assez sèche, sans fioritures ; ce choix le rend d'ailleurs facile à lire. Les explications présentent un certain côté pédagogique qui plaira à bon nombre d'étudiants. Néanmoins, ce dépouillement impose des connaissances préexistantes dans le domaine, bien que pas forcément très poussées : la très brève introduction mène directement au vif du sujet, une progression assez étonnante.
Il s'agit de l'un des rares ouvrages à traiter tant des algorithmes que des techniques d'implémentation, ce qui en fait un point positif : ce lien aide le lecteur à rassembler Hadoop & co. avec les algorithmes d'apprentissage. On peut cependant regretter le fait que les exemples ne soient pas toujours les mieux choisis : notamment, le chapitre sur le calcul de haute performance présente diverses notions sous l'angle habituel de la résolution d'équations aux dérivées partielles — un sujet assez éloigné de la science des données.
La plupart des méthodes d'apprentissage sont ici survolées : les méthodes probabilistes (dont les modèles graphiques), les réseaux neuronaux, les ensembles, les plus proches voisins. Étonnamment, pourtant, les arbres de décision ne sont jamais présentés, ainsi que leurs dérivés directs (comme les forêts aléatoires), malgré leur grande utilité pratique. Tout le côté pratique est toutefois mis de côté : les neuf auteurs se focalisent sur les aspects théoriques du domaine, les principes derrière les méthodes, dans l'idée qu'il « suffit » alors de regarder la documentation d'une bibliothèque d'apprentissage.
Le chapitre sur la visualisation étonne quelque peu, mais apporte des compléments d'information très utiles. Il distille l'expérience acquise, notamment en cartographie, sur la meilleure manière de faire passer un message à travers des graphiques. Il n'importe là pas d'utiliser correctement les bibliothèques, mais d'agencer leurs fonctionnalités pour que les graphiques atteignent leur objectif.
En résumé, il s'agit là d'un très bon support de cours ou d'un petit ouvrage de référence dans le domaine de la science des données. Il ratisse assez large, en donnant des pointeurs vers la recherche actuelle dans le domaine, en omettant la pratique. (À noter que les solutions des exercices ne sont pas fournies.)
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Les réseaux
L'ére des réseaux cloud et de la 5G - Edition 2018-2020
Résumé de l'éditeur
La référence des étudiants et des professionnels en réseaux et télécoms
Avec plus de 100 000 exemplaires vendus. Les Réseaux de Guy Pujolle s'est imposé comme la référence en langue française auprès des étudiants comme des professionnels en réseaux et télécoms.
Très largement refondue et mise à jour, cette neuvième édition témoigne des évolutions rapides des technologies et des usages. Alors que certaines technologies comme la téléphonie sur IP ou la 4G sont arrivées à maturité et sont largement déployées, le monde des réseaux vit de nouveaux bouleversements :
- généralisation du Cloud et du Fog Networking, avec le remplacement des boîtiers de type routeur ou commutateur par des machines virtuelles s'exécutant dans des datacenters ;
- montée en puissance de l'architecture SDN qui va à l'encontre de la philosophie Internet en (re)centralisant les fonctions de routage ;
- succès croissant des logiciels open source au détriment des solutions propriétaires des grands équipementiers ;
- transition de la 4G vers la 5G. un des grands chantiers de ces prochaines années.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Eyrolles
ISBN10 : 2-212-67535-6
ISBN13 : 978-2-212-67535-1
Eléments de base
- Introduction aux réseaux
- Les composants des réseaux
- Réseaux virtuels et Cloud
- L'intelligence dans les réseaux
Les protocoles réseau
- Le niveau physique
- Le niveau trame
- Le niveau paquet et message
Les solutions réseau
- Les réseaux de niveau physique
- Les réseaux Ethernet
- Les réseaux IP
- Le Label Switching – MPLS et GMPLS
- Les réseaux SDN
- Le cloud Networking
- Les réseaux open source
Les réseaux d'accès
- Les réseaux d'accès terrestres
- Les réseaux d'accès hertziens
- Les small cells et les réseaux multisaut
Les réseaux de mobiles et sans fil
- Les réseaux de mobiles 1G à 5G
- Les réseaux personnels
- Les réseaux Wi-Fi
- L'Internet des objets
Contrôle, gestion et sécurité
- VLAN et VPN
- La gestion et le contrôle
- La sécurité et l'identité
- Les réseaux green
- Générations futures
Les réseaux informatiques sont un vaste sujet, en permanente explosion, d'une diversité sans limites. Difficile de s'y retrouver sans un guide de qualité, c'est cela que ce livre vient fournir. Contrairement à la majorité des classiques du sujet, l'auteur a investi une quantité d'efforts pour présenter les dernières nouveautés du domaine, pour bien montrer que les réseaux informatiques ne sont pas fixés, mais au contraire doivent continuer à évoluer.
Ainsi, la 5G et les réseaux logiciels (SDN) sont abordés avec un certain niveau de détail. Ces ajouts ne se font pas au détriment du volume du livre, puisque les sujets moins d'actualité sont présentés dans des annexes disponibles en ligne (par exemple, ATM ou X.25). On pourrait alors croire que seuls les réseaux du futur sont présentés, mais ce n'est pas le cas : les protocoles actuels sont bien présents.
Le vrai point fort du livre est néanmoins ailleurs. Les sujets sont abordés sous un angle pédagogique, afin que le lecteur s'y retrouve vraiment. Il ne s'agit pas d'une longue description de protocoles, mais plus d'une mise en perspective des techniques utilisées ou prometteuses pour l'avenir. La pédagogie ne s'oppose pas à la profondeur du contenu : par exemple, pour les réseaux IP, les techniques de gestion de la qualité de service (modèles IntServ et DiffServ, notamment) ne sont pas omises.
Par contre, l'ouvrage se focalise sur les couches basses des réseaux, à proximité des télécommunications, des manières précises d'émettre un bit sur une paire de cuivre. Ainsi, TCP et UDP sont présentés, les réseaux xDSL et fibre sont approfondis, mais HTTP et DNS sont à peine survolés. Aussi, la structuration n'est pas toujours la plus aisée à comprendre, certaines technologies (comme WiFi) étant expliquées dans plusieurs parties : avoir quelques connaissances préalables en réseaux informatiques ne pourra qu'aider à compléter les explications supplémentaires, distantes de quelques chapitres. Le chapitre sur la sécurité laisse aussi un peu sur sa faim : malgré des explications très pédagogiques et une section très intéressante sur les attaques possibles sur les SDN, on retrouve des mentions de disquettes et de MD5 (à proximité du mot clé « sécurisé »).
On peut donc conseiller ce livre les yeux fermés aux personnes qui souhaitent comprendre en profondeur les mécanismes à l'œuvre dans les réseaux informatiques, ainsi qu'aux étudiants dans leurs premiers cours de réseaux.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Design Patterns
Apprendre la conception de logiciels en réalisant un jeu vidéo (avec exercices et corrigés)
Résumé de l'éditeur
Ce livre s'adresse aux développeurs qui souhaitent acquérir des compétences dans le domaine de la conception logicielle en utilisant les patrons de conception (design patterns). L'approche suivie dans ce livre pour atteindre cet objectif est celle de la réalisation d'un jeu vidéo, développé à l'aide du langage Java. Seules des connaissances de base en programmation objet sont requises pour bien démarrer la lecture de ce livre.
Le lecteur commence par découvrir le travail de conception, nécessaire avant de débuter le développement proprement dit, puis étudie plus précisément la manière de représenter l'ensemble des données utiles à la réalisation de l'application (classes, conteneurs...). L'auteur présente ensuite la notion d'interface utilisateur (en 2D et en 3D) pour le développement de l'affichage puis la mise en place du moteur du jeu vidéo (déplacements, animations, règles du jeu…). Les derniers chapitres sont ensuite consacrés à l'intégration de l'intelligence artificielle et au développement des fonctionnalités pour le jeu en réseau.
Les notions étudiées dans ce livre sont introduites et mises en œuvre pas à pas, des plus élémentaires au plus complexes, et permettent au lecteur d'acquérir la pratique nécessaire pour éviter les pièges usuels liés au développement d'une application d'envergure. L'auteur propose également une série d'exercices avec corrigés pour illustrer les différentes techniques étudiées.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Eni
ISBN10 : 2-409-01583-2
ISBN13 : 978-2-409-01583-0
- Avant-propos
- Concevoir une application d'envergure
- Représenter l'état du jeu
- Interface utilisateur
- Moteur de jeu
- Intelligence artificielle
- Exécution concurrente et réseaux
La conception logicielle n'est probablement pas le sujet en informatique qui a le plus la réputation d'être sexy, ni même intéressant. Le sujet est souvent enseigné de manière dogmatique, sans mise en pratique ou en perspective. Ce livre devrait réconcilier les plus déçus avec le sujet, grâce à son approche très pragmatique : concevoir un jeu assez simple, mais à l'aide de patrons de conception bien choisis. Ainsi, tous les exemples de l'ouvrage, à de rares exceptions près, tournent autour du jeu vidéo. Cette cohérence rend le tout motivant.
L'avantage principal de l'angle d'attaque utilisé est qu'il est foncièrement pratique, chaque patron de conception étant très brièvement présenté de manière abstraite. La plupart des explications concernent son utilisation réelle dans du code, ses interactions avec d'autres patrons. L'auteur part souvent d'un code simplement fonctionnel, sans conception poussée, avant d'introduire les quelques patrons appropriés. Le lecteur peut ainsi voir clairement l'effet structurant de chaque patron de conception, les situations dans lesquelles il peut être utile, mais aussi les avantages qu'il propose.
Pour arriver à ses fins, l'auteur suppose un certain niveau de programmation orientée objet impérative en Java, puis explique le reste. Il passe un certain temps à présenter AWT et LWJGL (OpenGL) pour l'interface graphique, par exemple. Il ne s'agit pas d'un survol accéléré ni d'une descente profonde, mais bien d'un niveau suffisant pour l'application visée (un simple Pacman, certes) et d'autres encore. Aussi, l'auteur présente des techniques de parallélisme (de manière assez générale, le sujet étant vital dans le développement de jeux), de communication en réseau (avec un focus sur les problématiques propres aux jeux, comme NAT et UDP) et d'intelligence artificielle, ainsi que les patrons de conception associés, sans présupposer de connaissances poussées dans ces domaines. Un regret, toutefois, est l'absence des systèmes à entités, un mécanisme de structuration très fort (notamment à l'œuvre dans Unity 3D), mais probablement un peu trop spécifique aux jeux.
En peu de mots, l'on peut dire que ce livre ne peut qu'être recommandé à ceux qui souhaitent débuter dans la conception logicielle, après avoir remarqué les limites des approches naïves. L'ouvrage sera plus difficilement utilisé comme une référence, même si chacun des vingt-trois patrons est présenté de manière abstraite à l'aide de diagrammes UML.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Algorithms and Networking for Computer Games
Résumé de l'éditeur
The essential guide to solving algorithmic and networking problems in commercial computer games, revised and extended
Algorithms and Networking for Computer Games, Second Edition is written from the perspective of the computer scientist. Combining algorithmic knowledge and game-related problems, it explores the most common problems encountered in game programing.
The first part of the book presents practical algorithms for solving “classical” topics, such as random numbers, procedural generation, tournaments, group formations and game trees. The authors also focus on how to find a path in, create the terrain of, and make decisions in the game world.
The second part introduces networking related problems in computer games, focusing on four key questions: how to hide the inherent communication delay, how to best exploit limited network resources, how to cope with cheating and how to measure the on-line game data.
Thoroughly revised, updated, and expanded to reflect the many constituent changes occurring in the commercial gaming industry since the original, this Second Edition, like the first, is a timely, comprehensive resource offering deeper algorithmic insight and more extensive coverage of game-specific networking problems than ordinarily encountered in game development books.
Algorithms and Networking for Computer Games, Second Edition:
- Provides algorithmic solutions in pseudo-code format, which emphasises the idea behind the solution, and can easily be written into a programming language of choice
- Features a section on the Synthetic player, covering decision-making, influence maps, finite-state machines, flocking, fuzzy sets, and probabilistic reasoning and noise generation
- Contains in-depth treatment of network communication, including dead-reckoning, local perception filters, cheating prevention and on-line metrics
- Now includes 73 ready-to-use algorithms and 247 illustrative exercises
Algorithms and Networking for Computer Games, Second Edition is a must-have resource for advanced undergraduate and graduate students taking computer game related courses, postgraduate researchers in game-related topics, and developers interested in deepening their knowledge of the theoretical underpinnings of computer games and in learning new approaches to game design and programming.
Avez-vous lu ce livre ? Qu'en pensez-vous ? 1 commentaire
Édition : Wiley
ISBN10 : 1-119-25976-2
ISBN13 : 978-1-119-25976-3
- Introduction
Algorithms
- Random Numbers
- Noise
- Procedural Generation
- Tournaments
- Game Trees
- Path Finding
- Group Movement
- Decision-Making
- Modelling Uncertainty
Networking
- Communication Layers
- Compensating Resource Limitations
- Cheating Prevention
- Online Metrics
Le titre semble prometteur : des algorithmes et des techniques de réseau dans l'application des jeux vidéos. Cet objectif est atteint, puisque l'ouvrage présente son contenu avec un lien permanent pour les jeux vidéos. Cette attache vidéoludique ne se présente pas que dans la table des matières, mais aussi dans le texte, chaque section présentant des contraintes spécifiques au jeu vidéo. Les chapitres se divisent en trois parties : la génération de bruit, les techniques d'intelligence artificielle (ces deux-là étant regroupées sous le vocable « algorithmes ») et le réseau. Cette dernière laisse cependant un arrière-goût de trop peu.
L'approche se veut indépendante de tout langage ou moteur de jeu, les auteurs n'écrivent que du pseudo-code. Cette manière de faire rappelle des racines académiques (tout comme le style de rédaction, relativement sec) et permet de présenter les algorithmes dans toute leur généralité, sans bruit en provenance d'une API ou l'autre. Cependant, certains pourront regretter la méthode, puisqu'il faut alors plus de temps pour appliquer un algorithme à son cas particulier — ce qui n'est sans doute pas un mal, chacun devant être plus ou moins spécialisé au type de jeu développé. À ce niveau, la partie réseau reste bien plus dans l'abstrait et s'éloigne des considérations pratiques d'implémentation.
Néanmoins, l'ouvrage n'est sûrement pas le plus abordable, au vu du contenu hautement technique qu'il présente, avec des développements plus académiques que pratiques. Par exemple, les premiers chapitres sur la génération de nombres aléatoires et de bruit nécessitent des prérequis en mathématiques non négligeables ; il n'empêche que cette partie est extrêmement instructive.
Les auteurs présentent un certain nombre de références vers la littérature, notamment scientifique, liées aux problématiques évoquées tout au long du livre. Ces liens permettent souvent d'approfondir le contenu ; cependant, on pourra regretter que toutes ces références ne soient plus accessibles (notamment, sur les techniques d'équilibrage utilisées dans Age of Empires II, sorti en 1999). Malgré tout, bon nombre de ces références ont été mises à jour par rapport à la première édition.
En bref, cet ouvrage peut être recommandé aux personnes qui souhaitent se lancer dans le développement de jeux vidéo, après quelques premiers développements. Il leur permettra de s'améliorer significativement dans une série de domaines spécifiques aux jeux vidéo et ignorés dans la plupart des cours d'algorithmique (par exemple, pour le déplacement d'unités sur un terrain).
Avez-vous lu ce livre ? Qu'en pensez-vous ? 1 commentaire
Conception d'algorithmes
Principes et 150 exercices corrigés
Résumé de l'éditeur
La conception des algorithmes : une science !
L'algorithmique est l'art et la science de concevoir des algorithmes corrects et efficaces. Pour beaucoup d'informaticiens, c'est l'aspect artistique qui prédomine : on cherche l'idée lumineuse, la structure cachée, la réponse astucieuse. Mais la conception des algorithmes est d'abord une science dont il faut posséder les bases et les techniques avant d'exprimer sa créativité. Ce livre invite le lecteur à une approche rigoureuse de la construction d'algorithmes. Il explique comment la même idée peut se retrouver dans plusieurs algorithmes correspondant à des problèmes différents. Il donne les outils pour analyser rationnellement un problème, le classer dans une famille de méthodes et produire une solution exacte.
Un manuel de référence sur la construction raisonnée des algorithmes
Dans chaque chapitre de ce livre, les bases théoriques et techniques sont rappelées et illustrées par des exemples. On y trouve ensuite un grand nombre d'exercices, accompagnés d'une correction minutieuse et complète. De la sorte, on y voit comment une démarche rationnelle permet d'atteindre une solution, exacte par construction, à travers une grande variété de cas. Après des rappels sur le raisonnement, les structures de données et la complexité, le livre parcourt les grandes méthodes de construction d'algorithmes : invariants, récursivité, essais successifs, méthodes PSEP, algorithmes gloutons, diviser pour régner, programmation dynamique. Au total, près de 150 exemples d'algorithmes sont ainsi analysés et construits rigoureusement.
Cet ouvrage, pour sa deuxième édition, a été entièrement revu et corrigé. Nombre d'exercices ont été remaniés, certains assez largement, en visant une meilleure gradation des difficultés et une argumentation plus complète.
À qui s'adresse ce livre ?
- Aux étudiants et enseignants en science informatique
- Aux ingénieurs, enseignants-chercheurs, informaticiens et industriels
Avez-vous lu ce livre ? Qu'en pensez-vous ? 1 commentaire
Édition : Eyrolles
ISBN10 : 2-212-67728-6
ISBN13 : 978-2-212-67728-7
- Mathématiques et informatiques : notions utiles
- Complexité d'un algorithme
- Spécification, invariants, itération
- Diminuer pour résoudre, récursivité
- Essais successifs
- PSEP
- Algorithmes gloutons
- Diviser pour régner
- Programmation dynamique
Vaste sujet qu'est la conception d'algorithmes. Peu de gens maîtrisent réellement ce domaine de l'informatique, le prenant pour mystérieux ou obscur. Cet ouvrage offre un tour d'horizon exhaustif des techniques de conception et abreuve le lecteur d'exemples en tout genre, justement pour donner l'habitude de la pensée algorithmique. Les auteurs suivent un schéma commun pour chaque technique présentée : une introduction, un premier exemple détaillé en profondeur, un résumé de la technique (les points essentiels à mettre en œuvre et les conditions d'application) sous la forme d'un patron de conception d'algorithme, puis une série d'exercices (parfois plus de cent pages pour une méthode, corrections comprises !). Cette manière de procéder explicite comment arriver, par un raisonnement rationnel plutôt qu'intuitif, à une solution efficace (sans oublier d'indiquer où la créativité a droit de cité). Les auteurs mettent en avant la rigueur avec laquelle ils ont rédigé le texte — il faut avouer que ce n'étaient pas des paroles en l'air.
L'ouvrage est principalement constitué d'exercices. Leurs énoncés sont souvent détaillés, de telle sorte qu'on comprenne bien là où les auteurs veulent mener sans devoir regarder la solution. Une manière très efficace d'utiliser le livre est ainsi de réaliser les exercices comme ils sont proposés, en ne vérifiant les solutions qu'à la fin de chaque question. Le lecteur qui préférera rester passif devra au contraire se munir de deux signets (l'un pour les énoncés, l'autre pour les solutions). Les exercices proposés sont relativement variés : on n'a pas droit à une pléthore de graphes et quelques autres pour faire bonne figure, mais un mélange plus varié, avec par exemple des jeux.
Pourtant, l'ouvrage n'est pas le plus abordable. Ce n'est pas tellement dû à ses prérequis — les auteurs s'attendent entre autres à un bon bagage en structures de données et en mathématiques —, mais plutôt au niveau de formalisme mathématique utilisé. Ils démontrent, par exemple, que les schémas de preuves habituels sont corrects ; autant dire que chaque algorithme est donné avec son invariant de boucle. Les preuves données dans les corrections sont détaillées, chaque étape du raisonnement étant minutieusement abordée (les auteurs ne sont pas des adeptes du « laissé au lecteur »). Ceci restreint le public ciblé, qui doit avoir une certaine ouverture d'esprit à la beauté mathématique ; inutile cependant d'avoir un parcours mathématique pur pour tirer bénéfice du livre.
Avez-vous lu ce livre ? Qu'en pensez-vous ? 1 commentaire
Machine Learning for Data Streams
With Practical Examples in MOA
Résumé de l'éditeur
A hands-on approach to tasks and techniques in data stream mining and real-time analytics, with examples in MOA, a popular freely available open-source software framework.
Today many information sources—including sensor networks, financial markets, social networks, and healthcare monitoring—are so-called data streams, arriving sequentially and at high speed. Analysis must take place in real time, with partial data and without the capacity to store the entire data set. This book presents algorithms and techniques used in data stream mining and real-time analytics. Taking a hands-on approach, the book demonstrates the techniques using MOA (Massive Online Analysis), a popular, freely available open-source software framework, allowing readers to try out the techniques after reading the explanations.
The book first offers a brief introduction to the topic, covering big data mining, basic methodologies for mining data streams, and a simple example of MOA. More detailed discussions follow, with chapters on sketching techniques, change, classification, ensemble methods, regression, clustering, and frequent pattern mining. Most of these chapters include exercises, an MOA-based lab session, or both. Finally, the book discusses the MOA software, covering the MOA graphical user interface, the command line, use of its API, and the development of new methods within MOA. The book will be an essential reference for readers who want to use data stream mining as a tool, researchers in innovation or data stream mining, and programmers who want to create new algorithms for MOA.
Avez-vous lu ce livre ? Qu'en pensez-vous ? 1 commentaire
Édition : MIT Press
ISBN10 : 0-262-03779-3
ISBN13 : 978-0-262-03779-2
Introduction
- Introduction
- Big Data Stream Mining
- Hands-on Introduction to MOA
Stream Mining
- Streams and Sketches
- Dealing with Change
- Classification
- Ensemble Methods
- Regression
- Clustering
- Frequent Pattern Mining
The MOA Software
- Introduction to MOA and Its Ecosystem
- The Graphical User Interface
- Using the Command Line
- Using the API
- Developing New Methods in MOA
L'apprentissage automatique est un domaine aux multiples facettes. Ce livre dépoussière l'une d'entre elles qui n'est que trop peu explorée dans la littérature : l'étude des flux de données, où les algorithmes doivent effectuer des prédictions, mais surtout s'adapter en temps réel à des données disponibles au compte-gouttes (même si ce dernier peut avoir un très bon débit !). Les auteurs font la part belle aux spécificités de ce paradigme : les calculs doivent être effectués très rapidement, on n'a presque pas de temps disponible par échantillon, ni de mémoire d'ailleurs.
Structurellement, on retrouve trois parties bien distinctes :
- une introduction très générale au domaine, qui montre néanmoins l'essentiel de MOA, un logiciel dédié aux tâches d'apprentissage dans les flux ;
- une présentation plus détaillée des algorithmes applicables à des flux, que ce soit pour les résumer, pour en dériver des modèles de prédiction ou pour explorer les données. Cette partie devrait plaire aux étudiants, professionnels et chercheurs qui souhaitent se lancer dans le domaine, notamment avec ses nombreuses références (pour les détails de certains algorithmes moins intéressants ou trop avancés : on sent un vrai lien entre le livre et la recherche actuelle dans le domaine). Les algorithmes sont détaillés avec un certain niveau de formalisme mathématique, pour bien comprendre ce qu'ils font (et pourquoi ils garantissent une certaine approximation de la réalité) ;
- finalement, un guide d'utilisation assez succinct de MOA, avec un bon nombre de captures d'écran du logiciel (imprimées en couleurs !), qui détaille les différents onglets de l'interface graphique (à l'aide de listes très descriptives, mais liées aux autres chapitres de l'ouvrage) et passe rapidement sur les interfaces en ligne de commande et de programmation (ces deux derniers chapitres sont brefs et doivent être complémentés par celui sur l'interface graphique, qui contient les éléments essentiels).
On peut néanmoins reprocher quelques références vers la suite du livre (la section 4.6.2 considère parfois le contenu de la 4.9.2 intégré, par exemple), mais aussi l'omniprésence de MOA : on a l'impression que les auteurs se sont focalisés sur les algorithmes disponibles dans cette boîte à outils, plutôt que de présenter les algorithmes les plus intéressants en général. Cette remarque est toutefois assez mineure, au vu de l'exhaustivité de MOA.
À noter : le livre est aussi disponible gratuitement au format HTML, les auteurs répondant aux commentaires qui leur sont laissés.
Avez-vous lu ce livre ? Qu'en pensez-vous ? 1 commentaire
Elements of Causal Inference
Foundations and Learning Algorithms
Résumé de l'éditeur
A concise and self-contained introduction to causal inference, increasingly important in data science and machine learning.
The mathematization of causality is a relatively recent development, and has become increasingly important in data science and machine learning. This book offers a self-contained and concise introduction to causal models and how to learn them from data. After explaining the need for causal models and discussing some of the principles underlying causal inference, the book teaches readers how to use causal models: how to compute intervention distributions, how to infer causal models from observational and interventional data, and how causal ideas could be exploited for classical machine learning problems. All of these topics are discussed first in terms of two variables and then in the more general multivariate case. The bivariate case turns out to be a particularly hard problem for causal learning because there are no conditional independences as used by classical methods for solving multivariate cases. The authors consider analyzing statistical asymmetries between cause and effect to be highly instructive, and they report on their decade of intensive research into this problem.
The book is accessible to readers with a background in machine learning or statistics, and can be used in graduate courses or as a reference for researchers. The text includes code snippets that can be copied and pasted, exercises, and an appendix with a summary of the most important technical concepts.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : MIT Press
ISBN10 : 0-262-03731-9
ISBN13 : 978-0-262-03731-0
- Statistical and Causal Models
- Assumptions for Causal Inference
- Cause-Effect Models
- Learning Cause-Effect Models
- Connections with Machine Learning, I
- Multivariate Causal Models
- Learning Multivariate Causal Models
- Connections with Machine Learning, II
- Hidden Variables
- Time Series
L'apprentissage automatique est un champ extrêmement développé, mais uniquement pour la découverte de corrélations entre variables. Il est parfois facile de déduire un lien entre des symptômes et une pathologie, mais les algorithmes d'apprentissage ne peuvent pas déterminer qui implique qui : est-ce à cause des symptômes que la maladie est présente ou est-ce l'inverse ? L'apprentissage causal cherche à répondre à ce genre de question, le livre ne porte que sur ce sujet.
Les trois auteurs présentent l'essentiel de ce domaine trop peu connu de la science des données, d'une manière progressive : les premiers raisonnements se font « avec les mains », la formalisation suit (à deux variables aléatoires pour commencer, puis dans le cas général). Notamment, les analyses contrefactuelles sont abordées en détail. Ils n'hésitent pas à parsemer leur texte de bouts de code pour faciliter la compréhension des concepts et la mise en pratique des algorithmes. À ce sujet, ils considèrent que le lecteur connaît les bases de R et de quelques bibliothèques pour comprendre ces morceaux de code, aucune explication syntaxique n'étant donnée. Autant que possible, le sujet est mis en relation avec l'apprentissage automatique plus classique.
Le style de rédaction est toutefois sec et académique. Ceci implique notamment l'abondance de références vers la littérature (les trois auteurs ne sont pas en reste dans la liste des citations…) pour approfondir les sujets : la présentation d'un algorithme se limite bien souvent aux idées principales sous-jacentes, le reste étant disponible dans la littérature. Globalement, l'ouvrage n'est pas toujours aussi facile à suivre que l'on espérerait : il est plutôt destiné à des gens qui connaissent déjà les bases de l'inférence de causalité, mais cherchent à approfondir le sujet ou à découvrir d'autres axes de recherche dans le domaine.
À noter : le livre est aussi disponible gratuitement au format PDF.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Écrire un scénario interactif
Jeux vidéo, escape games, serious games
Résumé de l'éditeur
Le jeu vidéo est devenu le premier produit culturel mondial. La narration y a enfin pris toute sa place. Découvrez-en les coulisses, embrassez votre créativité et plongez dans un atelier d'écriture unique guidé par les plus grands scénaristes interactifs.
Avec la scénarisation interactive, le spectateur devient acteur de l'œuvre. Grâce à cette narration, on parvient à faire passer des messages encore plus forts, car c'est le joueur qui expérimente ses propres choix et en subit les conséquences. C'est la narration ultime. Que vous soyez amateur/rice de jeux vidéo, étudiant(e) ou professionnel(le), découvrez comment créer des expériences personnalisées plus immersives que jamais et offrez à votre joueur/se l'opportunité à travers ses choix d'écrire son propre destin.
Les méthodes, stratégies et secrets de ce nouvel art vous attendent. Pour partir à leur rencontre, rendez-vous à la page 1.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Eyrolles
ISBN10 : 2-212-57100-3
ISBN13 : 978-2-212-57100-4
La scénarisation interactive, un art multimédia
- Qu'est-ce qu'un scénario interactif ?
- Cas d'usage d'un scénario interactif
- Se préparer à l'écriture interactive
Le scénario interactif, histoire d'un genre renouvelé
- Les livres dont vous êtes le héros
- Les jeux textuels et les jeux vidéo narratifs
Les fondamentaux du scénario interactif
- Architecture du scénario
- Créer un univers et maîtriser ses codes
- Le personnage principal
- Créer un réseau de personnages secondaires
- Les évènements déclencheurs et les révélations
- Le dialogue
- L'action
- Construire une scène
Les mécaniques de l'interactivité
- Maîtriser son outil de travail
- Imaginer les différentes fins
- Les différents types de choix
- Le bestiaire des graphes
- La force des contraintes
- Une expérience personnalisée
Dans le développement d'un jeu vidéo, les amateurs ont tendance à négliger un point en particulier : le scénario, surtout s'il est voulu interactif. Ce livre propose une base assez solide pour concevoir un tel scénario qui tient la route. Comme indiqué dans le sous-titre, le livre ne se focalise pas sur le jeu vidéo, loin de là : les auteurs traitent aussi bien les jeux audio (à la radio), audiovisuels (comme des films), de rôle (ceux que l'on joue sur table). Par contre, ils survolent les jeux sérieux (dont l'objectif n'est pas le divertissement, mais plutôt la pédagogie) et délaissent les jeux d'évasion (grandeur nature), pourtant cités sur la couverture, ce qui est dommage.
Tout au long de l'ouvrage, on retrouve une série de conseils pour bien s'organiser en travaillant sur un scénario, y compris pour la collaboration en équipe sur un projet réel. On sent vraiment que les auteurs ont une expérience de projets aboutis. Des illustrations en nombre aident à comprendre le propos. Dès que cela est nécessaire, les chapitres sont segmentés selon le medium visé. Le trio derrière la rédaction a aussi inclus des témoignages d'autres professionnels du secteur, pour apporter des astuces plus pragmatiques.
Outre le fond, la présentation est agréable : le livre est illustré en couleur, le texte est parsemé d'humour. La séquence entre les différents chapitres est indiquée à la manière d'un livre dont vous êtes le héros, pour éviter de sortir du cadre du scénario interactif.
On pourra cependant regretter le manque de profondeur et d'analyse, qui nuira aux lecteurs les moins expérimentés. Par exemple, tout au long de l'ouvrage, les auteurs parlent de genres et de clichés, mais sans jamais détailler un seul cliché, ni donner d'exemple pour retravailler une scène (tout au plus une phrase pour donner une idée). Ces précisions supplémentaires aideraient cependant à bien intégrer toutes les subtilités et, plus important encore, à mettre en pratique.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Data Visualization
Charts, Maps, and Interactive Graphics
Résumé de l'éditeur
This is the age of data. There are more innovations and more opportunities for interesting work with data than ever before, but there is also an overwhelming amount of quantitative information being published every day. Data visualisation has become big business, because communication is the difference between success and failure, no matter how clever the analysis may have been. The ability to visualize data is now a skill in demand across business, government, NGOs and academia.
Data Visualization: Charts, Maps, and Interactive Graphics gives an overview of a wide range of techniques and challenges, while staying accessible to anyone interested in working with and understanding data.
Features:
- Focusses on concepts and ways of thinking about data rather than algebra or computer code.
- Features 17 short chapters that can be read in one sitting.
- Includes chapters on big data, statistical and machine learning models, visual perception, high-dimensional data, and maps and geographic data.
- Contains more than 125 visualizations, most created by the author.
- Supported by a website with all code for creating the visualizations, further reading, datasets and practical advice on crafting the images.
Whether you are a student considering a career in data science, an analyst who wants to learn more about visualization, or the manager of a team working with data, this book will introduce you to a broad range of data visualization methods.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : CRC Press
ISBN10 : 1-138-55359-X
ISBN13 : 978-1-138-55359-0
- Why visualise?
- Translating numbers to images
- Continuous and discrete numbers
- Percentages and risks
- Showing data or statistics
- Differences, ratios, correlations
- Visual perception and the brain
- Showing uncertainty
- Time trends
- Statistical predictive models
- Machine learning techniques
- Many variables
- Maps and networks
- Interactivity
- Big data
- Visualisation as part of a bigger package
- Some overarching ideas
La visualisation de données est un besoin de plus en plus pressant, notamment dans un contexte de mégadonnées : c'est bien de disposer de données, c'est mieux d'arriver à les exploiter correctement. La visualisation est un outil très utile pour cela, mais seulement quand elle est appliquée à bon escient. C'est ce que ce livre propose : des techniques de visualisation, un lien avec les statistiques, des principes de conception d'une bonne visualisation, mais aussi toute une série d'exemples. L'auteur a comme but d'enseigner la manière de réaliser des graphiques qui ont un impact.
L'auteur est un statisticien et cela se ressent dans la manière d'aborder les sujets : pas question d'afficher des barres d'erreur sans expliciter ce qu'elles représentent (écart type, erreur standard, intervalle de confiance ?), par exemple. Ce n'est pas une raison pour abrutir le lecteur de mathématiques, puisque l'ouvrage ne comporte aucune formule, vraiment aucune. Quelques outils statistiques sont présentés, mais assez brièvement, uniquement en expliquant les principes généraux (des références sont là pour compléter). Ce choix est parfois limitant : pour le bootstrap, notamment, l'auteur répète maintes fois l'utilité de la technique, mais ne l'explique pas vraiment.
Les mises en situation constituent l'épine dorsale du livre, en ce sens que chaque chapitre dispose d'une ou plusieurs visualisations réalistes, parfois comparées : quels sont les avantages de telle manière de représenter les données, quelles sont les interprétations plus faciles à réaliser sur tel graphique, quelle visualisation ne peut pas fonctionner (sans oublier le pourquoi, qu'il soit plutôt statistique ou visuel). Cette manière de procéder rend l'ouvrage très lisible et attirant.
Pour la mise en pratique, l'auteur met à disposition sur son site le code source de chaque graphique qu'il a réalisé pour le livre (surtout en R) — même si le livre en lui-même ne présente pas une seule ligne de code, ce n'est pas un tutoriel R ou Stata.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Théorie des codes
Compression, cryptage, correction
Résumé de l'éditeur
Transmettre des informations sous forme numérique suppose entre autres d'optimiser la taille des messages transmis pour éviter de surcharger les canaux de transmission, d'être capable de rectifier des erreurs apparues en cours de transmission, de crypter les contenus et d'authentifier les émissaires et les destinataires...
L'originalité de cet ouvrage est de présenter tous les fondements mathématiques et informatiques sur lesquels reposent ces techniques.
Les notions théoriques présentées sont illustrées par 140 exercices corrigés.
Cette 3e édition s'enrichit de compléments sur les infrastructures à clefs publiques (PKI), les courbes elliptiques, les registres à décalage (LFSR), les fonctions de hachage.
L'utilisation de la cryptographie dans les applications mobiles (Facebook, Messenger, WhatsApp...) est abordée, et des bonnes pratiques de sécurité sont présentées pour des utilitaires incontournables comme GPG et SSH.
Avez-vous lu ce livre ? Qu'en pensez-vous ? 1 commentaire
Édition : Dunod
ISBN10 : 2-10-078109-X
ISBN13 : 978-2-10-078109-6
- Théorie des codes
- Théorie de l'information et compression
- Cryptologie
- Détection et corrections d'erreurs
Malgré ses aspects très mathématiques, la théorie de l'information se révèle très utile pour l'ingénieur, tant en informatique qu'en électronique, tant elle a su se faire une place : elle couvre la compression des données, la transmission avec détection et correction des erreurs, mais aussi le chiffrement des communications. Ce livre est assez particulier dans la littérature, car il couvre ces trois aspects (le chiffrement est souvent ignoré en théorie de l'information). Il a aussi l'avantage de n'aborder les éléments mathématiques qu'au compte-gouttes, selon les besoins du sujet développé — les auteurs ont évité de présenter trop d'éléments de manière abstraite, ils ont préféré recontextualiser.
Cette troisième édition aborde bon nombre de sujets au goût du jour, comme l'algorithme de hachage SHA-3 (Keccak) ou la cryptographie homomorphe. On peut cependant regretter que la cryptographie post-quantique ne soit pas plus évoquée, puisqu'elle n'est présente que dans un seul exercice (un cryptosystème résistant aux ordinateurs quantiques) : aucune mention des possibilités d'échange de clés à l'aide de photons intriqués, pourtant bientôt utilisés de manière commerciale.
Pour les étudiants, le livre dispose d'une grande série d'exercices, tous corrigés en annexe (bien que de manière assez succincte — suffisant pour vérifier que l'on a le bon résultat, pas tellement pour se débloquer), avec des niveaux de complexité assez variables (mais sans que ce niveau soit indiqué). Dans certains cas, on aurait plutôt préféré voir le sujet de l'exercice traité au fil du texte, avec plus de détails.
L'ouvrage est très complet dans sa présentation : sont présents tous les éléments nécessaires pour l'implémentation complète d'un système de compression, de chiffrement ou de codage sont disponibles, y compris les algorithmes de plus bas niveau (comme le produit efficace de deux polynômes). Les auteurs donnent aussi les recommandations actuelles pour rendre une implémentation cryptographiques sûre. La complétude continue dans les détails mathématiques, puisque toutes les définitions, tous les théorèmes utiles sont donnés (avec une présentation austère, toutefois), souvent avec leur preuve.
Avez-vous lu ce livre ? Qu'en pensez-vous ? 1 commentaire
Hands-On Unsupervised Learning Using Python
How to Build Applied Machine Learning Solutions from Unlabeled Data
Résumé de l'éditeur
Many industry experts consider unsupervised learning the next frontier in artificial intelligence, one that may hold the key to general artificial intelligence. Since the majority of the world's data is unlabeled, conventional supervised learning cannot be applied. Unsupervised learning, on the other hand, can be applied to unlabeled datasets to discover meaningful patterns buried deep in the data, patterns that may be near impossible for humans to uncover.
Author Ankur Patel shows you how to apply unsupervised learning using two simple, production-ready Python frameworks: Scikit-learn and TensorFlow using Keras. With code and hands-on examples, data scientists will identify difficult-to-find patterns in data and gain deeper business insight, detect anomalies, perform automatic feature engineering and selection, and generate synthetic datasets. All you need is programming and some machine learning experience to get started.
- Compare the strengths and weaknesses of the different machine learning approaches: supervised, unsupervised, and reinforcement learning
- Set up and manage machine learning projects end-to-end
- Build an anomaly detection system to catch credit card fraud
- Clusters users into distinct and homogeneous groups
- Perform semisupervised learning
- Develop movie recommender systems using restricted Boltzmann machines
- Generate synthetic images using generative adversarial networks
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : O'Reilly
ISBN10 : 1-4920-3564-5
ISBN13 : 978-1-4920-3564-0
Fundamentals of Unsupervised Learning
- Unsupervised Learning in the Machine Learning Ecosystem
- End-to-End Machine Learning Project
Unsupervised Learning Using Scikit-Learn
- Dimensionality Reduction
- Anomaly Detection
- Clustering
- Group Segmentation
Unsupervised Learning Using TensorFlow and Keras
- Autoencoders
- Hands-On Autoencoder
- Semisupervised Learning
Deep Unsupervised Learning Using TensorFlow and Keras
- Recommender Systems Using Restricted Boltzmann Machines
- Feature Detection Using Deep Belief Networks
- Generative Adversarial Networks
- Time Series Clustering
Le titre de cet ouvrage promet une belle partie appliquée, c'est effectivement ce que l'on ressent à sa lecture : on ne compte plus les lignes de code pour bien montrer ce que l'auteur fait, notamment dans ses graphiques (le code les générant étant présent dans le livre in extenso). Tout le code est d'ailleurs écrit avec Python 3, en utilisant les dernières versions des bibliothèques, afin de rester utilisable aussi longtemps que possible. Ce côté appliqué est présent tout au long du livre, l'auteur cherche toujours à présenter une utilité aux algorithmes qu'il aborde, il ne se contente pas d'un inventaire à la Prévert, le lien avec les applications réalistes est toujours présent.
L'ouvrage est construit progressivement, avec des techniques de plus en plus avancées, en présentant d'abord brièvement les concepts théoriques (sans mathématiques, car tel n'est pas le but du livre), les algorithmes, puis en plongeant dans la pratique. Les approches sont bien souvent comparées sur un même exemple, afin d'en voir les avantages et inconvénients. Cependant, l'apprentissage non supervisé n'est vu que sous un seul angle : l'exploitation de données sans étiquettes dans l'objectif d'effectuer des prédictions, c'est-à-dire comme une approche entièrement supervisée. Ce faisant, tous les aspects d'analyse de données sont négligés : il aurait été agréable, par exemple, de voir une application de partitionnement de données pour comprendre ce qu'elles contiennent (comme déterminer, sans a priori, les différentes manières de participer à un jeu). Au contraire, dans les exemples de partitionnement, on sait d'avance le nombre de classes que l'on cherche.
Au niveau de la présentation, une grande quantité de code et parfois d'images est redondante. Dans les premiers exemples, qui montrent plusieurs algorithmes d'apprentissage supervisé, la validation croisée est présentée à chaque fois, au lieu de se focaliser sur les différences entre les algorithmes. Chaque chapitre commence par une bonne page d'importation de modules Python (y compris des modules qui ne sont pas utilisés dans ce chapitre !). Certaines parties présentent une grande quantité d'images disposées de telle sorte qu'elles prennent un maximum de place (six images de taille raisonnable présentées sur trois pages, alors qu'en les réduisant un peu on aurait pu tout faire tenir sur une seule face…). Par ailleurs, toutes les images sont en noir et blanc, mais ont été conçues en couleurs : il est souvent difficile de s'y retrouver, car l'information de couleur est très exploitée (notamment pour présenter plusieurs courbes : elles ont sûrement des couleurs très différentes, mais les niveaux de gris se ressemblent trop pour que l'on arrive à faire la distinction entre les courbes).
Le côté technique m'a vraiment déçu. Les algorithmes sont présentés très rapidement, leurs paramètres sont quelque peu vus comme des boîtes noires ou simplement ignorés : comment peut-on en comprendre l'impact sur la solution ? Le chapitre sur la détection d'anomalies n'est vu que comme une application de la réduction de dimensionnalité, on ne trouve aucune discussion des algorithmes spécifiquement prévus pour cette tâche (forêts d'isolation, SVM à une classe, etc.), ce qui est assez réducteur. On ne trouve aucune mention des plongements (comme word2vec pour la représentation de mots) dans la section sur les autoencodeurs, alors que c'en est une application très importante.
Le public ciblé semble n'avoir qu'une assez faible expérience en apprentissage automatique. Le livre sera surtout utile à ceux qui veulent une introduction rapide et pas trop poussée au domaine de l'apprentissage non supervisé, un survol du domaine en abordant toutes ses facettes principales. Ceux qui se demandent à quoi l'apprentissage non supervisé peut bien être utile seront servis, mais n'en verront pas toutes les possibilités.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Stream Processing with Apache Flink
Fundamentals, Implementation, and Operation of Streaming Applications
Résumé de l'éditeur
Get started with Apache Flink, the open source framework that powers some of the world's largest stream processing applications. With this practical book, you'll explore the fundamental concepts of parallel stream processing and discover how this technology differs from traditional batch data processing.
Longtime Apache Flink committers Fabian Hueske and Vasia Kalavri show you how to implement scalable streaming applications with Flink's DataStream API and continuously run and maintain these applications in operational environments. Stream processing is ideal for many use cases, including low-latency ETL, streaming analytics, and real-time dashboards as well as fraud detection, anomaly detection, and alerting. You can process continuous data of any kind, including user interactions, financial transactions, and IoT data, as soon as you generate them.
- Learn concepts and challenges of distributed stateful stream processing
- Explore Flink's system architecture, including its event-time processing mode and fault-tolerance model
- Understand the fundamentals and building blocks of the DataStream API, including its time-based and statefuloperators
- Read data from and write data to external systems with exactly-once consistency
- Deploy and configure Flink clusters
- Operate continuously running streaming applications
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : O'Reilly
ISBN10 : 1-4919-7429-X
ISBN13 : 978-1-4919-7429-2
- Introduction into Data Stream Processing
- Stream Processing Fundamentals
- The Architecture of Apache Flink
- Setting up a development environment for Apache Flink
- The DataStream API (v1.7)
- Time-based and Windows Operators
- Stateful Operators and Applications
- Reading from and Writing to External Systems
- Setting up Flink for Streaming Applications
- Operating Flink and Streaming Applications
- Where to Go from Here?
La nouvelle frontière de l'exploitation de gros jeux de données est le flux, quand de grandes quantités de données arrivent en temps réel et doivent être traitées à la même vitesse. Apache Flink est un outil moderne pour traiter ces problématiques et ce livre, écrit par deux développeurs majeurs du projet, se focalise sur la meilleure manière de développer de telles applications. Il est d'ailleurs très complet et part vraiment des bases (plus théoriques) du traitement de données en flux — certains regretteront que le code fasse son apparition aux alentours de la page 80.
Le contenu se structure de façon très progressive : les auteurs parlent d'abord des principes généraux, puis développent petit à petit et finissent dans des détails sur le fonctionnement interne de Flink (en veillant toutefois à ce que le contenu reste utile pour plusieurs versions). Ainsi, quand l'explication d'un système particulier requiert des détails d'autres sous-systèmes (comme le mécanisme de sauvegarde), ceux-ci sont d'abord esquissés, puis détaillés dans une section ou un chapitre futur : on ne se sent pas dépassé par le contenu, grâce à cette approche progressive.
À ce sujet, le livre couvre Flink 1.7, la version 1.8 étant sortie le même mois que le livre — les nouveautés de Flink 1.8 ne sont pas abordées, ni même citées, comme les évolutions du schéma d'état ou le traitement de données par lots. Chaque système est illustré par l'un ou l'autre exemple, très courts au début du livre, puis bien plus longs ; pour bien en profiter, des connaissances basiques en Scala seront nécessaires (le langage n'est pas du tout présenté). On pourra cependant regretter l'absence d'exemples complets, qui combinent toute une série de fonctionnalités, comme un cas d'utilisation.
Globalement, cet ouvrage pourra viser tant un public de débutants (rien n'est omis dans les bases) que de développeurs plus chevronnés dans le traitement de données en flux (les systèmes et choix de conception de Flink sont abordés en profondeur). Il ne se limite pas aux fonctionnalités et opérateurs de base, mais présente bien toutes les possibilités que l'on a d'adapter le fonctionnement de Flink à ses besoins.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Think Julia
How to Think Like a Computer Scientist
Résumé de l'éditeur
If you're just learning how to program, Julia is an excellent JIT-compiled, dynamically-typed language with a clean syntax. This hands-on guide uses Julia (version 1.0) to walk you through programming one step at a time, beginning with basic programming concepts before moving on to more advanced capabilities, such as creating new types and multiple dispatch.
Designed from the beginning for high performance, Julia is a general-purpose language not only ideal for numerical analysis and computational science, but also for web programming or scripting. Through exercises in each chapter, you'll try out programming concepts as you learn them.
Think Julia is ideal for students at the high school or college level, as well as self-learners, home-schooled students, and professionals who need to learn programming basics.
- Start with the basics, including language syntax and semantics
- Get a clear definition of each programming concept
- Learn about values, variables, statements, functions, and data structures in a logical progression
- Discover how to work with files and databases
- Understand types, methods, and multiple dispatch
- Use debugging techniques to fix syntax, runtime, and semantic errors
- Explore interface design and data structures through case studies
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : O'Reilly
ISBN10 : 1-4920-4503-9
ISBN13 : 978-1-4920-4503-8
- The Way of the Program
- Variables, Expressions, and Statements
- Functions
- Case Study: Interface Design
- Conditionals and Recursion
- Fruitful Functions
- Iteration
- Strings
- Case Study: Word Play
- Arrays
- Dictionaries
- Tuples
- Case Study: Data Structure Selection
- Files
- Structs and Objects
- Structs and Functions
- Multiple Dispatch
- Subtyping
- The Goodies: Syntax
- The Goodies: Base and Standard Library
- Debugging
Julia est un langage de programmation assez récent, mais qui perce notamment dans les domaines où la performance est critique ou quand les besoins en syntaxe spécifique au domaine (DSL) sont élevés. Ce livre présente le langage en faisant abstraction des domaines où il est le plus apprécié, en suivant une approche très progressive adaptée à l'apprentissage de la programmation. L'auteur ne présente donc aucun élément spécifique aux applications du langage, ni même de paquet supplémentaire : il fait plutôt un tri dans les constructions pour proposer les plus courantes, en évitant la redondance — ce qui n'est pas plus mal pour aborder la programmation ! Deux chapitres présentent toutefois brièvement les constructions et outils qui n'ont pas été abordés plus tôt dans l'ouvrage, au cas où le lecteur aurait du code à lire.
De même, chaque chapitre contient une série d'exercices pour mettre en pratique le contenu étudié (malheureusement, la correction n'est disponible qu'en ligne). La pratique est vraiment mise en avant, mais les aspects plus théoriques ne sont pas pour autant négligés quand ils sont nécessaires. Ces passages sont d'ailleurs très clairs. Chaque chapitre se termine par un glossaire des nouveaux termes utilisés dans l'ouvrage, ainsi que, bien souvent, avec une section sur le débogage et les techniques adaptées aux constructions du langage présentées dans ce chapitre. Le dernier chapitre vient ajouter une couche de débogage supplémentaire, pour aider ceux qui n'ont pas de grande expérience en programmation à toujours arriver à leurs fins. Aussi, trois chapitres sont dédiés à des études de cas, qui ne servent qu'à la mise en pratique des nouveaux savoirs, la mise en perspective de différentes manières d'aborder une même problématique.
Le livre est rédigé de manière attrayante et vivante, il ne s'agit pas d'un austère cours de programmation où l'on n'apprend finalement pas grand-chose. Bien au contraire ! Les fonctions disponibles de base en Julia mais réimplémentées pour l'exemple sont toujours suivies de la meilleure manière de procéder (c'est-à-dire d'utiliser l'implémentation de base), ce que tous les ouvrages pour débutants ne font pas forcément. Le chapitre sur la gestion des chaînes de caractères pourrait poser quelques soucis de compréhension pour ceux qui ne sont pas habitués à l'informatique, mais c'est pour la bonne cause, puisque seul Unicode est enseigné, avec ses caractères représentés sur plusieurs octets : de manière globale, l'ouvrage tend à ne présenter que de bonnes pratiques avec le langage.
Globalement, ce livre servira de socle pour tout qui souhaite se lancer en programmation avec le langage Julia. Par contre, eux qui sont déjà adeptes de l'un ou l'autre langage de programmation n'apprécieront probablement pas son rythme lent. On peut regretter que certains points ne soient pas abordés, comme la macro @enum, le paquet Revise.jl ou les opérations vectorielles, s'il faut vraiment chercher une critique à apporter.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
GPU Parallel Program Development Using CUDA
Résumé de l'éditeur
GPU Parallel Program Development using CUDA teaches GPU programming by showing the differences among different families of GPUs. This approach prepares the reader for the next generation and future generations of GPUs. The book emphasizes concepts that will remain relevant for a long time, rather than concepts that are platform-specific. At the same time, the book also provides platform-dependent explanations that are as valuable as generalized GPU concepts.
The book consists of three separate parts; it starts by explaining parallelism using CPU multi-threading in Part I. A few simple programs are used to demonstrate the concept of dividing a large task into multiple parallel sub-tasks and mapping them to CPU threads. Multiple ways of parallelizing the same task are analyzed and their pros/cons are studied in terms of both core and memory operation.
Part II of the book introduces GPU massive parallelism. The same programs are parallelized on multiple Nvidia GPU platforms and the same performance analysis is repeated. Because the core and memory structures of CPUs and GPUs are different, the results differ in interesting ways. The end goal is to make programmers aware of all the good ideas, as well as the bad ideas, so readers can apply the good ideas and avoid the bad ideas in their own programs.
Part III of the book provides pointer for readers who want to expand their horizons. It provides a brief introduction to popular CUDA libraries (such as cuBLAS, cuFFT, NPP, and Thrust),the OpenCL programming language, an overview of GPU programming using other programming languages and API libraries (such as Python, OpenCV, OpenGL, and Apple's Swift and Metal,) and the deep learning library cuDNN.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : CRC Press
ISBN10 : 1-4987-5075-3
ISBN13 : 978-1-4987-5075-2
Understanding CPU Parallelism
- Introduction to CPU Parallel Programming
- Developing Our First Parallel CPU Program
- Improving Our First Parallel CPU Program
- Understanding the Cores and Memory
- Thread Management and Synchronization
GPU Programming Using CUDA
- Introduction to GPU Parallelism and CUDA
- CUDA Host/Device Programming Model
- Understanding GPU Hardware Architecture
- Understanding GPU Cores
- Understanding GPU Memory
- CUDA Streams
More To Know
- CUDA Libraries
- Introduction to Open CL
- Other GPU Programming Languages
Deep Unsupervised Learning Using TensorFlow and Keras
- Recommender Systems Using Restricted Boltzmann Machines
- Feature Detection Using Deep Belief Networks
- Generative Adversarial Networks
- Time Series Clustering
La programmation de cartes graphiques pour du calcul généraliste est un art exigeant : écrire du code correct n'est pas suffisant, il faut aussi qu'il soit rapide, sinon il n'est pas très utile de passer sur un processeur graphique. Pour y arriver, la meilleure alliée est probablement l'expérience et l'auteur semble en avoir une certaine quantité.
Ce livre prend le lecteur par la main en ce qui concerne l'écriture de code (très) performant, tant sur CPU que GPU. Il commence par expliquer toutes les notions utiles pour un CPU, avant de généraliser aux GPU (et de préciser les distinctions), pour travailler à une échelle plus habituelle pour un programmeur (quelques fils d'exécution, pas plusieurs millions). Le lecteur est abreuvé de détails de bas niveau sur le fonctionnement d'un processeur et de la mémoire, afin d'en profiter un maximum : autant que possible, l'auteur limite ses explications à des invariants dans la conception de ces processeurs, de telle sorte que le livre reste utile pendant plusieurs générations de matériel.
Le livre se focalise sur extrêmement peu d'exemples différents, toujours pris dans le traitement d'images (retournement d'une image et détection d'arêtes). Ces exemples ont des caractéristiques suffisamment variées pour les besoins du livre (utilisation intense de la mémoire ou des capacités de calcul) et permettent d'aller droit au but dans les améliorations de performance. D'ailleurs, les analyses de performance ne se limitent pas à constater des différences, mais bien à les expliquer en détail en fonction du matériel utilisé.
La partie la plus décevante du livre est sans conteste la troisième, qui sort de CUDA. On a droit à des introductions extrêmement courtes et partielles à des sujets bien plus variés. Par exemple, pour les bibliothèques livrées avec CUDA, on a plus une liste de possibilités qu'une vraie explication de leur utilisation. Le très bref chapitre sur les réseaux neuronaux explique très rapidement le principe, l'existence de la bibliothèque cuDNN, ses fonctions principales (mais juste les noms, pas leur utilisation !) avant de conseiller l'utilisation de Keras : au vu du titre du livre, on s'attendait à plus de détails.
Le ton est vivant, pas lénifiant, comme l'on a parfois dans les ouvrages introductifs du genre : l'auteur a une certaine expérience pédagogique et la met à profit (même si les personnes allergiques aux noix de coco feraient mieux de passer leur chemin — les concepts principaux sont expliqués à l'aide d'analogies avec la récolte de noix de coco). Une conséquence est que le livre n'est pas compact, les explications ne laissant pas beaucoup de place à l'interprétation. Le public visé n'a pas de grandes connaissances en programmation de haute performance, il s'agit plutôt de scientifiques non informaticiens ou d'étudiants dans ces domaines — par exemple, les premiers chapitres ne supposent aucune connaissance de la ligne de commandes.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Computer Graphics Through OpenGL
From Theory to Experiments
Résumé de l'éditeur
From geometric primitives to animation to 3D modeling to lighting, shading and texturing, Computer Graphics Through OpenGL®: From Theory to Experiments is a comprehensive introduction to computer graphics which uses an active learning style to teach key concepts. Equally emphasizing theory and practice, the book provides an understanding not only of the principles of 3D computer graphics, but also the use of the OpenGL® Application Programming Interface (API) to code 3D scenes and animation, including games and movies.
The undergraduate core of the book takes the student from zero knowledge of computer graphics to a mastery of the fundamental concepts with the ability to code applications using fourth-generation OpenGL®. The remaining chapters explore more advanced topics, including the structure of curves and surfaces, applications of projective spaces and transformations and the implementation of graphics pipelines.
Part II of the book introduces GPU massive parallelism. The same programs are parallelized on multiple Nvidia GPU platforms and the same performance analysis is repeated. Because the core and memory structures of CPUs and GPUs are different, the results differ in interesting ways. The end goal is to make programmers aware of all the good ideas, as well as the bad ideas, so readers can apply the good ideas and avoid the bad ideas in their own programs.
This book can be used for introductory undergraduate computer graphics courses over one to two semesters. The careful exposition style attempting to explain each concept in the simplest terms possible should appeal to the self-study student as well.
Features
- Covers the foundations of 3D computer graphics, including animation, visual techniques and 3D modeling
- Comprehensive coverage of OpenGL® 4.x, including the GLSL and vertex, fragment, tessellation and geometry shaders
- Includes 180 programs with 270 experiments based on them
- Contains 750 exercises, 110 worked examples, and 700 four-color illustrations
- Requires no previous knowledge of computer graphics
- Balances theory with programming practice using a hands-on interactive approach to explain the underlying concepts
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : CRC Press
ISBN10 : 1-138-61264-2
ISBN13 : 978-1-138-61264-8
Hello World
- An Invitation To Computer Graphics
- On To OpenGL And 3D Computer Graphics
Tricks Of The Trade
- An OpenGL Toolbox
Movers And Shapers
- Transformation, Animation And Viewing
- Inside Animation: The Theory of Transformations
- Advanced Animation Techniques
Geometry for the Home Office
- Convexity and Interpolation
- Triangulation
- Orientation
Making Things Up
- Modeling in 3D Space
Lights, Camera, Equation
- Color and Light
- Texture
- Special Visual Techniques
Pixels, Pixels, Everywhere
- Raster Algorithms
Programming Pipe Dreams
- OpenGL 4.3, Shaders And The Programmable Pipeline: Liftoff
- OpenGL 4.3, Shaders And The Programmable Pipeline: Escape Velocity
Anatomy Of Curves And Surfaces
- Bézier
- B-Spline
- Hermite
Well Projected
- Applications Of Projective Spaces: Projection Transformations and Rational Curves
Time For A Pipe
- Pipeline Operation
Appendices
- Projective Spaces and Transformations
- Math Self-Test
- Math Self-Test Solutions
L'infographie 3D est un domaine paradoxal : autant les applications montrent vite un côté fun et entraînant, autant l'apprentissage peut se montrer rébarbatif. Ce livre met véritablement l'accent sur la pratique, c'est-à-dire que les concepts sont dès que possible mis en pratique à l'aide d'« expériences », des morceaux de code à lancer pour mieux comprendre. L'aspect pratique est tellement développé qu'il est handicapant de ne pas avoir d'ordinateur à proximité pour tester ces exemples !
Le côté théorique n'est pas mis de côté, il est fort présent, au point que l'auteur se sent parfois obligé d'indiquer que certaines sections peuvent être sautées en première lecture. Le niveau de détail est toutefois adapté pour des autodidactes, avec des prérequis raisonnables (sauf pour la partie sur la géométrie projective, bien plus difficile d'accès) : trigonométrie, analyse mathématique, algèbre linéaire, à un niveau relativement basique. Les sections vraiment mathématiques sont présentées d'abord de manière assez abstraite, mais en contexte l'objectif n'est pas d'enseigner des mathématiques, mais des outils mathématiques utiles dans un contexte infographique. L'auteur fait autant de liens que possible avec la pratique d'OpenGL.
L'approche pédagogique risque de surprendre, puisque les quinze premiers chapitres se focalisent sur OpenGL « à l'ancienne », avec toutes ses fonctions fixes. De la sorte, l'auteur suit une approche progressive, laissant OpenGL gérer un grand nombre de difficultés pour se focaliser sur les principes de base (VAO et VBO ne simplifient pas le code) : par conséquent, les nuanceurs n'arrivent que très tard, Vulkan n'est que cité. On peut aussi regretter que la pratique des nuanceurs ne soit pas plus développée, l'auteur ne montrant qu'une série d'effets que l'on peut implémenter grâce à eux. Ce livre ne vise pas à enseigner l'utilisation d'OpenGL, mais bien les principes de l'infographie 3D : la syntaxe OpenGL n'est pas aussi importante que la bonne compréhension des principes sous-jacents.
L'ouvrage ne contient pas énormément de code, surtout les parties nécessaires à la compréhension. Pour voir le code au complet, le lecteur est redirigé vers le contenu supplémentaire du livre. À titre personnel, j'aurais néanmoins préféré voir plus d'extraits de code dans le texte. Il paraît que tout le code est écrit en C++, mais il s'agit plus d'un C89 avec des classes (notamment avec les définitions de variables en début de bloc) : utiliser la classe string plutôt qu'un tableau char* aurait simplifié certains passages.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Algorithms Illuminated: The Basics
Résumé de l'éditeur
Accessible, no-nonsense, and programming language-agnostic introduction to algorithms. Includes solutions to all quizzes and selected problems, and a series of YouTube videos by the author accompanies the book. Part 1 covers asymptotic analysis and big-O notation, divide-and-conquer algorithms and the master method, randomized algorithms, and several famous algorithms for sorting and selection.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Soundlikeyourself Publishing
ISBN10 : 0-999-28290-5
ISBN13 : 978-0-999-28290-8
- Introduction
- Asymptotic Notation
- Divide-and-Conquer Algorithms
- The Master Method
- QuickSort
- Linear-Time Selection
- Quick Review of Proofs By Induction
- Quick Review of Discrete Probability
L'algorithmique est un sujet indispensable pour toute formation de développeur informatique et c'est (malheureusement ou non) souvent un sujet testé lors des interviews de code des grandes entreprises. Cependant, la matière est souvent enseignée de manière très rigide et rarement accessible au plus grand nombre, y compris en début de cursus (l'algorithmique est parfois considérée comme un sujet éliminatoire par les enseignants).
Ce livre propose un autre angle de vue sur le sujet : le texte est clair, pas encombré de termes techniques inutiles. Le contenu est abordé de manière progressive et intégrée (les notations asymptotiques ne sont pas détaillées de manière abstraite, mais dans le concret d'un algorithme). L'auteur a fait le choix de présenter relativement peu d'algorithmes (aucun algorithme de tri ne nécessite de structure de données comme le monceau), ce qui lui permet d'entrer dans les détails. Chacun est d'ailleurs placé dans un vrai contexte avec des problèmes réels où cet algorithme peut être utilisé. Chaque chapitre est terminé par un petit encadré résumant les notions les plus importantes abordées dans ce chapitre.
L'un des choix posés lors de la rédaction a été une complète indépendance vis-à-vis du langage de programmation. D'un côté, cela rend le livre plus abstrait et légèrement moins accessible. De l'autre, cela permet d'éviter les complexités liées à la syntaxe d'un langage de programmation (le lecteur est d'ailleurs supposé déjà savoir programmer dans un langage, c'est presque le seul prérequis — avec un petit peu de mathématiques). Les intrications mathématiques sont limitées au maximum, afin d'élargir le public visé. Certains sujets nécessitent plus d'écritures mathématiques, mais ils sont clairement indiqués comme tels et ne sont pas nécessaires à la bonne compréhension globale de l'ouvrage.
Ce livre fait partie d'une série de quatre et il est extrait de cours en ligne donnés par l'auteur. Ce premier tome parle d'algorithmique en général, sans entrer dans les détails de structures de données : il se limite à quelques algorithmes de tri (le tri rapide ayant droit à son propre chapitre bien détaillé). L'auteur a d'ailleurs réutilisé certaines des ressources de ces cours pour compléter le livre. On y retrouve donc l'un ou l'autre quiz (avec des solutions très détaillées) et des problèmes (la plupart ayant une solution explicitée dans le livre), mais aussi des tests plus compliqués en ligne ainsi que des vidéos.
En résumé, je trouve que ce livre est une très bonne introduction au sujet de l'algorithmique. Il conviendra très bien aux plus débutants et à ceux que le domaine rebute. Par contre, il faudra le compléter par d'autres livres pour approfondir.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Algorithms Illuminated: Graph Algorithms and Data Structures
Résumé de l'éditeur
Accessible, no-nonsense, and programming language-agnostic introduction to algorithms. Includes solutions to all quizzes and selected problems, and a series of YouTube videos by the author accompanies the book. Part 2 covers graph search and its applications, shortest-path algorithms, and the applications and implementation of several data structures: heaps, search trees, hash tables, and bloom filters. (Part 1 is not a prerequisite.)
Avez-vous lu ce livre ? Qu'en pensez-vous ? 5 commentaires
Édition : Soundlikeyourself Publishing
ISBN10 : 0-999-28292-1
ISBN13 : 978-0-999-28292-2
- Graphs: The Basics
- Graph Search and Its Application
- Dijkstra's Shortest-Path Algorithm
- The Heap Data Structure
- Search Trees
- Hash Tables and Bloom Filters
- Quick Review of Asymptotic Notation
L'algorithmique est un sujet indispensable pour toute formation de développeur informatique, notamment sa partie sur les structures de données. Ce deuxième tome se focalise sur cette notion (ainsi que sur les graphes) et montre à quel point un bon choix de structure de données permet de réduire la complexité d'un algorithme. Il suit de manière très naturelle le premier (bases de l'algorithmique), sans toutefois en nécessiter la lecture : si vous avez de vieilles bases en algorithmique, vous pourrez probablement passer directement à ce deuxième volume pour vous remettre à jour (au cas où vos souvenirs seraient trop émoussés, une annexe résume — forcément brièvement — les éléments essentiels). Les plus débutants devraient cependant plutôt débuter par le premier livre, avec des explications des concepts de complexité bien plus poussées. Cette division en deux volumes fait d'ailleurs que certains éléments sont répétés par rapport au premier tome (comme la justification du pseudocode ou la définition du tri, ainsi que certains traits d'humour).
Comme dans le premier tome, l'auteur prend le parti d'un texte clair, épuré, accessible au plus grand nombre (on peut apprécier la quantité d'illustrations pour les algorithmes de traversée de graphes, pas toujours les plus intuitifs quand on débute dans le domaine). À nouveau, il se focalise sur les éléments les plus importants du sujet. Notamment, seul l'algorithme de Dijkstra pour les plus courts chemins est détaillé dans le livre (pas de Bellman-Ford ou d'A*). Un autre exemple, peut-être plus litigieux, est celui des structures de données de base, puisque l'auteur considère que le lecteur est parfaitement au courant des propriétés et de la manipulation des tableaux, des listes liées, des files et des piles.
Plus que le premier tome, ce deuxième volume se rapproche des applications pratiques. Les algorithmes présentés semblent moins utiles, mais seulement à première vue. L'auteur met toujours les algorithmes en contexte, justifie leur besoin réel. Ainsi, les algorithmes travaillant sur des graphes sont présentés en même temps que leurs applications dans les réseaux ou la planification. Ce côté appliqué se montre aussi dans la structure des chapitres sur les structures de données : le praticien doit surtout connaître les opérations principales des structures de données, leur complexité, mais pas forcément leur implémentation. L'auteur sépare ainsi la spécification de la structure de données des techniques d'implémentation.
L'organisation des chapitres peut sembler un peu contre-intuitive, avec d'abord les graphes et puis les structures de données. Elle a le grand avantage de justifier le besoin en structures de données par la pratique, par la recherche d'algorithmes efficaces pour des besoins concrets (pas vraiment académiques). On peut regretter que ce tome soit autant lié à la série pour certains aspects : l'algorithme de Dijkstra n'est pas l'algorithme le plus générique pour les plus courts chemins, mais il est le seul présenté ici. Il faudra attendre le troisième tome pour découvrir l'algorithme de Bellman-Ford, dans le cadre de la programmation dynamique (peu après avoir lié celui de Dijkstra aux algorithmes gloutons).
Ce livre fait partie d'une série de quatre et il est extrait de cours en ligne donnés par l'auteur. L'auteur en a réutilisé certaines ressources pour le compléter. On y retrouve donc l'un ou l'autre quiz (avec des solutions très détaillées) et des problèmes (la plupart ayant une solution explicitée dans le livre), mais aussi des tests plus compliqués en ligne ainsi que des vidéos.
Avez-vous lu ce livre ? Qu'en pensez-vous ? 5 commentaires
Algorithms Illuminated: Greedy Algorithms and Dynamic Programming
Résumé de l'éditeur
Accessible, no-nonsense, and programming language-agnostic introduction to algorithms. Includes hints or solutions to all quizzes and problems, and a series of YouTube videos by the author accompanies the book. Part 3 covers greedy algorithms (scheduling, minimum spanning trees, clustering, Huffman codes) and dynamic programming (knapsack, sequence alignment, shortest paths, optimal search trees).
Avez-vous lu ce livre ? Qu'en pensez-vous ? 1 commentaire
Édition : Soundlikeyourself Publishing
ISBN10 : 0-999-28294-8
ISBN13 : 978-0-999-28294-6
- Introduction to Greedy Algorithms
- Huffman Codes
- Minimum Spanning Trees
- Introduction to Dynamic Programming
- Advanced Dynamic Programming
- Shortest Paths Revisited
- Epilogue: A Field Guide to Algorithm Design
L'algorithmique est un sujet indispensable pour toute formation de développeur informatique. Ce troisième tome s'intéresse à la manière de concevoir de nouveaux algorithmes selon deux paradigmes : les algorithmes gloutons et la programmation dynamique. Ce livre se place dans la lignée des deux premiers de la série, avec un approfondissement des sujets : par exemple, le deuxième tome abordait les graphes, le troisième présente l'algorithme de Bellman-Ford pour le calcul de plus courts chemins. La lecture des deux premiers ouvrages n'est pas absolument nécessaire, si toutefois vous en avez acquis les bases (aucune annexe ne résume les éléments essentiels) ; certaines connaissances en algorithmique sont requises pour profiter de ce livre.
L'auteur continue avec son parti pris d'un texte clair, épuré, accessible au plus grand nombre. Malgré le niveau technique plus avancé que dans les deux premiers tomes, les explications restent claires et faciles à suivre. Cette troisième partie de la série contient presque exclusivement des exemples des deux techniques de conception d'algorithmes, notamment avec les algorithmes les plus connus et utiles (on a déjà cité Bellman-Ford, il ne faut pas oublier les codes de Huffman, les algorithmes de Prim, de Kruskal, de Floyd-Warshall pour les graphes). Elle s'oriente encore plus vers des applications, mais aussi de la recherche (avec quelques références vers des articles parfois très récents — 2018).
Ce livre fait partie d'une série de quatre et il est extrait de cours en ligne donnés par l'auteur. Tim Roughgarden en a réutilisé certaines ressources pour le compléter. On y retrouve donc l'un ou l'autre quiz (avec des solutions très détaillées) et des problèmes (la plupart ayant une solution explicitée dans le livre), mais aussi des tests plus compliqués en ligne ainsi que des vidéos.
Avez-vous lu ce livre ? Qu'en pensez-vous ? 1 commentaire
Kernelization
Theory of Parameterized Preprocessing
Résumé de l'éditeur
Preprocessing, or data reduction, is a standard technique for simplifying and speeding up computation. Written by a team of experts in the field, this book introduces a rapidly developing area of preprocessing analysis known as kernelization. The authors provide an overview of basic methods and important results, with accessible explanations of the most recent advances in the area, such as meta-kernelization, representative sets, polynomial lower bounds, and lossy kernelization. The text is divided into four parts, which cover the different theoretical aspects of the area: upper bounds, meta-theorems, lower bounds, and beyond kernelization. The methods are demonstrated through extensive examples using a single data set. Written to be self-contained, the book only requires a basic background in algorithmics and will be of use to professionals, researchers and graduate students in theoretical computer science, optimization, combinatorics, and related fields.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Cambridge University Press
ISBN10 : 1-107-41515-2
ISBN13 : 978-1-107-41515-7
- What Is a Kernel?
Upper Bounds
- Warm Up
- Inductive Priorities
- Crown Decomposition
- Expansion Lemma
- Linear Programming
- Hypertrees
- Sunflower Lemma
- Modules
- Matroids
- Representative Families
- Greedy Packing
- Euler's Formula
Meta Theorems
- Introduction to Treewidth
- Bidimensionality and Protrusions
- Surgery on Graphs
Lower Bounds
- Framework
- Instance Selectors
- Polynomial Parameter Transformation
- Polynomial Lower Bounds
- Extending Distillation
Beyond Kernelization
- Turing Kernelization
- Lossy Kernelization
La recherche d'algorithmes aussi efficaces que possible pour les problèmes les plus difficiles (c'est-à-dire dans la classe de complexité NP-hard) a lancé la communauté scientifique dans une série de pistes. L'une des approches les plus récentes est la définition de noyaux, des transformations des données d'entrée qui permettent de les réécrire en en diminuant la taille. Ce livre parle exclusivement de ces techniques de définition de noyaux, son sujet est donc l'informatique théorique, plus particulièrement la complexité paramétrique. Malgré le niveau élevé du contenu abordé, les prérequis sont assez limités : une bonne formation en informatique de niveau universitaire suffit, avec une certaine expérience des machines de Turing et de la théorie des graphes.
Pour un sujet aussi complexe et avancé, les auteurs font preuve d'une bonne pédagogie, ils avancent sans hâte, partant de définitions plutôt intuitives pour aller jusqu'à une formalisation complète des concepts utilisés. Cependant, l'approche reste académique, les exemples ne sont pas légion : bon nombre de transformations auraient pu bénéficier d'être explicitées sur des graphes, pour éviter d'être expliquées uniquement de manière abstraite. La plupart des résultats avancés sont prouvés, sans omettre d'étape importante dans le raisonnement, ce qui en facilitera la compréhension par des gens qui ne sont pas du milieu.
Une bonne partie de l'ouvrage présente des outils pour dériver des noyaux utiles, avec plusieurs exemples à chaque fois de problèmes qui peuvent en bénéficier. La manière dont ces exemples sont rédigés peut rebuter, vu qu'une bonne partie du texte constitue un inventaire à la Prévert de théorèmes et algorithmes. On peut regretter que tous ces résultats ne soient pas régulièrement mis en perspective pour montrer l'intérêt d'utiliser des noyaux en pratique.
L'ouvrage peut donc être facilement conseillé à des chercheurs du domaine de la complexité algorithmique ou à des gens que ce domaine intéresse fortement. Ils trouveront du contenu raisonnablement facile d'accès et exhaustif.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Les fibres optiques
Notions fondamentales (Câbles, Connectique, Composants, Protocoles, Réseaux...)
Résumé de l'éditeur
Devenu un classique, ce livre s'adresse à toute personne intervenant dans le domaine des réseaux en fibres optiques (services informatiques, services généraux, collectivités territoriales, promoteurs immobiliers, gestionnaires d'équipements...), aux étudiants, élèves-ingénieurs et techniciens ainsi qu'aux investisseurs des zones d'aménagement public, des data centers, des réseaux locaux, de l'immobilier et de l'habitat, etc. L'auteur y présente de manière simple, sans être simpliste, la diversité des éléments composant le monde des fibres optiques.
Ce livre, mis à jour et complété pour cette troisième édition, décrit la variété des fibres optiques et leurs points forts (fibres unimodales, multimodales, fibres en plastique, fibres pour applications spécifiques...) ainsi que leur protection à travers des câbles en fibres optiques pour l'intérieur ou pour l'extérieur (câbles en aérien, enterrés, en galerie, en caniveaux, marinisés, hybrides, etc.).
Le côté « matériel » est étudié avec les aboutements des fibres optiques (connectique, épissure…), les équipements pour tests et mesures (photomètres, réflectomètres, analyseurs…) et les composants optoélectroniques (lasers, photodiodes, coupleurs, cordons optiques actifs, etc.).
Des chapitres traitent du multiplexage en longueurs d'onde (WDM) rentabilisant les investissements dans les réseaux, des principaux protocoles employés (de l'ancien Ethernet 10 Mbit/s aux récents 100 et 400 Gbit/s, Ethernet industriel, InfiniBand, Fibre Channel, etc.). D'autres chapitres présentent les grands types de réseaux (réseaux étendus - WAN, métropolitains - MAN, réseaux locaux - LAN, etc.) avec un focus sur les réseaux optiques passifs (PON) déployant à moindre coût le FTTH.
Enfin, l'auteur propose en annexe les adresses des sites Internet des organismes de normalisation et d'associations d'industriels ainsi qu'une liste d'acronymes propres aux domaines des fibres optiques. Des éléments complémentaires sont en téléchargement sur le site www.editions-eni.fr.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Editions Eni
ISBN10 : 2-409-01992-7
ISBN13 : 978-2-409-01992-0
- Généralités sur les fibres optiques
- Types de fibres optiques et fabrication
- Panorama des fibres optiques unimodales
- Fibres multimodales en silice et fibres en plastique
- Câbles à fibres optiques
- Aboutement des fibres optiques
- Mesures dans un réseau de fibres optiques
- Composants optoélectroniques
- Multiplexage en longueurs d'onde
- Ethernet et fibres optiques
- Réseaux d'entreprise et fibres optiques
- Réseaux d'exploitants en fibres optiques
- Conclusion
- Annexes
Les fibres optiques occupent une place prépondérante dans les réseaux informatiques modernes, y compris dans la vie de tous les jours avec le déploiement de la FTTH dans de nombreux pays. Cependant, le sujet reste parfois mystérieux : comment des impulsions lumineuses peuvent-elles transférer autant de données en aussi peu de temps ? Ce livre décortique tous les éléments nécessaires à la bonne compréhension des fibres optiques, de manière ascendante ; en partant des bases physiques (les grands principes généraux), des composants optoélectroniques et en allant jusqu'aux protocoles déployés. De ce fait, l'ouvrage est assez complet, il dépasse très largement la simple évocation de principes généraux.
Il offre cependant une vue système sur le domaine, sans entrer dans les détails physiques ; pour les protocoles, il se focalise sur les différences par rapport aux technologies plus traditionnelles, par exemple. Le public visé doit donc posséder des connaissances dans le domaine des réseaux (comme les techniques de multiplexage), mais pas forcément en optique ou en électronique. L'ouvrage est rédigé à destination tant de techniciens qui doivent déployer un réseau qu'aux décideurs techniques.
Dans le domaine des réseaux (et en particulier des fibres optiques), on se retrouve très vite à devoir gérer un grand nombre de sigles : l'auteur fournit, en annexe, une liste de ces sigles et leur définition. Par ailleurs, bon nombre de chapitres sont rédigés de manière encyclopédique, un très grand nombre de types de fibres étant expliqué, les protocoles principaux et leur évolution aussi. L'auteur en fournit une vision historique, en détaillant les différences entre les révisions des normes.
La rédaction est soignée, notamment au niveau du choix du vocabulaire technique, afin d'éviter les anglicismes et les raccourcis qui nuisent à la compréhension. On peut regretter que certaines photos incluses soient de mauvaise qualité (par exemple, quelques illustrations du chapitre sur l'aboutement sont floues). Les dégradations possibles sur les fibres optiques sont étudiées, mais d'un point de vue plutôt physique (agression chimique, efforts mécaniques, etc.) en vue de leur détection et de leur réparation : leur impact sur les communications n'est pas vraiment abordé.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Les réseaux informatiques
Guide pratique pour l'administration et la supervision
Résumé de l'éditeur
Ce livre sur les réseaux informatiques s'adresse aussi bien aux administrateurs réseau, techniciens ou ingénieurs en charge de la conception, de l'administration et de la mise en place de solutions de supervision d'un réseau, qu'aux étudiants souhaitant disposer de connaissances théoriques et techniques nécessaires pour exercer le métier d'administrateur réseau au sens large.
En s'appuyant sur les standards définis par l'IEEE ou l'IETF, l'auteur propose au lecteur un guide opérationnel alliant toute la théorie nécessaire sur les concepts étudiés illustrée à l'aide de nombreux schémas à des cas concrets de mise en pratique teintés de toute la réalité technique du terrain.
Pour mieux poser le contexte dans lequel s'inscrit le métier d'administrateur réseau, le premier chapitre du livre est consacré à un historique de l'évolution des réseaux informatiques. Dans les chapitres qui suivent, l'auteur présente les techniques de conception d'un réseau local ainsi que la gestion des routeurs, des commutateurs et des différents équipements déployés en matière de configuration, d'inventaire et de sauvegarde.
L'auteur fait ensuite le point sur les différentes méthodes pour mettre en place de la redondance et de la haute disponibilité. Le lecteur sera ainsi en mesure de solutionner plus sereinement des problèmes d'interruption de services. La problématique de la sécurité du réseau étant également incontournable, un chapitre lui est dédié avec une orientation plus précise sur la gestion des accès au réseau LAN au travers de pare-feux.
Les moyens d'observation de la santé du réseau sont également détaillés à travers les outils de supervision et les techniques métrologie. L'auteur décrit ainsi les protocoles et les méthodes qui entrent en jeu et qui permettent d'extraire des indicateurs concrets pour mesurer les performances d'un réseau et des applications.
Pour finir, un chapitre présente concrètement les concepts relativement nouveaux de virtualisation réseau et de SDN (Software Defined Network), notamment dans le cadre d'architectures réseau au sein de datacenters ou dans le Cloud.
Des éléments complémentaires sont en téléchargement sur le site www.editions-eni.fr.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Editions Eni
ISBN10 : 2-409-01922-6
ISBN13 : 978-2-409-01922-7
- Avant-propos
- Évolution des métiers autour des réseaux
- Conception d'un réseau local
- Gestion des actifs et haute disponibilité
- Principes de sécurité sur un réseau local
- Approche globale de la supervision avec SNMP
- Autres protocoles de supervision réseau
- Métrologie et mesure de performances
- Une nouvelle approche du réseau : SDN et NFV
L'administration de réseaux informatiques en entreprise (par opposition aux réseaux domestiques) est un domaine vaste, où l'on peut se perdre longtemps en protocoles et analyses théoriques sans toucher à la pratique. Le but de l'auteur est tout autre : certes, une base théorique est nécessaire, mais la pratique l'est encore plus. Il a mis en application ce principe pour la rédaction de ce livre, avec un certain brio. Ainsi, la partie théorique n'est pas négligée, mais ne prend pas toute la place : l'ouvrage ne fait pas de la théorie juste pour le plaisir, mais bien parce qu'elle est utile (pour effectuer certains déploiements, pour comprendre des problèmes, etc.).
On sent là que l'auteur a bien plongé les mains dans le cambouis et nous fait un retour d'expérience, sans toutefois se focaliser sur un constructeur en particulier : les fondements, les protocoles sont plus importants que des outils spécifiques ou propriétaires. Le glossaire se révèle être un outil bien pratique, en rassemblant tous les sigles et termes spécifiques avec leur définition en un endroit.
Tout au long de la lecture, on verra des explications assez poussées, abordant aussi l'aspect historique (tout le monde n'a pas la chance d'avoir le dernier matériel). La sécurité est un élément omniprésent et sert à justifier bon nombre d'éléments ajoutés dans un réseau. L'auteur intègre aussi régulièrement de petites références vers les sections à venir, pour indiquer d'autres manières de mettre en œuvre un même concept, comme la virtualisation dans les réseaux (SDN).
Cependant, certains principes des réseaux sont expliqués de manière très succincte : le texte est suffisant pour celui qui a déjà de bonnes bases en réseaux, mais ne l'est probablement pas pour celui qui se replonge dans le domaine après un petit temps d'absence. Par exemple, les VLAN sont expliqués de manière rapide et assez abstraite : on n'a au début aucune idée de leur utilité, il faut bien avancer dans la section pour ce faire.
Au fil du texte, on voit des lignes de commande de configuration de commutateur ou de routeur, mais elles ne sont généralement pas très expliquées. D'ailleurs, les premières ne sont même pas introduites, ce qui fait qu'on se retrouve avec une série de lignes absconses sans savoir ce que l'on peut en faire. On a aussi assez rapidement des références à Wireshark, logiciel de capture et d'analyse de trafic, notamment des filtres pour voir le fonctionnement d'un protocole, mais le logiciel est à peine cité, alors qu'il s'agit d'un outil très intéressant. Aussi, la configuration des pare-feux est abordée très rapidement, sans vraiment proposer de canevas à suivre pour l'élaboration des règles. Finalement, la version papier est imprimée en noir et blanc, alors qu'un certain nombre d'illustrations sont prévues en couleurs.
En conclusion, cet ouvrage est de bonne facture, avec de bonnes explications sur les aspects pratiques des déploiements de grands réseaux. Il pèche par certains aspects, rendant la compréhension plus difficile pour ceux qui ont les moins bonnes bases en réseaux. On peut le conseiller à toute personne souhaitant se lancer dans un déploiement (ou y contribuer) et ayant déjà des notions en réseaux (même si elles sont juste théoriques).
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Spark
Valorisez vos données en temps réel avec Spark ML et Hadoop
Résumé de l'éditeur
Depuis 2015, Spark s'impose comme le standard de-facto pour le big data : en apportant simplicité d'usage, puissance de calcul, analyses en temps réel, algorithmes de machine learning et deep learning, le tout accessible en Python. Spark est devenu la porte d'entrée incontournable des projets de valorisation de données.
Alors que vient de sortir Spark 3, les environnements simplifiés « clicks boutons » sont légion. Mais pour les utiliser à bon escient, il vous faudra comprendre le fonctionnement interne de Spark afin de paramétrer correctement votre cluster et vos applications.
C'est ce que propose ce livre : vous emmener dans une compréhension fine des tenants et aboutissants de Spark, depuis son installation et sa configuration jusqu'à l'écriture et l'exécution d'applications.
L'analyse des données n'est utile que dans des cas business précis. C'est pourquoi nous insistons sur une méthode d'analyse des données qui vous permettra de connaître les étapes d'un projet de machine learning, et les questions indispensables à se poser pour réussir une analyse pertinente. Nous l'illustrons via un exemple complet d'une entreprise (virtuelle) de location de vélo en libre service.
Ainsi, en lisant ce livre, vous maîtriserez l'outil et la méthode adéquats pour valoriser vos données de manière éclairée, vous assurant une meilleure efficacité et rentabilité de vos projets data.
Le code du livre est disponible sur Github.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Dunod
ISBN10 : 2-10-079432-9
ISBN13 : 978-2-10-079432-4
- Avant-propos
- Spark et le big data
- Les raisons du succès de Spark
- Installation de Spark
- Démarrer le cluster Spark
- Présentation et installation d'HDFS
- Premiers scripts avec Spark core et Spark SQL
- Présentation de Spark Streaming
- Introduction au machine learning
- Étude de cas avec Spark ML
- Conclusion
Avec la mode du big data, quelques mots clés reviennent régulièrement, à l'instar de Spark. Ceux qui les profèrent ne savent pas toujours ce qui se cache derrière : peu importe le niveau de technicité de ces trublions, ce livre leur donnera les bases de Spark. C'est là l'un de ses atouts : l'ouvrage est d'abord écrit pour ceux qui veulent vraiment se mettre à utiliser Spark (déployer une grappe de serveurs, écrire une application), mais s'adresse également à ceux qui devront superviser des projets Spark « sans mettre les mains au clavier ». De fait, les prérequis sont assez légers : un peu de programmation (pas forcément orientée objet), des notions de Java (puisque Spark est implémenté sur la plateforme Java), un peu de SQL (langage par excellence pour le traitement de données). On pourrait regretter le caractère concis de certains passages, qui pourraient abaisser le niveau des prérequis.
L'auteur ne cherche pas à décrire de manière exhaustive les possibilités offertes par le système, mais plutôt à inculquer une méthodologie pour faciliter la mise en œuvre d'un projet Spark. Par exemple, l'introduction à l'apprentissage automatique ne parle pas du tout des algorithmes disponibles : bon nombre d'ouvrages les expliquent déjà en long et en large. Par contre, très peu parlent de la manière d'introduire de l'apprentissage dans la pratique industrielle : par exemple, comment présenter les résultats d'une manière intelligible pour un public de décideurs qui n'a presque aucune connaissance en statistiques ? Il n'empêche que certains paramètres sont plus détaillés, car ils présentent un intérêt non négligeable pour améliorer la performance d'une application, par exemple.
Spark est expliqué comme une évolution logique des plateformes de traitement des mégadonnées : l'outil n'est pas apparu par magie au milieu du désert, mais dans un contexte très spécifique avec une série d'acteurs qui cherchent à effectuer des traitements similaires à très grande échelle. Ce n'est pas pour ça que les fonctionnalités de Spark sont présentées de manière chronologique : l'auteur préfère d'abord parler des tables de données (DataFrame), bien avant des RDD. De fait, avec Spark 2, ils sont devenus un sujet plutôt avancé. Néanmoins, on peut regretter que Spark 3 ne soit abordé que dans la conclusion et la quatrième de couverture.
L'un des points importants de ce livre est toutefois la présence de deux études de cas, l'une orientée Spark Core, l'autre Spark ML. Cette dernière correspond au chapitre 9, c'est-à-dire à presque un tiers du volume de l'ouvrage ! Elles partent de données brutes sur une entreprise de location de vélos et ne s'arrêtent qu'avec des résultats propres à présenter à des décideurs : ces études de cas sont réalistes, bien que simplifiées.
La mise en page est claire, notamment avec les objectifs de chaque chapitre explicités au début de chacun d'eux. Chaque section est richement illustrée, avec des figures claires, ce qui aide à la compréhension.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Network Flow Algorithms
Résumé de l'éditeur
Network flow theory has been used across a number of disciplines, including theoretical computer science, operations research, and discrete math, to model not only problems in the transportation of goods and information, but also a wide range of applications from image segmentation problems in computer vision to deciding when a baseball team has been eliminated from contention.
This graduate text and reference presents a succinct, unified view of a wide variety of efficient combinatorial algorithms for network flow problems, including many results not found in other books. It covers maximum flows, minimum-cost flows, generalized flows, multicommodity flows, and global minimum cuts and also presents recent work on computing electrical flows along with recent applications of these flows to classical problems in network flow theory.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Cambridge University Press
ISBN10 : 1-316-63683-6
ISBN13 : 978-1-316-63683-1
- Preliminaries: Shortest Path Algorithms
- Maximum Flow Algorithms
- Global Minimum Cut Algorithms
- More Maximum Flow Algorithms
- Minimum-Cost Circulation Algorithms
- Generalized Flow Algorithms
- Multicommodity Flow Algorithms
- Electrical Flow Algorithms
- Open Questions
Les algorithmes de flot sont très utilisés en recherche opérationnelle. Souvent, le domaine est perçu comme statique, alors que les développements théoriques et pratiques continuent sans cesse. Cet ouvrage assez succinct présente néanmoins le sujet de recherche dans ses aspects fondamentaux. L'auteur a fait le choix de ne traiter que les algorithmes polynomiaux (exacts ou approchés), afin de garder un livre assez bref. Par ailleurs, un autre choix posé est celui des preuves incluses : elles peuvent toutes être expliquées en moins d'une heure de cours (l'auteur en ayant fait l'expérience). On peut aussi remarquer le soin apporté pour indiquer les structures de données les plus efficaces pour implémenter les algorithmes donnés.
Le premier chapitre démarre sur les chapeaux de roues, avec directement des algorithmes de calcul de plus court chemin dans un graphe, afin d'expliciter des notions qui reviendront régulièrement dans la suite, comme l'étiquetage des nœuds ou la détection de cycle. Par conséquent, le livre est réservé à un public déjà averti des algorithmes sur des graphes… et ouvert aux mathématiques. De fait, l'ouvrage comporte un nombre très élevé de preuves (déjà une vingtaine dans le premier chapitre, une cinquantaine dans le second !), qui en constituent le cœur. Il n'empêche que l'auteur a toujours à cœur de d'abord passer par des raisonnements intuitifs avant de formaliser. Aussi, le contenu reste, en bonne partie, très abstrait : il s'agit de raisonner sur des graphes génériques, pas sur des applications particulières, a priori en totale déconnexion avec la pratique du domaine (sauf en début et fin de livre).
On peut regretter que certains sujets ne soient pas abordés, comme les plus courts chemins avec des contraintes de ressources ces derniers sont extrêmement utiles pour la résolution de problèmes réels de logistique ou de réseau (avec des techniques de génération de colonnes), mais restent à peine abordés. L'utilité de la dualité n'est pas vraiment explicitée, alors qu'elle revient très régulièrement (bon nombre d'algorithmes travaillent sur le dual du problème présenté). De même, les méthodes de point intérieur sont très souvent citées, parfois très légèrement abordées dans les notes de fin de chapitre, mais jamais vraiment décrites dans l'ouvrage, alors que bon nombre de résultats récents les utilisent abondamment.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Practical Time Series Analysis
Prediction With Statistics and Machine Learning
Résumé de l'éditeur
Time series data analysis is increasingly important due to the massive production of such data through the internet of things, the digitalization of healthcare, and the rise of smart cities. As continuous monitoring and data collection become more common, the need for competent time series analysis with both statistical and machine learning techniques will increase.
Covering innovations in time series data analysis and use cases from the real world, this practical guide will help you solve the most common data engineering and analysis challengesin time series, using both traditional statistical and modern machine learning techniques. Author Aileen Nielsen offers an accessible, well-rounded introduction to time series in both R and Python that will have data scientists, software engineers, and researchers up and running quickly.
You'll get the guidance you need to confidently:
- Find and wrangle time series data
- Undertake exploratory time series data analysis
- Store temporal data
- Simulate time series data
- Generate and select features for a time series
- Measure error
- Forecast and classify time series with machine or deep learning
- Evaluate accuracy and performance
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : O'Reilly
ISBN10 : 1-4920-4165-3
ISBN13 : 978-1-4920-4165-8
- Preface
- Time Series: An Overview and a Quick History
- Finding and Wrangling Time Series Data
- Exploratory Data Analysis for Time Series
- Simulating Time Series Data
- Storing Temporal Data
- Statistical Models for Time Series
- State Space Models for Time Series
- Generating and Selecting Features for a Time Series
- Machine Learning for Time Series
- Deep Learning for Time Series
- Measuring Error
- Performance Considerations in Fitting and Serving Time Series Models
- Healthcare Applications
- Financial Applications
- Time Series for Government
- Time Series Packages
- Forecasts About Forecasting
Les séries temporelles se présentent dans de plus en plus de situations, alors que, il y a peu, elles étaient étudiées presque uniquement dans un contexte financier. Ce livre cherche à présenter le champ des utilisations possibles de l'analyse des séries chronologiques dans divers domaines ; cependant, son auteure cherche l'exhaustivité dans les méthodes pour approcher les séries temporelles plutôt que dans leur application. Elle nous livre ici une véritable revue en règle des techniques d'analyse et de prédiction de séries chronologiques, tant les plus classiques et statistiques (ARIMA et famille) que les plus récentes (de l'apprentissage automatique jusqu'à l'apprentissage profond). De fait, les méthodes les plus simples sont parfois les plus appropriées.
Alors que la plupart des ouvrages sur le sujet requièrent de bonnes connaissances en statistiques de la part du lecteur, ce n'est pas le cas de celui-ci. Pour une plus grande ouverture, l'auteure ne suppose que des bases en programmation et en statistiques, mais c'est à peu près tout : tous les concepts nécessaires sont brièvement réexpliqués, au besoin. De fait, le parti pris est véritablement pratique. Ainsi, ceux qui souhaitent approfondir la théorie derrière certaines méthodes ne trouveront pas leur bonheur ici, les explications purement mathématiques étant réduites à leur plus simple expression ; par contre, on a droit à des explications sur les faiblesses potentielles des mécanismes d'acquisition de données et sur le nettoyage des données qui suit forcément leur récupération. Ce n'est pas pour autant un livre de recettes : l'auteure cherche toujours à détailler le pourquoi, bien plus que le comment (qui est l'apanage des documentations techniques). Il n'y a d'ailleurs que rarement un intérêt à coder soi-même des algorithmes classiques, ce point est clairement expliqué par l'auteure.
On peut néanmoins se demander pourquoi les codes sont disponibles alternativement en R et en Python : dans certaines situations, l'un des deux langages a un écosystème légèrement plus développé dans un domaine particulier, mais les justifications manquent le reste du temps. Les passages de l'un à l'autre langage sont rarement détaillés, alors qu'on aimerait parfois savoir s'il est vraiment important de s'investir dans un autre langage pour l'analyse de données. En particulier, l'auteure montre un certain nombre de visualisations, mais ne le fait qu'en R, jamais en Python…
Le livre est chargé en références, souvent vers des sites comme StackOverflow : les explications n'y sont souvent pas très détaillées (pas comme dans un article scientifique), mais raisonnablement faciles à comprendre. On pourrait juste regretter que les liens pointent plutôt vers des questions que vers des réponses. De même, les logiciels existants sont bien référencés. L'ouvrage apporte, par rapport à d'autres sources, des listes de logiciels et bibliothèques pas forcément parmi les plus connus, mais surtout parmi les plus utiles — en pratique.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Generative Deep Learning
Teaching Machines to Paint, Write, Compose, and Play
Résumé de l'éditeur
Generative modeling is one of the hottest topics in AI. It's now possible to teach a machine to excel at human endeavors such as painting, writing, and composing music. With this practical book, machine-learning engineers and data scientists will discover how to re-create some of the most impressive examples of generative deep learning models, such as variational autoencoders, generative adversarial networks (GANs), encoder-decoder models, and world models.
Author David Foster demonstrates the inner workings of each technique, starting with the basics of deep learning before advancing to some of the most cutting-edge algorithms in the field. Through tips and tricks, you'll understand how to make your models learn more efficiently and become more creative.
- Discover how variational autoencoders can change facial expressions in photos
- Build practical GAN examples from scratch, including CycleGAN for style transfer and MuseGAN for music generation
- Create recurrent generative models for text generation and learn how to improve the models using attention
- Understand how generative models can help agents to accomplish tasks within a reinforcement learning setting
- Explore the architecture of the Transformer (BERT, GPT-2) and image generation models such as ProGAN and StyleGAN
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : O'Reilly
ISBN10 : 1-4920-4194-7
ISBN13 : 978-1-4920-4194-8
- Preface
Introduction to Generative Deep Learning
- Generative Modeling
- Deep Learning
- Variational Autoencoders
- Generative Adversarial Networks
Teaching Machines to Paint, Write, Compose, and Play
- Paint
- Write
- Compose
- Play
- The Future of Generative Modeling
- Conclusion
L'apprentissage automatique a divers domaines d'application, l'un des plus étonnants est sans doute la génération de contenu : images, textes, sons, etc. Depuis quelques années, on voit de plus en plus de démonstrations bluffantes de transfert de style d'un peintre sur des photographies modernes, de rédaction automatisée de texte, etc. Ce livre se focalise sur les principes sous-jacents à ces techniques et sur leur mise en œuvre à l'aide de réseaux neuronaux.
L'auteur sépare assez clairement les chapitres en deux parties. La première aborde essentiellement la théorie, avec les architectures principales de réseaux neuronaux appliquées aux problèmes de génération de contenu. On y découvre quelques applications basiques, mais les plus intéressantes doivent attendre la seconde moitié. Là, les schémas de base sont déclinés pour atteindre les meilleurs résultats actuels sur des tâches de génération de contenu. Il n'y a pas d'objectif d'exhaustivité l'auteur a fait un choix raisonné de techniques variées, pour montrer un maximum d'outils généralisables à d'autres tâches. Il n'hésite par ailleurs pas à donner des références dans la littérature scientifique, abondante dans le domaine, pour approfondir le sujet.
Aucun chapitre ne reste abstrait, puisque chaque technique est implémentée en Python. Il ne manque aucun détail, tout est explicite et expliqué, l'auteur y prête une attention particulière : on y retrouve les architectures de réseaux neuronaux, mais aussi les algorithmes à employer pour arriver à produire le résultat attendu. Les architectures génériques ne sont présentées qu'une seule fois, après quoi leur utilisation est cachée derrière des classes de l'auteur. Par ailleurs, tout le code est disponible sur GitHub, pour faciliter sa réutilisation.
Les applications sont variées et ne sont pas limitées à une forme artificielle d'art. En effet, l'auteur détaille aussi la génération de réponses à des questions ou encore l'inclusion d'éléments génératifs dans des techniques d'apprentissage par renforcement. Les principes sont similaires, mais on n'attend pas à les voir employés dans ce contexte.
On peut aussi apprécier l'impression en couleurs du livre, qui permet aussi la coloration syntaxique du code. Ce petit plus est bien agréable. De plus, le style de l'auteur est attrayant, très peu académique : l'ouvrage se lit très facilement.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Data Science from Scratch
First Principles with Python
Résumé de l'éditeur
To really learn data science, you should not only master the tools—data science libraries, frameworks, modules, and toolkits—but also understand the ideas and principles underlying them. Updated for Python 3.6, this second edition of Data Science from Scratch shows you how these tools and algorithms work by implementing them from scratch.
If you have an aptitude for mathematics and some programming skills, author Joel Grus will help you get comfortable with the math and statistics at the core of data science, and with the hacking skills you need to get started as a data scientist. Packed with new material on deep learning, statistics, and natural language processing, this updated book shows you how to find the gems in today's messy glut of data.
- Get a crash course in Python
- Learn the basics of linear algebra, statistics, and probability—and how and when they're used in data science
- Collect, explore, clean, munge, and manipulate data
- Dive into the fundamentals of machine learning
- Implement models such as k-nearest neighbors, Naïve Bayes, linear and logistic regression, decision trees, neural networks, and clustering
- Explore recommender systems, natural language processing, network analysis, MapReduce, and databases
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : O'Reilly
ISBN10 : 1-4920-4113-0
ISBN13 : 978-1-4920-4113-9
- Preface to the Second Edition
- Preface to the First Edition
- Introduction
- A Crash Course in Python
- Visualizing Data
- Linear Algebra
- Statistics
- Probability
- Hypothesis and Inference
- Gradient Descent
- Getting Data
- Working with Data
- Machine Learning
- k-Nearest Neighbors
- Naive Bayes
- Simple Linear Regression
- Multiple Regression
- Logistic Regression
- Decision Trees
- Neural Networks
- Deep Learning
- Clustering
- Natural Language Processing
- Network Analysis
- Recommender Systems
- Databases and SQL
- MapReduce
- Data Ethics
- Go Forth and Do Data Science
La science des données est un domaine tellement à la mode qu'elle attire des gens de tout horizon… et des livres de qualité variable, tentant de répondre à la demande. La plupart des ouvrages creusent profondément la théorie et les mathématiques derrière chaque algorithme (pour l'utilisation des techniques, les auteurs renvoient à la documentation, s'ils prennent cette peine) ou brossent un tableau tellement rapide qu'on ne comprend pas ce qui se passe vraiment (par contre, l'API d'une bibliothèque très spécifique est expliquée en long et en large). Ce livre cherche une troisième voie, entre une compréhension des algorithmes et une approche pragmatique : la compréhension d'un algorithme vient en l'implémentant, pour bien en saisir les tenants et les aboutissants. Cette maxime est poussée jusque dans ses retranchements, l'un des derniers chapitres présentant brièvement l'utilisation de bases de données SQL… avec une implémentation très basique d'un tel système.
Pour s'ouvrir à un public aussi large que possible, les prérequis sont très limités : des compétences en programmation (un chapitre entier est dédié au langage Python, utilisé dans tout le livre) et une aversion limitée envers les mathématiques (tous les concepts nécessaires étant rapidement expliqués, en prenant surtout un point de vue algorithmique). De là, l'auteur présente tout un cycle de projet de science des données, depuis l'acquisition et le nettoyage des données jusqu'au déploiement d'un modèle d'apprentissage, avec des incursions du côté du partitionnement des données ou de l'analyse de graphes.
Même si les algorithmes sont implémentés de zéro, l'auteur n'oublie pas le lien avec la pratique : presque personne n'implémente lui-même des algorithmes classiques. Ainsi, on a droit à des liens vers scikit-learn ou d'autres bibliothèques Python, selon les cas. Les fonctions développées ont une interface assez proche de celles proposées par ces bibliothèques, mais la ressemblance est la plus frappante pour les réseaux neuronaux (l'interface étant très proche de la classe Sequential de Keras). La grande différence avec les bibliothèques courantes réside dans les structures de données : pour avoir un code aussi explicite et clair que possible, l'auteur utilise des structures de données très précises telles que des listes de tuples nommés ou des dictionnaires, là où en pratique il faut utiliser des matrices pour des raisons de performance.
Si l'essentiel du livre s'intéresse au côté algorithmique de la science des données, l'auteur met l'accent sur les statistiques et fait autant que possible des liens avec des approches plus formelles pour les raisonnements : une intuition sur les données que l'on peut acquérir à l'aide d'un algorithme n'a peut-être aucun sens statistique, auquel cas cette intuition ne vaut pas grand-chose. De même, l'interprétabilité des modèles est mise en avant.
Le code proposé est toujours propre et exploite les dernières possibilités de Python. Le style d'écriture est très informel, ce qui colle parfaitement bien au public visé. On peut cependant regretter le traitement de la visualisation, un sujet très important en science des données, mais assez rapidement brossé.
En peu de mots : le pari de l'auteur est bien tenu !
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Practical Tableau
100 Tips, Tutorials, and Strategies from a Tableau Zen Master
Résumé de l'éditeur
Whether you have some experience with Tableau software or are just getting started, this manual goes beyond the basics to help you build compelling, interactive data visualization applications. Author Ryan Sleeper, one of the world's most qualified Tableau consultants, complements his web posts and instructional videos with this guide to give you a firm understanding of how to use Tableau to find valuable insights in data.
Over five sections, Sleeper—recognized as a Tableau Zen Master, Tableau Public Visualization of the Year author, and Tableau Iron Viz Champion—provides visualization tips, tutorials, and strategies to help you avoid the pitfalls and take your Tableau knowledge to the next level.
Practical Tableau sections include:
- Fundamentals: get started with Tableau from the beginning
- Chart types: use step-by-step tutorials to build a variety of charts in Tableau
- Tips and tricks: learn innovative uses of parameters, color theory, how to make your Tableau workbooks run efficiently, and more
- Framework: explore the INSIGHT framework, a proprietary process for building Tableau dashboards
- Storytelling: learn tangible tactics for storytelling with data, including specific and actionable tips you can implement immediately
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : O'Reilly
ISBN10 : 1-4919-7731-0
ISBN13 : 978-1-4919-7731-6
Fundamentals
-
How to Learn Tableau: My Top Five Tips
- Tip #5: Follow the Community
- Tip #4: Take a Training Class
- Tip #3: Read Up
- Tip #2: Practice
- Tip #1: Tableau Public
-
Which Tableau Product Is Best for Me?
- Tableau Desktop: Personal
- Tableau Desktop: Professional
- Tableau Reader
- Tableau Public
- Tableau Online
- Tableau Server
- An Introduction to Connecting to Data
- Shaping Data for Use with Tableau
-
Getting a Lay of the Land
- Tableau Terminology
- View the Underlying Data
- View the Number of Records
-
Dimension Versus Measure
- What Is a Measure?
- What Is a Dimension?
- Discrete Versus Continuous
-
Five Ways to Make a Bar Chart/An Introduction to Aggregation
- Five Ways to Create a Bar Chart in Tableau
- An Introduction to Aggregation in Tableau
-
Line Graphs, Independent Axes, and Date Hierarchies
- How to Make a Line Graph in Tableau
- Independent Axes in Tableau
- Date Hierarchies in Tableau
-
Marks Cards, Encoding, and Level of Detail
- An Explanation of Level of Detail
- An Introduction to Encoding
- Label and Tooltip Marks Cards
-
An Introduction to Filters
- Dimension Filters in Tableau
- Measure Filters in Tableau
- More Options with Filters
-
An Introduction to Calculated Fields
- Why Use Calculated Fields?
- More on Aggregating Calculated Fields
- An Introduction to Table Calculations
- An Introduction to Parameters
-
An Introduction to Sets
- How to Create a Set in Tableau
- Five Ways to Use Tableau Sets
- An Introduction to Level of Detail Expressions
-
An Introduction to Dashboards and Distribution
- An Introduction to Dashboards in Tableau
- Distributing Tableau Dashboards
Chart Types
- A Spreadsheet Is Not a Data Visualization
- How to Make a Highlight Table
- How to Make a Heat Map
- How to Make a Dual-Axis Combination Chart
- How to Make a Scatter Plot
- How to Make a Tree Map
- How to Make Sparklines
- How to Make Small Multiples
- How to Make Bullet Graphs
- How to Make a Stacked Area Chart
- How to Make a Histogram
- How to Make a Box-and-Whisker Plot
- How to Make a Symbol Map with Mapbox Integration
- How to Make a Filled Map
- How to Make a Dual-Axis Map
- How to Map a Sequential Path
- How to Map Anything in Tableau
- How to Make Custom Polygon Maps
- How to Make a Gantt Chart
- How to Make a Waterfall Chart
- How to Make Dual-Axis Slope Graphs
- How to Make Donut Charts
- How to Make Funnel Charts
- Introducing Pace Charts in Tableau
- How to Make a Pareto Chart
- How to Make a Control Chart
- How to Make Dynamic Dual-Axis Bump Charts
- How to Make Dumbbell Charts
- How and Why to Make Customizable Jitter Plots
Tips and Tricks
- How to Create Icon-Based Navigation or Filters
- How to Make a What-If Analysis Using Parameters
-
Three Ways to Add Alerts to Your Dashboards
- Alert 1: Date Settings
- Alert 2: Dynamic Labels
- Alert 3: Heat Map Dashboard with Optional Tableau Server Email
- How to Add Instructions or Methodology Using Custom Shape Palettes
-
Ten Tableau Data Visualization Tips I Learned from Google Analytics
- Use a Maximum of 12 Dashboard Objects
- Improve User Experience by Leveraging Dashboard Actions
- Allow End Users to Change the Date Aggregation of Line Graphs
- Keep Crosstab Widths to a Maximum of Ten Columns
- Use a Vertical Navigation in the Left Column
- Choose Five or Fewer Colors for Your Dashboards
- Stick Mostly to Lines and Bars
- Include Comparisons Such as Year Over Year
- Bring Your Data Visualization to Life Using Segmentation
- Include Alerts of Exceptional or Poor Performance
-
Three Alternative Approaches to Pie Charts in Tableau
- Tableau Pie Chart Alternative #1: Bar Chart
- Tableau Pie Chart Alternative #2: Stacked Bars or Areas
- Tableau Pie Chart Alternative #3: My Recommended Approach
- How to Create and Compare Segments
-
Five Design Tips for Enhancing Your Tableau Visualizations
- Color
- Typography
- Layout
- Usability
- Details
-
Leveraging Color to Improve Your Data Visualization
- The Color Wheel: Where It All Begins
- The Psychology of Color
- Using Custom Color Palettes in Tableau
-
Three Creative Ways to Use Dashboard Actions
- A Primer on Tableau Dashboard Actions
- Tableau Dashboard Action #1: Use Every Sheet as a Filter
- Tableau Dashboard Action #2: Embed YouTube Videos in a Dashboard
- Tableau Dashboard Action #3: Do a Google Search or Google Image Search from a Dashboard
-
How to Conditionally Format Individual Rows or Columns
- How to Use Legends Per Measure
- How to Conditionally Format in Tableau Like Excel
- The Solution: A Calculated “Placeholder” Field
- Five Tips for Creating Efficient Workbooks
- Using Level of Detail Expressions to Create Benchmarks
- Designing Device-Specific Dashboards
-
How to Make a Stoplight 100-Point Index
- What Is a Stoplight Index?
- Why Do I Have to Use the Fancy Approach You're About to Share?
- How to Set Up a 100-Point Index
- Adding Color to a 100-Point Index Table
- What If Outperforming the Comparison Is Bad?
- The Case for One-Dimensional Unit Charts
- How to Highlight a Dimension
- Allow Users to Choose Measures and Dimensions
- How to Dynamically Format Numbers
- How to Change Date Aggregation Using Parameters
- How to Equalize Year-Over-Year Dates
- How to Filter Out Partial Time Periods
- How to Compare Two Date Ranges on One Axis
- How to Compare Unequal Date Ranges on One Axis
- How to Make a Cluster Analysis
-
Five Tips for Making Your Tableau Public Viz Go Viral
- Tip #1: Create “Remarkable” Content
- Tip #2: Balance Data and Design
- Tip #3: Leverage Search Engine Optimization (SEO)
- Tip #4: Network
- Tip #5: Use Reddit
-
Three Ways to Make Beautiful Bar Charts in Tableau
- Approach #1: Use Formatting Available in Tableau
- Approach #2: Use Axis Rulers to Add a Baseline
- Approach #3: Add Caps to Bars
-
Three Ways to Make Lovely Line Graphs in Tableau
- Approach #1: Use Formatting Available in Tableau
- Approach #2: Maximize the Data-Ink Ratio
- Approach #3: Leverage the Dual-Axis
-
Three Ways Psychological Schemas Can Improve Your Data Visualization
- Schema #1: Spatial Context
- Schema #2: Icons/Shapes/Symbols
- Schema #3: Color
Framework
- Introducing the INSIGHT Framework for Data Visualization
- Identify the Business Question
- Name KPIs
-
Shape the Data
- Shaping Data for Use with Tableau
- Joining and Aggregating Data
- Laying Out Data for Specific Analyses
- Shaping Data for the Iron Viz Example
- Initial Concept
- Gather Feedback
- Hone Dashboard
- Tell the Story
Storytelling
- Introduction to Storytelling
- A Data Visualization Competition—That's Also an Analogy for the Data Visualization Process
- Tip #1: Know Your Audience
- Tip #2: Smooth the Excel Transition
- Tip #3: Leverage Color
- Tip #4: Keep It Simple
- Tip #5: Use the Golden Ratio
- Tip #6: Retell an Old Story
- Tip #7: Don't Neglect the Setup
- Tip #8: Don't Use Pie Charts
- Tip #9: Provide Visual Context
- Tip #10: Use Callout Numbers
- Tip #11: Allow Discovery
- Tip #12: Balance Data and Design
- Tip #13: Eliminate Chartjunk (But Not Graphics)
- Tip #14: Use Freeform Dashboard Design
- Tip 15: Tell a Story
À l'époque où les données sont reines, l'art des visualisations devient de plus en plus important, tant pour comprendre ces données que pour communiquer des faits significatifs. Ce livre se focalise sur ce deuxième axe, c'est-à-dire sur la création de graphiques efficaces et plaisants à l'œil. L'auteur donne aussi des conseils pour bien intégrer ces graphiques dans une narration contextualisée des données, notamment grâce à sa méthodologie INSIGHT (qui n'est en rien spécifique au logiciel Tableau). Le mot d'ordre principal est qu'un graphique se pense : on ne peut pas réaliser de bonnes visualisations en fonçant tête baissée.
Le livre commence par une présentation générale de l'outil Tableau (déjà quelque peu dépassée, l'édition Personal n'existant plus), des types principaux de graphiques disponibles et de la bonne manière de les utiliser (surtout pour les plus exotiques). L'ouvrage est composé de cent chapitres très courts et indépendants, chacun tient dans la durée d'une pause café. Il peut se lire de manière linéaire ou comme une référence : chaque chapitre est écrit comme un petit tutoriel précis, focalisé sur une fonctionnalité du logiciel. L'auteur offre régulièrement un retour personnel d'expérience ou inspiré de la manière dont d'autres ont conçu des visualisations efficaces. L'objectif est de montrer une bonne manière d'utiliser le logiciel, mais sûrement pas la seule. Vu que bon nombre d'utilisateurs viennent de l'environnement Excel, les différences avec Tableau sont régulièrement mises en avant, pour faciliter la prise en main.
Cependant, on peut regretter que le niveau monte très vite dans les premiers chapitres. Il vaut mieux avoir une petite expérience de Tableau pour profiter un maximum de l'ouvrage, sans quoi le vocabulaire spécifique (utilisé dès le début) pourrait être rebutant.
Les figures imprimées en couleur sont les bienvenues dans un livre sur la visualisation, bien qu'elles ne soient pas strictement nécessaires. On ne peut pas se plaindre de la quantité d'illustrations, même si certaines sont trop petites pour être lisibles sur papier.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Database Internals
A Deep Dive into How Distributed Data Systems Work
Résumé de l'éditeur
When it comes to choosing, using, and maintaining a database, understanding its internals is essential. But with so many distributed databases and tools available today, it's often difficult to understand what each one offers and how they differ. With this practical guide, Alex Petrov guides developers through the concepts behind modern database and storage engine internals.
Throughout the book, you'll explore relevant material gleaned from numerous books, papers, blog posts, and the source code of several open source databases. These resources are listed at the end of parts one and two. You'll discover that the most significant distinctions among many modern databases reside in subsystems that determine how storage is organized and how data is distributed.
This book examines:
- Storage engines: Explore storage classification and taxonomy, and dive into B-Tree-based and immutable Log Structured storage engines, with differences and use-cases for each
- Storage building blocks: Learn how database files are organized to build efficient storage, using auxiliary data structures such as Page Cache, Buffer Pool and Write-Ahead Log
- Distributed systems: Learn step-by-step how nodes and processes connect and build complex communication patterns
- Database clusters: Which consistency models are commonly used by modern databases and how distributed storage systems achieve consistency
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : O'Reilly
ISBN10 : 1-4920-4034-7
ISBN13 : 978-1-4920-4034-7
Storage Engines
- Introduction and Overview
- B-Tree Basics
- File Formats
- Implementing B-Trees
- Transaction Processing and Recovery
- B-Tree Variants
- Log-Structured Storage
- Part I Conclusion
Distributed Systems
- Introduction and Overview
- Failure Detection
- Leader Election
- Replication and Consistency
- Anti-Entropy and Dissemination
- Distributed Transactions
- Consensus
- Part II Conclusion
Comment fonctionnent les systèmes de gestion de base de données actuels ? Bon nombre de gens les utilisent sans vraiment vouloir entrer dans les détails, mais ceux qui veulent lever le voile n'ont pas vraiment une pléthore de ressources pour le faire. C'est un manque que l'auteur vient ici combler, avec une présentation générale de toutes les techniques utilisées actuellement pour implémenter de tels systèmes, qu'ils soient relationnels ou pas. Deux grands sujets sont explorés : le stockage de données sur disque et les systèmes distribués, chacun occupant approximativement la moitié de l'ouvrage.
L'auteur considère simultanément deux points de vue, celui de l'utilisateur (comment le système fonctionne-t-il ?) et celui du développeur (comment concevoir un nouveau système de base de données ?). Il explicite ainsi les choix à faire lors du développement et donne les avantages et inconvénients des décisions posées par des systèmes existants.
Les bases de données ont une structure particulière pour obtenir une très bonne performance, puisque la conception d'un tel système requiert de penser à un très haut niveau d'abstraction (le type de requête habituel), mais aussi à un très bas niveau (le fonctionnement des disques durs et des SSD pour optimiser la représentation physique des données). L'auteur passe avec aisance d'un niveau d'abstraction à l'autre et explicite les liens nécessaires.
Bien évidemment, tous les concepts utilisés dans l'implémentation des bases de données actuelles ne sont pas passés en détail, notamment la gestion des requêtes et leur optimisation (un sujet déjà traité dans la littérature sur les compilateurs, par exemple). L'auteur a préféré étudier en profondeur les sujets pour lesquels il n'existe pas encore d'ouvrage de référence.
Les chapitres sont organisés de telle sorte qu'on puisse les utiliser comme une référence, mais aussi découvrir ces sujets progressivement. Pour approfondir, l'auteur n'hésite pas à fournir une abondante bibliographie (y compris du code source de certains logiciels de base de données).
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Introduction à Julia
Programmer des mathématiques
Résumé de l'éditeur
Julia est un nouveau langage de programmation pour le calcul scientifique et les mathématiques. Son développement a commencé en 2009, dans le laboratoire Lincoln du MIT.
On retrouve dans ce langage de haut niveau les facilités classiques des langages couramment utilisés en calcul scientifique, avec en plus une rapidité d'exécution comparable au C, tirant partie de la technologie de compilation Just In Time.
Ainsi, le langage permet d'avoir un temps d'écriture rapide tout en préservant la vitesse d'exécution.
Depuis son lancement public en 2012, le langage Julia a rassemblé une large communauté. La sortie de la version 1.0 en août 2018 marque la maturité du langage, qui bénéficie aujourd'hui d'un écosystème complet: large collection de bibliothèques en ligne, environnement intégré de qualité, débogueur et profileur.
Le présent ouvrage introduit les fondements du langage et décrit quelques bibliothèques de programmes sélectionnées par l'auteur pour leur intérêt dans l'écriture de programmes liés à des questions mathématiques touchant des branches diverses des mathématiques.
On rencontrera donc dans ce livre des graphiques et des statistiques, des équations différentielles, mais aussi des groupes, de la théorie des nombres, des graphes, du dénombrement, des systèmes aléatoires de particules, ainsi que du calcul symbolique au service d'un problème théorique de développement asymptotique.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : AFNIL
ISBN10 : 2-9559-5831-X
ISBN13 : 978-2-9559-5831-5
- Installation et découverte
- Types de données
- Programmation
- Mise au point
- Graphiques
- Équations différentielles
- Surcharge d'opérateurs, objets appelables
- Graphes
- Structures de données
- Calcul symbolique
- Algèbre
Julia est l'un des derniers langages à la mode, mais dans une niche relative : celle des gens qui font des mathématiques, au sens très large (cela incluant notamment de la recherche opérationnelle, de l'analyse numérique ou encore de l'apprentissage automatique). Cet ouvrage propose une introduction au langage d'un point de vue très mathématique, justement, en penchant plutôt vers le côté abstrait. Comme son titre l'indique, il faut des bases en programmation impérative pour profiter de son contenu, il n'est pas approprié pour un public de mathématiciens qui cherchent à se mettre à la programmation.
Le livre nous donne un point de vue d'utilisateur non-programmeur de ce langage, celui de quelqu'un qui a utilisé le C++ par le passé pour des raisons de performance. Ce n'est pas pour autant que cet ouvrage d'une centaine de pages explore les manières d'améliorer la performance de son code, il se focalise sur des utilisations.
Le public ciblé est très clairement mathématicien, de par les exemples choisis ou les « défis mathématiques » proposés à quelques reprises. Le livre présente une manière de bien démarrer avec Julia et son environnement pour bon nombre d'applications scientifiques.
On peut noter l'impression soignée que donne l'ouvrage, en couleur et sur un papier très agréable au toucher. La mise en page est étonnamment aérée, ce qui le rend plaisant à la lecture.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Big Data & Streaming
Le Traitement Streaming et temps réel des données en Big Data
Résumé de l'éditeur
Le Big Data est désormais bien établi ! Il a atteint son paroxysme ces dernières années avec les objets connectés, l'intégration des capteurs dans les objet de la vie courante (voiture, réfrigérateur, télévision, etc.). Ces objets produisent des données en streaming. Beaucoup de cas d'usage et de modèles économiques s'appuient aujourd'hui sur des données générées en streaming. Cet ouvrage est un manuel didactique qui a pour but de vous aider à développer les compétences de base nécessaires pour valoriser les données produites en streaming.
Il vous aidera à atteindre trois objectifs majeurs :
- comprendre les concepts et notions indispensables pour aborder avec aisance la gestion des données streaming, notamment la sémantique de livraison des messages (Exactement-Une Fois, Au-Moins-Une-Fois, Au-PlusUne-Fois), la sémantique de traitement, le domaine temporel, l'idempotence, le persistance anticipée de messages (Write Ahead Logging), la sémantique de résultat, les bus d'événements, les systèmes de messageries Publish/Subscribe, le fenêtrage, le micro-batch, les états, les modèles de collecte de données streaming, la cohérence streaming, la diffusion atomique, etc.
- appréhender et mettre en œuvre les architectures nécessaires pour ingérer efficacement les données générées en streaming, notamment le Data Lake, les bus d'événements, les architectures Lambda, les architectures kappa, et les architectures hybrides ;
- apprendre les technologies de l'écosystème Hadoop dédiées à l'ingestion et au traitement des données produites en streaming, notamment Apache Kafka, Spark Streaming, Flume, Apache Samza, Apache Storm et S4.
L'ouvrage est un kit d'apprentissage technique. Il a été rédigé uniquement à l'endroit de cinq types de profls :
- Le consultant ou freelance, qui veut aiguiser ses compétences BI/Big Data, en y rajoutant l'aspect streaming ;
- Le Data Scientist, qui veut développer des modèles de "Machine Learning streaming" ;
- L'architecte, qui veut comprendre les architectures des systèmes streaming et comment celles-ci s'intègrent dans le SI global d'une entreprise ;
- Le développeur, qui souhaite développer des applications streaming à large échelle ;
- et le Manager, qui veut développer une vision holistique sur la façon de capitaliser les données des projets streaming ;
Pour faciliter la compréhension de l ouvrage, chaque chapitre s achève par un rappel des points clés et un guide d étude qui permettent au lecteur de consolider ses acquis. En bonus pour vous, l'ouvrage est offert avec une mini-formation gratuite composée de 3 sessions de cours -vidéo sur le streaming librement téléchargeable sur le site web suivant : https://www.data-transitionnumerique.com/bonus_formation_streaming
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Les éditions Juvénal & Associés
ISBN10 : 2-9568-1130-4
ISBN13 : 978-2-9568-1130-5
- Généralités sur Hadoop
- Apache YARN
- Apache ZooKeeper
- Le nouveau paradigme d'ingestion de données
- Apache Kafka & Apache Flume
- Principes du traitement streaming
- Caractéristiques des systèmes de traitement streaming et temps réel
- Apache Storm
- Apache Samza
- Spark Streaming
- Apache S4
- Benchmark des technologies Streaming & Temps réel
Le flux de données valorisables n'est pas près de se tarir, il a plutôt tendance à se diversifier, par exemple du côté des données à traiter en flux tendu. Pour les gérer, il faut utiliser des outils adaptés, notamment pour garantir un traitement rapide, sans quoi les données n'ont plus tellement d'intérêt. Ce livre porte uniquement sur ces problématiques : bien que le sujet semble restreint de prime abord, sa richesse se dévoile petit à petit. Il montre pourquoi autant d'outils différents existent et, surtout, pourquoi tous ont leur utilité. En bref, l'auteur aide à s'y retrouver dans la jungle des technologies Hadoop, en explicitant les liens entre les briques logicielles.
L'ouvrage est conçu comme une série de tutoriels plus ou moins spécifiques, en suivant une approche pas à pas. Les prérequis sont assez légers (des connaissances de base en programmation et en traitement des données), il n'est par exemple pas nécessaire de déjà savoir utiliser Hadoop ou Spark avant de se lancer dans la lecture. Les présentations des briques logicielles cherchent à montrer en quoi un logiciel peut résoudre un certain nombre de défis techniques, mais aussi en quoi il ne sert à rien pour d'autres. Ces chapitres possèdent aussi une partie bien plus technique, en expliquant comment utiliser l'outil, avec du vrai code (et pas seulement en Java !). Par contre, ce livre évite soigneusement les problématiques d'administration de grappes de serveurs. Il vise uniquement un public de développeurs et de décideurs.
Chaque chapitre se termine par un résumé des points principaux et une liste concise des points clés abordés. Aussi, pour ceux qui cherchent à s'évaluer, des guides d'étude sont proposés, avec une approche bien plus scolaire (des questions à choix multiples et des questions ouvertes, avec des solutions types en fin d'ouvrage). Du contenu plus avancé est aussi proposé en formations vidéo.
Le texte est régulièrement agrémenté d'illustrations pour expliquer le propos, qui aident parfois plus à comprendre que le texte chaloupé. Le tableau est vraiment terni par la qualité de la rédaction, avec une moyenne de deux à trois fautes d'orthographe par page et un style parfois lourd, ce qui rend la lecture difficile. Vu qu'il s'agit d'une nouvelle maison d'édition, on peut espérer que les phases de relecture s'amélioreront avec les prochaines parutions.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Graphes, ordres et programmation linéaire
Cours et exercices
Résumé de l'éditeur
Ce livre s'adresse avant tout aux étudiants de licence et de master à la recherche d'outils puissants pour la modélisation et la résolution de problèmes concrets.
De nombreux problèmes réels, pris dans la vie quotidienne, relèvent de la recherche opérationnelle ; les graphes et la programmation mathématique en général, et linéaire en particulier, constituent deux éléments indispensables pour la résolution de tels problèmes.
Des exercices avec solution détaillée sont proposés qui permettront au lecteur de mieux comprendre et maîtriser le contenu de cet ouvrage.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Ellipses
ISBN10 : 2-340-03670-4
ISBN13 : 978-2-340-03670-3
- Graphes
- Cycles et cocycles
- Arbres et arborescences
- Couplage et transversal
- Flots et problème du flot maximum
- Nombre de stabilité
- Stabilité dans les graphes orientés
- Orientation dans les graphes
- Complexité algorithmique
- Ordres dans les graphes
- Programmation linéaire
La théorie des graphes est un outil extrêmement important en informatique et en mathématiques, mais elle ressemble assez peu aux autres parties des mathématiques généralement étudiées dans les concepts et techniques mis en œuvre. C'est pourquoi le sujet fait régulièrement l'objet de livres introductifs. Cependant, cet ouvrage risque de ne pas réconcilier grand monde avec ce domaine des mathématiques discrètes.
À la lecture, on profite d'un style de rédaction très sec, avec des successions de définitions, de théorèmes et lemmes, de preuves, d'algorithmes, mais peu d'exemples ou d'intuition. Les éléments sont donnés les uns à la suite des autres sans expliciter les liens qui existent entre eux ou les applications potentielles. Les symboles sont très souvent définis uniquement de manière mathématique, sans interprétation plus facile à comprendre. Les sujets sont abordés sans grande cohérence (le premier chapitre passe rapidement de définitions de base aux notions de nombre chromatique ou d'isomorphisme…). Les illustrations sont réalisées avec un certain amateurisme, avec des flèches dessinées à la main ou des symboles importants manquants.
L'auteur apporte néanmoins un éclairage sur la théorie des ordres du point de vue des graphes, chose que l'on ne voit pas régulièrement. Par contre, on se demande ce que vient faire la programmation linéaire ici, vu qu'elle est abordée de manière décorrélée par rapport aux graphes : on ne voit même pas de formulation linéaire de problèmes dans des graphes, ne fût-ce qu'un flot maximal, alors que les applications des graphes en programmation linéaire ne manquent pas. Le chapitre sur la complexité algorithmique tombe aussi comme un cheveu dans la soupe, sans véritable lien avec le reste de l'ouvrage ; c'est vraiment dommage, au vu des développements algorithmiques dans les graphes.
Les exercices sont nombreux et la très grande majorité est corrigée en détail, c'est sûrement le point fort de l'ouvrage. Ils recouvrent bien la matière traitée. On peut regretter qu'ils ne fassent pas plus le lien avec les applications concrètes de la théorie des graphes ou de la programmation linéaire.
On a ici affaire à un support de cours, sûrement utile lorsque l'enseignant le suit de près. Par contre, j'aurais du mal à conseiller ce livre dans d'autres cas de figure.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Programmation par contraintes
Démarches de modélisation pour l'optimisation
Résumé de l'éditeur
Cet ouvrage est un véritable guide de bonnes pratiques en Programmation par contraintes (PPC). Il développe un ensemble de démarches permettant de proposer des modèles efficaces pour des problèmes d'optimisation complexes.
Les outils et les raisonnements présentés dans le livre s'adressent à un vaste public, d'ingénieurs de chercheurs et d'étudiants.
Les exemples variés analysés sont essentiellement des problèmes d'optimisation de type ordonnancement / transport réalisés avec le solveur Choco. Sont présentées pour chacun une modélisation mathématique et une modélisation PPC. Les codes proposés, et disponibles en téléchargement, ont été réalisés en Java avec l'environnement NetBeans.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Ellipses
ISBN10 : 2-340-03585-6
ISBN13 : 978-2-340-03585-0
- Notions fondamentales en PPC
- Modélisations de problèmes de type VRP
- Modélisations de problèmes de type IRP
- Modélisations de problèmes de type Job-Shop
- Modélisations de problème de type VRP avec synchronisation
En recherche opérationnelle, on dispose souvent d'une quantité phénoménale d'approches pour un même problème. Cependant, la programmation par contraintes ressort trop rarement, notamment parce qu'elle n'est pas bien connue. Ce livre propose d'approfondir les notions de modélisation en programmation par contraintes afin de tirer un maximum des solveurs, mais aussi d'enrober ces modèles dans des techniques plus générales pour résoudre les problèmes les plus complexes (avec, généralement, une perte de garanties sur l'optimalité des solutions).
Le niveau supposé du lecteur est assez avancé, le premier chapitre se contente de rappeler les principes de base d'un solveur de programmation par contraintes et les contraintes de base, c'est-à-dire les éléments absolument requis pour lire la suite de l'ouvrage. Pour en profiter un maximum, il faudra au lecteur de l'expérience en programmation par contraintes (cet ouvrage est conçu comme une suite à De la programmation linéaire à la programmation par contraintes, des mêmes auteurs, qui cherche à apporter cette expérience).
Le contenu est divisé en quatre études de cas, quatre problèmes complexes où des techniques de programmation par contraintes peuvent apporter des réponses intéressantes dans la pratique (qu'il s'agisse de recherche ou de développements industriels). L'approche des auteurs est très pragmatique, ils ont choisi des problèmes qui restent difficiles à l'heure actuelle et qui sont utiles dans l'industrie. Ils ne passent pas leur temps à admirer des constructions mathématiques, ils se permettent même de sortir du cadre des méthodes exactes pour proposer des heuristiques de recherche locale et des métaheuristiques construites sur des modèles de programmation par contraintes.
L'essentiel des études de cas consiste à comparer différentes manières d'aborder un problème, c'est-à-dire différentes manières de le formuler dans le paradigme de la programmation par contraintes. Ils montrent ainsi l'intérêt d'une bonne formulation dans la pratique numérique de l'optimisation à l'aide de la programmation par contraintes. Ils se focalisent sur le solveur Choco, mais les principes utilisés sont valides pour la plupart des solveurs.
Cet ouvrage propose donc une manière intéressante d'approfondir ses connaissances dans le domaine, à l'aide d'exemples intéressants et loin d'être simplistes.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Fundamentals of Data Visualization
A Primer on Making Informative and Compelling Figures
Résumé de l'éditeur
Effective visualization is the best way to communicate information from the increasingly large and complex datasets in the natural and social sciences. But with the increasing power of visualization software today, scientists, engineers, and business analysts often have to navigate a bewildering array of visualization choices and options.
This practical book takes you through many commonly encountered visualization problems, and it provides guidelines on how to turn large datasets into clear and compelling figures. What visualization type is best for the story you want to tell? How do you make informative figures that are visually pleasing? Author Claus O. Wilke teaches you the elements most critical to successful data visualization.
- Explore the basic concepts of color as a tool to highlight, distinguish, or represent a value
- Understand the importance of redundant coding to ensure you provide key information in multiple ways
- Use the book's visualizations directory, a graphical guide to commonly used types of data visualizations
- Get extensive examples of good and bad figures
- Learn how to use figures in a document or report and how employ them effectively to tell a compelling story
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : O'Reilly
ISBN10 : 1-4920-3108-9
ISBN13 : 978-1-492-03107-9
- Introduction
-
From Data to Visualization
- Visualizing Data: Mapping Data onto Aesthetics
- Coordinate Systems and Axes
- Color Scales
- Directory of Visualizations
- Visualizing Amounts
- Visualizing Distributions: Histograms and Density Plots
- Visualizing Distributions: Empirical Cumulative Distribution Functions and Q-Q Plots
- Visualizing Many Distributions at Once
- Visualizing Proportions
- Visualizing Nested Proportions
- Visualizing Associations Among Two or More Quantitative Variables
- Visualizing Time Series and Other Functions of an Independent Variable
- Visualizing Trends
- Visualizing Geospatial Data
- Visualizing Uncertainty
-
Principles of Figure Design
- The Principle of Proportional Ink
- Handling Overlapping Points
- Common Pitfalls of Color Use
- Redundant Coding
- Multipanel Figures
- Titles, Captions, and Tables
- Balance the Data and the Context
- Use Larger Axis Labels
- Avoid Line Drawings
- Don't Go 3D
-
Miscellaneous Topics
- Understanding the Most Commonly Used Image File Formats
- Choosing the Right Visualization Software
- Telling a Story and Making a Point
La visualisation est souvent le parent pauvre de l'enseignement scientifique : les étudiants sont censés savoir quand une visualisation est bonne, les formations se limitent à leur montrer comment réaliser l'une ou l'autre figure avec un logiciel donné. Par la suite, devenus professionnels, ces mêmes étudiants n'auront bien souvent pas les moyens de corriger le tir si nécessaire, à moins de s'y investir fortement. Ce livre cherche à fournir tous les éléments pour réaliser des visualisations efficaces qui transmettent le message prévu. Ce faisant, il ne montre que très peu de mathématiques et aucun bout de code, il n'utilise pas trop de jargon, pour s'ouvrir à un large public.
L'ouvrage est divisé en deux parties principales. La première se focalise sur les types de graphiques que l'on peut créer, les situations dans lesquelles ils s'avèrent intéressants. La deuxième partie est plus précise : elle traite le choix des couleurs et la préparation d'un graphique adapté aux daltoniens, par exemple.
Chaque chapitre est fortement illustré avec de bons et moins bons exemples de graphiques. Surtout, à chaque fois, l'auteur indique clairement ce qu'il en pense (clairement mauvais, simplement laid), mais aussi ses raisons (utilisation hasardeuse des couleurs et tailles, adéquation au type de données à représenter, etc.) ; ensuite, il donne des indications pour améliorer ces graphiques. Ces exemples ne sont pas abstraits, ils pourraient très bien provenir de la pratique quotidienne. Sur ces points, le livre se distingue de certains de ses concurrents, moins appliqués.
L'auteur suppose un certain niveau de connaissance d'un logiciel pour créer des graphiques (ne fût-ce qu'un tableur comme Excel, même s'il le décourage), car il ne parle jamais d'un seul logiciel en particulier. C'est à l'utilisateur de transposer les conseils donnés dans sa pratique de tous les jours. Le vocabulaire utilisé fait souvent penser à Leland Wilkinson (Grammar of Graphics, dont les principes sont repris par des bibliothèques comme ggplot ou plotnine). Le code utilisé pour générer toutes les visualisations est disponible en ligne (avec ggplot2 en R).
En termes de qualité esthétique, le livre est imprimé sur un papier de bonne qualité et en couleur, ce qui le rend très agréable à tenir en main.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Learning SQL
Generate, Manipulate, and Retrieve Data
Résumé de l'éditeur
As data floods into your company, you need to put it to work right away—and SQL is the best tool for the job. With the latest edition of this introductory guide, author Alan Beaulieu helps developers get up to speed with SQL fundamentals for writing database applications, performing administrative tasks, and generating reports. You'll find new chapters on SQL and big data, analytic functions, and working with very large databases.
Each chapter presents a self-contained lesson on a key SQL concept or technique using numerous illustrations and annotated examples. Exercises let you practice the skills you learn. Knowledge of SQL is a must for interacting with data. With Learning SQL, you'll quickly discover how to put the power and flexibility of this language to work.
- Move quickly through SQL basics and several advanced features
- Use SQL data statements to generate, manipulate, and retrieve data
- Create database objects, such as tables, indexes, and constraints with SQL schema statements
- Learn how datasets interact with queries; understand the importance of subqueries
- Convert and manipulate data with SQL's built-in functions and use conditional logic in data statements
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : O'Reilly
ISBN10 : 1-4920-5761-4
ISBN13 : 978-1-492-05761-1
- A Little Background
- Creating and Populating a Database
- Query Primer
- Filtering
- Querying Multiple Tables
- Working with Sets
- Data Generation, Manipulation, and Conversion
- Grouping and Aggregates
- Subqueries
- Joins Revisited
- Conditional Logic
- Transactions
- Indexes and Constraints
- Views
- Metadata
- Analytic Functions
- Working with Large Databases
- SQL and Big Data
SQL est un langage souvent peu ou mal enseigné. Il se base sur des principes différents des langages de programmation habituels, ce qui explique sa mauvaise compréhension par bon nombre de personnes. Ce livre part de zéro en ce qui concerne SQL : le lecteur est supposé savoir programmer, c'est-à-dire avoir une habitude de raisonner face à un ordinateur. Ensuite, l'auteur commence à montrer des requêtes SQL, d'abord très simples, puis de plus en plus complexes. À la fin, le lecteur devrait être à même d'effectuer des requêtes analytiques complexes en SQL, sans devoir récupérer des données et les traiter dans un autre langage.
L'ouvrage traite principalement des techniques pour récupérer ses données au bon format depuis une base de données relationnelle. La création des tables et des vues est rapidement abordée. Les formes normales sont aussi au programme, sans approfondissement. Les contraintes relationnelles sont également expliquées.
Au vu des nombreuses différences syntaxiques entre les variantes de SQL implémentées par les différents éditeurs de systèmes relationnels, l'auteur a fait le choix de montrer presque toutes ses requêtes sous MySQL, en expliquant les désaccords avec Microsoft SQL Server et Oracle Database. Certains sujets où les divergences entre les logiciels sont très marquées sont simplement cités, comme les procédures stockées ou les langages PL/SQL et Transact-SQL.
De manière générale, le livre est bien écrit, concis mais pas trop, les explications claires, avec une bonne dose de pragmatisme. L'auteur ne considère pas de connaissances préalables en SQL ou en bases de données, notamment en accompagnant toujours le lecteur face à une erreur que lui renverrait le serveur. Les sujets ne sont pas abordés de manière séquentielle, mais bien par degré de complexité : l'auteur ne commence pas par présenter les subtilités de INSERT avant de passer à l'étude complète de SELECT, mais plutôt par des requêtes simples avant de passer aux jointures.
Je trouve que ce livre sera très adapté à des personnes débutant avec SQL, mais aussi à celles qui souhaitent approfondir le sujet des requêtes analytiques.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Handbook of Machine Learning
Volume 1: Foundation of Artificial Intelligence
Résumé de l'éditeur
This is a comprehensive book on the theories of artificial intelligence with an emphasis on their applications. It combines fuzzy logic and neural networks, as well as hidden Markov models and genetic algorithm, describes advancements and applications of these machine learning techniques and describes the problem of causality. This book should serves as a useful reference for practitioners in artificial intelligence.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : WorldScientific
ISBN10 : 9-8132-7122-1
ISBN13 : 978-9-813-27122-7
- Introduction
- Multi-layer Perceptron
- Radial Basis Function
- Automatic Relevance Determination
- Bayesian Networks
- Support Vector Machines
- Fuzzy Logic
- Rough Sets
- Hybrid Machines
- Auto-associative Networks
- Evolving Networks
- Causality
- Gaussian Mixture Models
- Hidden Markov Models
- Reinforcement Learning
- Conclusion Remarks
L'intelligence artificielle est la tarte à la crème du jour, avec moult livres (entre autres supports) qui traitent du sujet, de manière plus ou moins appropriée. Ce livre prend un point de vue assez différent de la majorité : il ne se focalise pas sur les algorithmes possibles ou sur des bibliothèques qui les implémentent, mais bien sur les applications de ces techniques (académiques, pour l'écrasante majorité). Quand beaucoup de ressources sur le sujet se focalisent sur la manière d'arriver à un objectif donné, l'auteur présente des résultats auxquels on peut arriver, en pratique.
La variété de domaines abordés impressionne, on a vraiment une vue d'ensemble de toute une série de techniques d'intelligence artificielle. Ce panorama n'est pas complet, bien sûr (on ne voit presque pas d'utilisation des arbres de décision, par exemple), mais il inclut des outils peu connus, comme ARD pour l'interprétabilité de réseaux neuronaux ; les statistiques bayésiennes sont bien représentées, y compris dans les réseaux neuronaux. Beaucoup de sens de l'expression « intelligence artificielle » sont décrits, y compris la logique floue et les techniques évolutionnaires. Toutefois, le chapitre sur les réseaux neuronaux est quelque peu décevant, il semble s'être arrêté avant les développements de ces dix dernières années (uniquement de petits réseaux). L'auteur inclut toujours les RBF, une technique tombée en désuétude (même si elle reste utile).
L'une des principales contributions de ce livre est, sans conteste, la quantité de références incluses, tant pour les algorithmes que leurs applications (qui représentent l'essentiel des références). Certaines références ne sont pas forcément très adaptées au contexte (articles de recherche opérationnelle pour de l'apprentissage, notamment) ; l'auteur de l'ouvrage se retrouve surreprésenté dans les citations.
L'ouvrage débute sur les chapeaux de roues : très clairement, le lecteur est censé avoir déjà une certaine expérience dans le domaine, sans quoi il sera directement perdu. On attend notamment de lui certaines connaissances en statistiques, en processus stochastiques et en traitement des données.
Les explications d'algorithmes sont toujours concises, aucune technique n'a droit à plus d'une dizaine de pages. Ce niveau de concision est parfois problématique pour des sujets plus techniques, comme l'inférence de causalité. Les applications sont elles aussi résumées, mais de manière moins sommaire : ces parties peuvent donner des idées pour nourrir sa pratique quotidienne de science des données.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Handbook of Machine Learning
Volume 2: Optimization and Decision Making
Résumé de l'éditeur
Building on Handbook of Machine Learning - Volume 1: Foundation of Artificial Intelligence, this volume on Optimization and Decision Making covers a range of algorithms and their applications. Like the first volume, it provides a starting point for machine learning enthusiasts as a comprehensive guide on classical optimization methods. It also provides an in-depth overview on how artificial intelligence can be used to define, disprove or validate economic modeling and decision making concepts.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : WorldScientific
ISBN10 : 9-8112-0566-3
ISBN13 : 978-9-811-20566-8
- Introduction
- Classical Optimization
- Genetic Algorithm
- Particle Swarm Optimization
- Simulated Annealing
- Response Surface Method
- Ant Colony Optimization
- Bat and Firefly Algorithms
- Artificial Immune System
- Invasive Weed Optimization and Cuckoo Search Algorithms
- Decision Trees and Random Forests
- Hybrid Methods
- Economic Modeling
- Condition Monitoring
- Rational Decision-Making
- Conclusion Remarks
La science des données s'axe souvent sur la compréhension de données, mais ignore trop souvent la prise de décision : comment mettre en pratique les résultats d'un modèle d'apprentissage ? Comme le premier volume, les auteurs proposent une série d'études de cas rassemblés par technique, en exploitant les techniques du premier volume. On voit ainsi une série d'exemple où ces techniques sont appliquées et les résultats auxquels on peut arriver.
Cet ouvrage traite d'un grand nombre d'algorithmes d'optimisation : les algorithmes classiques d'optimisation continue, mais aussi toute la panoplie actuelle des métaheuristiques. En particulier, aucune méthode exacte n'est présentée pour les problèmes non convexes (alors qu'elles existent depuis belle lurette et sont efficaces pour un très grand nombre de cas pratiques). Ces techniques sont expliquées de manière très concise, mais claire.
Tout comme le premier volume, l'une des principales contributions de ce livre est, sans conteste, la quantité de références incluses, tant pour les algorithmes que leurs applications (qui représentent l'essentiel des références). Toutefois, les auteurs sont très convaincus par les métaheuristiques, au point d'en énoncé des contre-vérités : aucun de ces algorithmes ne peut trouver, à coup sûr, de solution globalement optimale.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Ensemble Learning
Pattern Classification Using Ensemble Methods
Résumé de l'éditeur
This updated compendium provides a methodical introduction with a coherent and unified repository of ensemble methods, theories, trends, challenges, and applications. More than a third of this edition comprised of new materials, highlighting descriptions of the classic methods, and extensions and novel approaches that have recently been introduced.
Along with algorithmic descriptions of each method, the settings in which each method is applicable and the consequences and tradeoffs incurred by using the method is succinctly featured. R code for implementation of the algorithm is also emphasized.
The unique volume provides researchers, students and practitioners in industry with a comprehensive, concise and convenient resource on ensemble learning methods.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : WorldScientific
ISBN10 : 9-8112-0195-1
ISBN13 : 978-9-811-20195-0
- Introduction to Machine Learning
- Classification and Regression Trees
- Introduction to Ensemble Learning
- Ensemble Classification
- Gradient Boosting Machines
- Ensemble Diversity
- Ensemble Selection
- Error Correcting Output Codes
- Evaluating Ensembles of Classifiers
Parmi les stratégies d'apprentissage en intelligence artificielle, les méthodes d'ensemble sont souvent plébiscitées. De fait, elles ont un pouvoir prédictif très fort, sans autant présenter une performance très faible lors de l'entraînement. Ce livre présente l'état actuel des connaissances dans ce domaine, sans nécessiter de grands prérequis : quelques notions d'apprentissage automatique, notamment avec des arbres de décision, et un peu de probabilités, c'est tout ce qu'il faut pour la lecture (même si un niveau plus avancé permettra d'en tirer plus d'enseignements).
L'auteur utilise un niveau de formalisation assez élevé, ce qui risque de rebuter les personnes allergiques aux mathématiques. Toutes les notations sont bien expliquées, le pseudocode est clair. Le long de l'ouvrage, on passe d'éléments très pratiques (mise en œuvre d'un algorithme donné en R) à d'autres, plus théoriques (comme les raisons pour lesquelles les méthodes d'ensemble devraient bien fonctionner, notamment à travers les liens avec la théorie de l'apprentissage). Le livre, assez complet, contient également une bibliographie scientifique fournie, qui oscille entre articles précurseurs incontournables et études numériques.
Le livre est bien ancré dans le présent, il présente assez longuement les méthodes les plus utilisées actuellement (comme GBM et son implémentation à base d'histogrammes). À l'occasion, l'auteur propose aussi l'une ou l'autre méthodologie pas encore présente dans la littérature. Outre les arbres (utilisés dans presque toutes les méthodes d'ensemble), l'ouvrage présente également des techniques à base de réseaux neuronaux. Le chapitre sur l'évaluation est très générique, il ne présente que peu d'éléments spécifiques aux méthodes d'ensemble. Sa section sur l'interprétation est décevante, elle n'introduit même pas la notion d'importance ou de modèle local (comme LIME).
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Crowds in Equations
An Introduction to the Microscopic Modeling of Crowds
Résumé de l'éditeur
The book contains self-contained descriptions of existing models, accompanied by critical analyses of their properties both from a theoretical and practical standpoint. It aims to develop 'modeling skills' within the readers, giving them the ability to develop their own models and improve existing ones. Written in connection with a full, open source Python Library, this project also enables readers to run the simulations discussed within the text.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : WorldScientific
ISBN10 : 1-7863-4551-X
ISBN13 : 978-1-786-34551-6
- Foreword
- Introduction
- One-Dimensional Microscopic Models
- Social Force Model, Native and Overdamped Forms
- Granular Models
- Cellular Automata
- Compartment Models
- Toward Macroscopic Models
- Computing Distance and Desired Velocities
- Data, Observable Phenomena
- A Wider Look on Characteristic Phenomena in Crowds
Les mathématiques appliquées sont partout, y compris quand il s'agit de concevoir des scénarios d'évacuation de bâtiment ou de simuler le comportement de piétons dans un jeu vidéo. Ce livre aborde ces questions sous un angle microscopique, comme son nom l'indique : comment se déplace chaque personne dans une foule ? Ce livre répond à cette question en expliquant les principes de modélisation de ces situations, selon l'état actuel des connaissances scientifiques (les techniques proposées sont néanmoins implémentées dans un paquet Python, pour une mise en pratique rapide). Les auteurs développent, tout le long de l'ouvrage, le cas d'étude d'une évacuation de bâtiment, mais indiquent aussi les changements à effectuer pour simuler, par exemple, des flots de voitures.
Comme le titre l'indique assez clairement, le contenu est matheux : pour chaque modèle, les auteurs proposent une mise en équation (en vue d'effectuer des simulations numériques), mais analysent aussi ses propriétés mathématiques (existence et unicité de la solution, par exemple). Ces propriétés sont régulièrement remises en contexte (impact lors d'une simulation d'une non-unicité de solution, par exemple). Ils discutent aussi des phénomènes qui peuvent être mis en évidence par ces modèles, comme le fait que ralentir une foule peut augmenter le nombre de personnes que l'on fait passer par une sortie de secours par seconde (l'effet slower is faster). Les modèles abstraits utilisent un certain nombre de paramètres, mais des valeurs habituelles pour la simulation de piétons sont données. Un chapitre fait le lien entre les expériences du domaine (où l'on demande à une foule de se déplacer), les observations faites sur des situations réelles et les modèles mathématiques : il s'agit réellement de mathématiques appliquées, en lien direct avec la pratique.
Le niveau mathématique requis pour les lecteurs est assez élevé : sans connaissance de base en analyse réelle et en équations différentielles, par exemple, on ne profitera pas beaucoup du contenu. Les analyses des méthodes font souvent appel à des notions de stabilité (fonction de Liapounov) ou à la méthode des perturbations infinitésimales, des sujets qui ne sont presque pas abordés dans l'annexe ou explicités comme prérequis.
On peut toutefois reprocher des notations pas toujours limpides (comme un même symbole qui désigne un scalaire ou un vecteur, selon la section, voire des quantités sans aucun rapport : distance entre deux personnes ou distance par rapport à une situation d'équilibre). Le code fourni avec le livre n'a été développé que dans le contexte de cet ouvrage, il ne s'agit pas d'une bibliothèque utilisée au jour le jour par des chercheurs ou praticiens du domaine.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Algorithms Illuminated: Algorithms for NP-Hard Problems
Résumé de l'éditeur
Fourth book in a series that provides an accessible, no-nonsense, and programming language-agnostic introduction to algorithms. Includes hints or solutions to all quizzes and problems, and a series of YouTube videos by the author accompanies the book. Part 4 covers algorithmic tools for tackling NP-hard problems (heuristic algorithms, local search, dynamic programming, MIP and SAT solvers) and techniques for quickly recognizing NP-hard problems in the wild.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Soundlikeyourself Publishing
ISBN10 : 0-999-28296-4
ISBN13 : 978-0-999-28296-0
- What Is NP-Hardness?
- Compromising on Correctness: Efficient Inexact Algorithms
- Compromising on Speed: Exact Inefficient Algorithms
- Proving Problems NP-Hard
- P, NP, and All That
- Case Study: The FCC Incentive Auction
- Epilogue: A Field Guide to Algorithm Design
L'algorithmique est un vaste domaine, auquel les étudiants sont vite confrontés dans leur cursus informatique, sans les lâcher jusqu'à la fin des cours sur la complexité. Cette quatrième et dernière partie d'Algorithms Illuminated plonge dans les méandres des algorithmes pour les problèmes les plus complexes (du moins, selon la théorie de la complexité). L'auteur continue son approche pragmatique, claire et progressive, malgré la technicité du sujet. Bien qu'étant un livre introductif, l'auteur se permet de présenter des évolutions récentes dans la théorie de la complexité.
En tant que livre d'algorithmique, la présentation de la théorie de la complexité n'est pas habituelle. L'auteur préfère une vue proche de la pratique algorithmique : l'objectif est que le lecteur sache reconnaître un problème difficile pour éviter de partir à la recherche d'un algorithme polynomial qui n'existe probablement pas. De là, l'ouvrage présente des techniques de résolution de ces problèmes (des techniques classiques — algorithme glouton, programmation dynamique — et plus spécifiques — solveurs de satisfiabilité et en nombres entiers). Les algorithmes ne sont pas les plus classiques, mais l'objectif est toujours d'entraîner à la recherche d'algorithmes intelligents.
Les problèmes difficiles présentés dans ce quatrième tome ne sont pas abstraits, ils sont régulièrement présents dans la pratique. Ainsi, chacun est toujours mis en contexte. Le dernier chapitre est une étude de cas, pour montrer comment un problème réel (des mises aux enchères de canaux de fréquences pour les télécommunications sans fil aux États-Unis) doit être abordé avec finesse. Cette partie fait appel à tous les outils développés dans les quatre tomes de la série.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Hands-On Design Patterns and Best Practices with Julia
Proven solutions to common problems in software design for Julia 1.x
Résumé de l'éditeur
Design patterns are fundamental techniques for developing reusable and maintainable code. They provide a set of proven solutions that allow developers to solve problems in software development quickly. This book will demonstrate how to leverage design patterns with real-world applications.
Starting with an overview of design patterns and best practices in application design, you'll learn about some of the most fundamental Julia features such as modules, data types, functions/interfaces, and metaprogramming. You'll then get to grips with the modern Julia design patterns for building large-scale applications with a focus on performance, reusability, robustness, and maintainability. The book also covers anti-patterns and how to avoid common mistakes and pitfalls in development. You'll see how traditional object-oriented patterns can be implemented differently and more effectively in Julia. Finally, you'll explore various use cases and examples, such as how expert Julia developers use design patterns in their open source packages.
By the end of this Julia programming book, you'll have learned methods to improve software design, extensibility, and reusability, and be able to use design patterns efficiently to overcome common challenges in software development.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Packt Publishing
ISBN10 : 0-838-64881-X
ISBN13 : 978-1-838-64881-7
- Design Patterns and Related Principles
- Modules, Packages, and Data Type Concepts
- Designing Functions and Interfaces
- Macros and Metaprogramming Techniques
- Reusability Patterns
- Performance Patterns
- Maintainability Patterns
- Robustness Patterns
- Miscellaneous Patterns
- Anti-Patterns
- Traditional Object-Oriented Patterns
- Inheritance and Variance
Le langage de programmation Julia promet de révolutionner l'informatique scientifique au sens large, en offrant à la fois performance et simplicité d'utilisation. Cependant, pour y arriver, les concepteurs du langage ont dû recourir à des abstractions peu courantes, comme le polymorphisme à l'exécution, mais aussi éviter d'implémenter d'autres, comme l'héritage de la programmation orientée objet. Pour en tirer le meilleur parti, il faut donc penser différemment ses programmes : tel est l'objectif de cet ouvrage.
L'auteur considère que le lecteur part déjà d'un certain niveau de programmation en Julia, notamment qu'il a déjà écrit quelques programmes simples et connaît une bonne partie de la syntaxe du langage. Ensuite, il montre une série de patrons applicables dans un grand nombre de cas, en s'appuyant sur des exemples extraits de la bibliothèque standard du langage ou de paquets issus de la communauté ; les autres exemples sont souvent repris du monde de la finance. La majorité des patrons montrés est véritablement spécifique à Julia, même si un chapitre montre l'implémentation des patrons de conception habituels en programmation orientée objet.
L'objectif principal de l'auteur est de donner toutes les clés pour écrire un code Julia idiomatique, en suivant les conventions développées par les programmeurs du langage. Ces techniques pour écrire du code idiomatique sont prévues pour que le résultat soit un programme performant et réutilisable. Il s'agit véritablement de professionnaliser son développement en Julia.
Chaque chapitre se termine par une série de questions pour vérifier sa compréhension, avec une correction en fin d'ouvrage. Tout le code est disponible en ligne.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Hands-On C++ Game Animation Programming
Learn modern animation techniques from theory to implementation with C++ and OpenGL
Résumé de l'éditeur
Animation is one of the most important parts of any game. Modern animation systems work directly with track-driven animation and provide support for advanced techniques such as inverse kinematics (IK), blend trees, and dual quaternion skinning.
This book will walk you through everything you need to get an optimized, production-ready animation system up and running, and contains all the code required to build the animation system. You'll start by learning the basic principles, and then delve into the core topics of animation programming by building a curve-based skinned animation system. You'll implement different skinning techniques and explore advanced animation topics such as IK, animation blending, dual quaternion skinning, and crowd rendering. The animation system you will build following this book can be easily integrated into your next game development project. The book is intended to be read from start to finish, although each chapter is self-contained and can be read independently as well.
By the end of this book, you'll have implemented a modern animation system and got to grips with optimization concepts and advanced animation techniques.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Packt Publishing
ISBN10 : 1-80020-808-1
ISBN13 : 978-1-80020-808-7
- Creating a Game Window
- Implementing Vectors
- Implementing Matrices
- Implementing Quaternions
- Implementing Transforms
- Building an Abstract Renderer
- Exploring the glTF File Format
- Creating Curves, Frames, and Tracks
- Implementing Animation Clips
- Mesh Skinning
- Optimizing the Animation Pipeline
- Blending Betwen Animations
- Implementing Inverse Kinematics
- Using Dual Quaternions for Skinning
- Rendering Instanced Crowds
Dans le développement d'applications interactives, notamment des jeux, les animations sont souvent un élément difficile à implémenter correctement, surtout en 3D. Ce livre part de connaissances très basiques du rendu avec OpenGL (l'auteur utilise la version 3.3, mais toutes les techniques restent compatibles jusqu'à la version 4.6) et détaille la manière d'implémenter ces animations dans des applications réelles.
Chaque chapitre est divisé en deux parties : la première détaille les principes (fonctionnement d'un produit scalaire, d'une interpolation, etc.), la seconde les implémente en C++. Ce découpage participe à la clarté de l'ouvrage, vu que l'on sait à l'avance très exactement ce que l'on s'apprête à implémenter. Aucune bibliothèque externe n'est utilisée, afin de bien montrer une manière d'implémenter chaque principe (ce qui limite la portabilité du code : la gestion des fenêtres fonctionne exclusivement sous Windows, par exemple). Les chapitres sont vus comme autant d'outils qui finissent par s'assembler pour afficher des animations. Le code C++ n'est pas très moderne, l'objectif étant surtout de démystifier des concepts plutôt que de montrer une implémentation utilisable telle quelle dans un moteur de jeu vidéo ; par ailleurs, tout le code est expliqué, l'auteur ne se limite pas à quelques généralités sur des blocs de centaines de lignes de code.
Les prérequis sont simplifiés à l'extrême, l'auteur ne présuppose pas de connaissances en algèbre linéaire (vecteurs, matrices) ou sur les quaternions pour implémenter les rotations. Les parties mathématiques représentent une petite moitié de l'ouvrage et sont expliquées de manière simple et intuitive, mais avec des raccourcis qui feront hérisser les cheveux des puristes. Les explications sont parfois tellement simplifiées qu'elles en deviennent mathématiquement fausses (le produit d'une matrice et d'un quaternion est appelé « concatenation », les opérations commutatives deviennent « cumulatives », etc.).
Tout le code est disponible en ligne.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Automates à états finis et langages réguliers
Rappels des notions essentielles et plus de 170 exercices corrigés
Résumé de l'éditeur
La théorie des langages et des automates est un enseignement incontournable dans tout cursus d'informatique puisqu'on en retrouve des applications dans des domaines aussi divers que la conception des processeurs, la compilation de programmes, la traduction automatique des langues naturelles, l'intelligence artificielle, la bio-informatique, la vérification de programmes embarqués, la cybersécurité…
Cet ouvrage s'adresse aux étudiants de premier cycle universitaire suivant un cursus incluant l'informatique, qu'ils soient étudiants en IUT, en licence ou en classes préparatoires aux grandes écoles.
Chaque chapitre comporte un rappel des notions essentielles du cours, des exercices simples d'application pour l'appropriation des notions, et des exercices plus avancés pour la maîtrise des concepts.
Une solution complète est fournie pour tous les exercices proposés.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Dunod
ISBN10 : 2-10-080846-X
ISBN13 : 978-2-10-080846-5
- Rappels et notations
- Notions préliminaires
- Automates déterministes
- Opérations sur les automates déterministes
- Algorithmes sur les automates déterministes
- Minimisation d'automates déterministes
- Automates non déterministes
- Automates non déterministes avec -transitions
- Expressions régulières
- Théorème de Kleene
- Grammaires
- Grammaires régulières
- Propriété de l'itération
- Démontrer la non-régularité
L'informatique théorique rebute régulièrement les étudiants, de par son côté abstrait, contrairement à l'informatique en général. Pourtant, ses apports ne peuvent être négligés, comme les expressions régulières, véritable couteau suisse du traitement de chaînes de caractères. Ce livre aborde la notion de langage régulier et sa version algorithmique, les automates finis, en faisant le lien avec les grammaires régulières et, évidemment, les expressions régulières. Les auteurs ne se limitent pas aux applications classiques, l'annexe se charge d'utilisations comme la vérification de protocoles à l'aide des mêmes outils. Le cœur de l'ouvrage est sans conteste la quantité impressionnante d'exercices corrigés.
Les chapitres sont divisés en cinq parties. Les auteurs débutent toujours un nouveau sujet par l'explication, en termes relativement intuitifs, des idées principales, avant de détailler de manière plus formelle les résultats importants. Ensuite viennent les exercices, puis des indices pour aider à la résolution, finalement les solutions proprement dites. Ce découpage permet d'avoir un coup de pouce dans la résolution d'un exercice sans toutefois avoir la solution complète du premier coup. Le texte principal fournit très peu de démonstrations, elles sont en bonne partie laissées en exercice.
Les prérequis sont très limités, mais un bon bagage de mathématiques sera essentiel pour suivre le contenu : le niveau de formalisme est très élevé, le profane trouvera les explications peu digestes. Par exemple, les auteurs rappellent les principales techniques de preuve, définissent les notions de morphisme de groupe (en omettant, notamment, de définir les groupes). La rédaction est sèche, académique, de telle sorte qu'un tel livre s'utilisera probablement plus comme ouvrage de référence pour un cours qu'afin de découvrir le domaine des automates finis.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Le guide de survie Linux
L'essentiel du code et des commandes
Résumé de l'éditeur
Le compagnon indispensable pour ne jamais se sentir perdu dans un environnement Linux.
Les tutoriaux pour s'initier aux fondamentaux de Linux ne manquent pas. Le Guide de survie ne s'encombre pas de cela et vous propose de commencer par la pratique, avec des solutions immédiatement applicables à diverses situations que vous êtes susceptibles de rencontrer au quotidien.
Il s'agit du seul guide à proposer à la fois :
- Des exemples de phrases de code qui permettent de commander une suite de tâches fastidieuses ou répétitives ;
- 100 fragments de codes et commandes personnalisables pour gérer et manier Linux dans toutes les situations.
Cet ouvrage, fondé sur la simplicité d'utilisation, est le compagnon indispensable pour ne jamais se sentir perdu sous Linux.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Pearson
ISBN10 : 2-74-406729-6
ISBN13 : 978-2-74-406729-7
- Les commandes : ce qu'il faut savoir
- Parcours du système de fichiers
- Création et destruction
- Informations sur les commandes
- Création de blocs de commandes
- Affichage du contenu des fichiers
- Manipulation de fichiers texte avec des filtres
- Propriétés et permissions
- Archivage et compression
- Recherche d'éléments
- La commande find
- Le shell
- Surveillance des ressources système
- Installation de logiciels
- Connectivité
- Travail sur le réseau
- Travail en réseau avec Windows
La ligne de commande de Linux, comme pour les autres systèmes d'exploitation, est quelque peu intimidante, même si elle a acquis un caractère plus mythologique avec Linux. Cet ouvrage propose de guider les plus débutants dans l'utilisation de cet outil extrêmement pratique pour de nombreuses tâches. Il pourra également servir de référence, mais ne sera vraisemblablement pas adapté aux plus aguerris.
L'auteur adopte une approche résolument pragmatique, il s'appesantit aussi peu que possible sur les aspects théoriques — même si l'explication des permissions fait partie des plus claires ! Les chapitres correspondent à des types de tâches que l'on peut souhaiter effectuer en ligne de commande, les sections indiquent clairement la forme générale de la commande qui y est expliquée. Les débutants ont souvent du mal à combiner des commandes pour arriver à leurs fins, c'est pourquoi les combinaisons les plus courantes sont utilisées dans les exemples.
Toutes les commandes utiles sont présentées pour l'utilisateur moyen. L'administrateur aura sûrement besoin de plus d'informations, mais l'ouvrage lui permettra d'acquérir les bases. On peut regretter que l'auteur ne passe pas plus de temps sur les éditeurs de texte en ligne de commande, bien que des éléments de vi soient présents.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Coder proprement
Nettoyez votre code et devenez plus performant !
Résumé de l'éditeur
Si un code « sale » peut fonctionner, il peut également remettre en question la pérennité d'une entreprise de développement de logiciels. Chaque année, du temps et des ressources sont gaspillés à cause d'un code mal écrit. Cet ouvrage vous apprendra les meilleures pratiques de nettoyage du code « à la volée » et les valeurs d'un artisan du logiciel qui feront de vous un meilleur programmeur. Véritable manuel du savoir-faire en développement agile, cet ouvrage est un outil indispensable à tout développeur, ingénieur logiciel, chef de projet, responsable d'équipe ou analyste des systèmes dont l'objectif est de produire un meilleur code.
Coder proprement est décomposé en trois parties :
- La première décrit les principes, les motifs et les pratiques employés dans l'écriture d'un code propre.
- La deuxième est constituée de plusieurs études de cas à la complexité croissante. Chacune d'elles est un exercice de nettoyage : vous partirez d'un exemple de code présentant certains problèmes et l'auteur vous expliquera comment en obtenir une version saine et performante.
- La troisième partie est une sorte de « récompense » puisqu'elle contient une liste d'indicateurs éprouvés par l'auteur qui seront précieux pour repérer efficacement les défauts de votre code.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Pearson
ISBN10 : 2-326-00227-X
ISBN13 : 978-2-3260-0227-2
- Code propre
- Noms significatifs
- Fonctions
- Commentaires
- Mise en forme
- Objets et structures de données
- Gestion des erreurs
- Limites
- Tests unitaires
- Classes
- Systèmes
- Émergences
- Concurrence
- Améliorations successives
- Au coeur de JUnit
- Remaniement de SerialDate
- Indicateurs et heuristiques
- Annexes
Autant il est facile de déterminer si du code est propre, autant il est difficile d'écrire du code propre. Ce livre n'aborde que ce sujet : l'art de remanier du code fonctionnel en code propre. Pour ce faire, l'auteur et ses six collaborateurs passent en revue une grande quantité d'aspects par lesquels un code peut pécher par manque de propreté, regroupé en sujets génériques.
Ces présentations sont résolument pratiques, la majorité des concepts étant directement appliqués sur des morceaux de code (souvent issus de projets réels, parfois même libres). On compte d'ailleurs aussi trois chapitres entièrement consacrés à des études de cas, classées par difficulté croissante : l'auteur part d'un code améliorable (voire carrément sale) pour l'améliorer, en détaillant chaque étape. Le dernier chapitre résume ces points saillants sous la forme d'heuristiques, pour objectiver la détection de problèmes dans le code.
Néanmoins, l'ouvrage est spécifique à Java : tous les exemples sont écrits dans ce langage. Bon nombre de conseils s'appliquent sans problème à d'autres langages, mais certains chapitres sont spécifiques à la plateforme Java. De plus, on sent que l'original a été écrit en 2009, quand il n'y avait encore que Java 6. On aurait aimé l'opinion de l'auteur sur les nouvelles fonctionnalités apportées depuis lors.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Intelligence artificielle, l'affaire de tous
De la science au business
Résumé de l'éditeur
Dans les dix prochaines années, vous allez côtoyer toutes sortes d'intelligences artificielles (IA). Vous en croisez d'ailleurs déjà. L'arrivée de robots-taxis, le sens de l'à-propos d'assistants virtuels et la suprématie de logiciels dans des jeux de stratégie montrent l'imminence d'un nouveau monde. Mais les IA n'habitent pas que des robots, ce sont souvent des logiciels dans la finance, la justice, la défense, le commerce, la santé et bien d'autres domaines. À la fois science et business, l'intelligence artificielle devient l'affaire de tous ! Pour rendre ce domaine technique accessible à un plus large public, cela nécessite de l'aborder différemment, avec un autre regard.
Grâce à ce livre, vous découvrirez progressivement l'IA telle qu'elle est aujourd'hui dans sa pluralité, avec ses dimensions business et techniques. Vous comprendrez ses principes de fonctionnement ; vous vous intéresserez à ses fondements scientifiques, aux enjeux économiques et sociétaux ainsi qu'aux risques et questions éthiques à considérer.
Accessible à tous (des étudiants aux managers chevronnés), centré sur l'acquisition de compétences et la formation, grâce à des études de cas et des exercices ludiques, cet ouvrage est le guide indispensable pour comprendre les enjeux actuels de l'IA et appréhender son champ d'application.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Pearson
ISBN10 : 2-7440-6758-X
ISBN13 : 978-2-7440-6758-7
- Une nouvelle forme d'intelligence
- L'observation d'IA
- L'IA est plurielle
- Un business démesuré
- Les risques effectifs
- Les machines apprenantes
- Les réseaux de neurones artificiels
- Les systèmes autonomes
- Études de cas
- Un autre regard sur l'IA
L'intelligence artificielle déchaîne les passions et ses derniers développements attisent les craintes qu'elle suscite. Comment peut-on se forger une bonne idée de ce qu'est l'intelligence artificielle et de ses réelles possibilités sans devenir expert technique ? Cet ouvrage fournit les clés nécessaires à cette fin. À l'aide d'observation de systèmes déployés, d'études de cas plus poussées et d'exercices de réflexion, l'auteur communique les principes de base de l'intelligence artificielle : les enjeux, les risques, les fantasmes, mais aussi les algorithmes utilisés dans la pratique industrielle.
Les explications fournies conviendront à un public très large. Les détails algorithmiques sont présentés de manière intuitive, mais certaines parties plus mathématiques nécessiteront des connaissances de base en mathématiques. Ces deux chapitres plus techniques sont la clé de voûte de l'ouvrage, en ce sens qu'ils achèvent de démystifier le domaine. L'intelligence artificielle n'est qu'une application de principes mathématiques bien connus, mais avec les possibilités techniques du 21e siècle.
L'ouvrage est facile à lire et probablement déconcertant pour le non-initié. Il met fin à certaines idées reçues, pour que les débats autour du sujet soient plus éclairés et sereins.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Machine Learning Under a Modern Optimization Lens
Résumé de l'éditeur
The book provides an original treatment of machine learning (ML) using convex, robust and mixed integer optimization that leads to solutions to central ML problems at large scale that can be found in seconds/minutes, can be certified to be optimal in minutes/hours, and outperform classical heuristic approaches in out-of-sample experiments.
Structure of the book:
- Part I covers robust, sparse, nonlinear, holistic regression and extensions.
- Part II contains optimal classification and regression trees.
- Part III outlines prescriptive ML methods.
- Part IV shows the power of optimization over randomization in design of experiments, exceptional responders, stable regression and the bootstrap.
- Part V describes unsupervised methods in ML: optimal missing data imputation and interpretable clustering.
- Part VI develops matrix ML methods: sparse PCA, sparse inverse covariance estimation, factor analysis, matrix and tensor completion
- Part VII demonstrates how ML leads to interpretable optimization.
Philosophical principles of the book:
- Interpretability is materially important in the real world.
- Practical tractability not polynomial solvability leads to real world impact.
- NP-hardness is an opportunity not an obstacle.
- ML is inherently linked to optimization not probability theory.
- Data represent an objective reality; models only exist in our imagination.
- Optimization has a significant edge over randomization
- The ultimate objective in the real world is prescription, not prediction.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Dynamic Ideas
ISBN10 : 1-7337-8850-6
ISBN13 : 978-1-7337-8850-2
- The Optimization Lenses
- Robust Regression
- Sparse Regression
- Nonlinear Regression
- Holistic Regression
- Sparse and Robust Classification
- Classification and Regression Trees
- Optimal Classification Trees with Parallel Splits
- Optimal Classification Trees with Hyperplane Splits
- Optimal Regression Trees with Constant Predictions
- Optimal Regression Trees with Linear Predictions
- Optimal Trees and Neural Networks
- From Predictive to Prescriptive Analytics
- Optimal Prescriptive Trees
- Optimal Design of Experiments
- Identifying Exceptional Responders
- Stable Regression
- The Bootstrap
- Optimal Missing Data Imputation
- Interpretable Clustering
- Sparse Principal Component Analysis
- Factor Analysis
- Sparse Inverse Covariance Estimation
- Interpretable Matrix Completion
- Tensor Learning
- Interpretable Optimization
Les algorithmes d'apprentissage automatique actuels ont été développés il y a plusieurs décennies et n'ont vu que des modifications assez mineures depuis lors. Ainsi, ces algorithmes exploitent les possibilités d'optimisation disponibles à cette époque. Le problème est que, depuis lors, les outils d'optimisation (surtout en nombres entiers et avec des matrices semi-définies positives) ont fait d'énormes progrès : au lieu de n'utiliser que des heuristiques (qui délivrent rapidement des modèles de qualité très variable), ce livre propose des méthodes qui profitent des dernières avancées dans le domaine (des méthodes qui apportent des solutions optimales, impossibles à améliorer). Les pans actuels de l'intelligence artificielle sont couverts, des techniques d'apprentissage (régression, arbres, réseaux neuronaux) au partitionnement de données et aux scénarios d'utilisation antagoniste.
Ce parti pris n'est pas encore suivi par la communauté de l'intelligence artificielle au sens large, une bonne partie du contenu correspond au travail de recherche des deux auteurs et de leurs collaborateurs (même s'ils n'accaparent pas la longue liste de références, très diverse). En particulier, cela signifie qu'il n'existe pas encore d'implémentation répandue pour la plupart des algorithmes présentés.
Chaque technique est présentée d'abord en partant des principes fondamentaux, avec une explication brève des techniques (heuristiques) actuelles, mais aussi de leurs inconvénients (souvent, l'interprétabilité des modèles obtenus). Les auteurs mettent l'accent sur les principes, plutôt que sur les détails algorithmiques d'implémentation (même si les principaux sont expliqués). Chaque technique est étudiée de manière approfondie, avec des études de cas pour montrer leur apport par rapport aux heuristiques actuelles, mais aussi des études numériques sur des données synthétiques pour comparer la performance des algorithmes optimaux par rapport aux heuristiques courantes. Selon les cas, des algorithmes polynomiaux sont proposés, mais l'objectif est de présenter des algorithmes utiles en pratique, pas uniquement en théorie.
Il ne s'agit pas du tout d'un ouvrage de probabilités ou de statistiques, contrairement à la majorité de la littérature sur l'apprentissage : les auteurs adoptent principalement le point de vue de l'optimisation pour résoudre les problèmes d'apprentissage, ce qui donne un éclairage totalement différent. Ils adoptent un style très rigoureux, mais le texte reste lisible (il n'est pas encombré de théorèmes et résultats peu importants). Toutefois, pour bien profiter du contenu, une bonne base en apprentissage est requise ; par-dessus tout, de vraies compétences en optimisation (convexe, en nombres entiers, principalement) faciliteront la compréhension.
Le livre se prête aussi à une utilisation détournée, qui est celle d'un livre avancé sur l'optimisation. On peut ainsi l'utiliser comme une série de tutoriels de méthodes plus ou moins avancées pour résoudre des problèmes d'optimisation complexes.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Petite leçon de Python
Introduction pratique et orientée projet
Résumé de l'éditeur
Guide de référence pour démarrer rapidement sous Python, que l'on soit développeur débutant ou simplement concerné par l'innovation digitale.
Vous avez besoin de savoir utiliser Python rapidement mais vous voulez vous épargner une litanie d'informations théoriques inutiles ?
Petite leçon de Python, 2e édition est une introduction directe à l'essentiel de Python : les concepts généraux de la programmation dans ce langage, les fondamentaux, la résolution de problèmes. Dans une seconde partie, trois exemples de projets réels permettent de se projeter et de mettre en pratique ces apprentissages. Vous allez ainsi vous exercer à :
- utiliser la data visualisation pour réaliser des graphes et des tableaux ;
- construire et déployer une application web interactive ;
- créer un jeu vidéo simple.
Ce faisant, vous serez très vite capable de construire des programmes pratiques sous Python et de mettre au point des techniques de programmation avancées.
Véritable best-seller, Petite leçon de Python est LE guide de référence mondialement reconnu pour devenir rapidement opérationnel dans ce langage particulièrement accessible et performant qu'est Python.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Pearson
ISBN10 : 2-7440-6759-8
ISBN13 : 978-2-7440-6759-4
- Mise en route
- Variables et types de données simples
- Présentation des listes
- Utilisation des listes
- Instruction if
- Dictionnaires
- Saisie d'utilisateur et boucles while
- Fonctions
- Classes
- Fichiers et exceptions
- Tester le code
- Une fusée qui tire des balles
- Les aliens !
- Score
- Génération des données
- Téléchargement de données
- Utilisation des API
- Premiers pas avec Django
- Comptes d'utilisateur
- Peaufiner et déployer une application
- Installation et dépannage
- Éditeurs de texte et IDE
- Obtenir de l'aide
- Gestion de versions avec Git
Contrairement à ce qu'indique son titre, cet ouvrage ne présente pas Python à des programmeurs, mais bien la programmation à l'aide de Python à des personnes n'ayant aucune expérience en programmation, peu importe le langage, avec des prérequis extrêmement faibles. Contrairement à d'autres livres avec le même objectif, celui-ci accorde une grande importance à la pratique, avec des exercices proposés tout au long de l'ouvrage (accompagnés de leur correction en ligne) et trois projets complets (chacun développé en trois chapitres) : développement d'un jeu, d'une application Web et d'une visualisation de données, trois domaines dans lesquels Python excelle. La pédagogie mise en place fait partie des meilleures pratiques pour l'enseignement de la programmation.
Bien que destiné à un public de développeurs en devenir, l'auteur cherche à montrer par l'exemple les meilleures pratiques actuelles de développement en Python, notamment en ce qui concerne le paradigme orienté objet. Le contenu est très pragmatique et non dogmatique, bien adapté au public cible.
Pour les débutants, les messages d'erreur sont souvent cryptiques, c'est pour cela qu'une partie s'attelle à leur déchiffrage. On peut toutefois regretter que le chapitre sur les ressources en ligne pour obtenir de l'aide ne soit qu'une traduction du texte anglais, sans aucune adaptation au monde francophone.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Practical Optimization
Résumé de l'éditeur
In the intervening years since this book was published in 1981, the field of optimization has been exceptionally lively. This fertility has involved not only progress in theory, but also faster numerical algorithms and extensions into unexpected or previously unknown areas such as semidefinite programming. Despite these changes, many of the important principles and much of the intuition can be found in this Classics version of Practical Optimization.
This book
- provides model algorithms and pseudocode, useful tools for users who prefer to write their own code as well as for those who want to understand externally provided code;
- presents algorithms in a step-by-step format, revealing the overall structure of the underlying procedures and thereby allowing a high-level perspective on the fundamental differences; and
- contains a wealth of techniques and strategies that are well suited for optimization in the twenty-first century and particularly in the now-flourishing fields of data science, “big data,” and machine learning.
Practical Optimization is appropriate for advanced undergraduates, graduate students, and researchers interested in methods for solving optimization problems.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : SIAM
ISBN10 : 1-61197-559-X
ISBN13 : 978-1-6119-7559-8
- Introduction
- Fundamentals
- Optimality Conditions
- Unconstrained Methods
- Linear Constraints
- Nonlinear Constraints
- Modelling
- Practicalities
L'optimisation est un domaine qui a fortement évolué depuis les années 1980. Ce livre, écrit à cette période, ne présente donc pas les dernières avancées. Il se focalise sur les méthodes pour des fonctions continues (la plupart du temps), sans effectuer d'hypothèse de convexité. Il s'agit d'un livre qui parcourt les bases de l'optimisation numérique avec un point de vue assez différent de la littérature actuelle.
Les auteurs présentent une grande quantité de méthodes, en précisant leurs avantages et les cas particuliers où ces algorithmes auront tendance à mieux fonctionner. Ils tendent à présenter plus d'algorithmes que de théorie, tout en analysant la convergence des méthodes et en mettant l'accent sur la stabilité numérique (un point très peu étudié dans la littérature plus récente). L'explication de la méthode du simplexe est très différente de la majorité des auteurs, puisque ce livre repart des méthodes d'ensemble de contraintes actives.
Les prérequis sont extrêmement faibles. Il faut, certes, une habitude de travailler avec des mathématiques, mais les notions nécessaires en algèbre linéaire, en analyse numérique et en analyse multivairée sont expliquées. Par exemple, les auteurs commencent avec la manière qu'a un ordinateur de représenter des nombres et les conséquences que cela peut avoir sur un programme d'optimisation.
Globalement, l'ouvrage a très bien résisté au temps. Toutefois, on regrettera qu'il n'aborde presque pas les problèmes discrets ou non dérivables (deux domaines qui ont véritablement explosé dans les décennies postérieures, par exemple les méthodes de sous-gradient). L'approche duale est certes présentée, mais peu d'algorithmes l'exploitent. Étonnamment, le chapitre sur la mise en pratique des méthodes reste fortement d'actualité, avec des questions comme la vérification du sens des solutions ou le choix d'un critère de terminaison.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Introduction to Optimization and Hadamard Semidifferential Calculus
Résumé de l'éditeur
This second edition provides an enhanced exposition of the long-overlooked Hadamard semidifferential calculus, first introduced in the 1920s by mathematicians Jacques Hadamard and Maurice René Fréchet. Hadamard semidifferential calculus is possibly the largest family of nondifferentiable functions that retains all the features of classical differential calculus, including the chain rule, making it a natural framework for initiating a large audience of undergraduates and non-mathematicians into the world of nondifferentiable optimization.
Introduction to Optimization and Hadamard Semidifferential Calculus, Second Edition:
- builds upon its prior edition’s foundations in Hadamard semidifferential calculus, showcasing new material linked to convex analysis and nonsmooth optimization;
- presents a modern treatment of optimization and Hadamard semidifferential calculus while remaining at a level that is accessible to undergraduate students; and
- challenges students with exercises related to problems in such fields as engineering, mechanics, medicine, physics, and economics and supplies answers in Appendix B.
Students of mathematics, physics, engineering, economics, and other disciplines that demand a basic knowledge of mathematical analysis and linear algebra will find this a fitting primary or companion resource for their studies. This textbook has been designed and tested for a one-term course at the undergraduate level. In its full version, it is appropriate for a first-year graduate course and as a reference.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : SIAM
ISBN10 : 1-61197-595-6
ISBN13 : 978-1-61197-595-6
- Introduction
- Existence, Convexities, and Convexification
- Semidifferentiability, Differentiability, Continuity, and Convexities
- Optimality Conditions
- Differentiable and Semidifferentiable Constrained Optimization
Bon nombre de résultats en optimisation continue ont été obtenus à partir de la théorie classique de l'analyse mathématique, avec souvent des hypothèses très fortes comme la dérivabilité des fonctions. Pour s'en passer et élargir le spectre des applications, les théoriciens se sont emparés de théories plus récentes en analyse mathématique. Ce livre expose l'une de ces théories, celle de Hadamard, puis la spécialise aux cas utiles pour l'optimisation. L'ouvrage traite donc principalement de mathématiques assez fondamentales.
Toutes les preuves sont présentes dans l'ouvrage, peu de choses sont laissées au lecteur. Certaines sont mises en tant qu'exercices (qui abordent aussi des sujest plus pratiques), mais les corrections sont fournies en annexe. L'auteur fournit également une série de remarques historiques, pour positionner les théories les unes par rapport aux autres dans leur contexte mathématique historique.
Contrairement à ce que pourrait indiquer le titre, le livre s'arrête à fournir la théorie de base pour l'analyse d'algorithmes d'optimisation, il ne présente pas d'algorithme.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Bandit Algorithms
Résumé de l'éditeur
Decision-making in the face of uncertainty is a significant challenge in machine learning, and the multi-armed bandit model is a commonly used framework to address it. This comprehensive and rigorous introduction to the multi-armed bandit problem examines all the major settings, including stochastic, adversarial, and Bayesian frameworks. A focus on both mathematical intuition and carefully worked proofs makes this an excellent reference for established researchers and a helpful resource for graduate students in computer science, engineering, statistics, applied mathematics and economics. Linear bandits receive special attention as one of the most useful models in applications, while other chapters are dedicated to combinatorial bandits, ranking, non-stationary problems, Thompson sampling and pure exploration. The book ends with a peek into the world beyond bandits with an introduction to partial monitoring and learning in Markov decision processes.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Cambridge University Press
ISBN10 : 1-108-48682-7
ISBN13 : 978-1-108-48682-8
Bandits, Probability and Concentration
- Introduction
- Foundations of Probability
- Stochastic Processes and Markov Chains
- Stochastic Bandits
- Concentration of Measure
Stochastic Bandits with Finitely Many Arms
- The Explore-Then-Commit Algorithm
- The Upper Confidence Bound Algorithm
- The Upper Confidence Bound Algorithm: Asymptotic Optimality
- The Upper Confidence Bound Algorithm: Minimax Optimality
- The Upper Confidence Bound Algorithm: Bernoulli Noise
Adversarial Bandits with Finitely Many Arms
- The Exp3 Algorithm
- The Exp3-IX Algorithm
Lower Bounds for Bandits with Finitely Many Arms
- Lower Bounds: Basic Ideas
- Foundations of Information Theory
- Minimax Lower Bounds
- Instance-Dependent Lower Bounds
- High-Probability Lower Bounds
Contextual and Linear Bandits
- Contextual Bandits
- Stochastic Linear Bandits
- Confidence Bounds for Least Squares Estimators
- Optimal Design for Least Squares Estimators
- Stochastic Linear Bandits with Finitely Many Arms
- Stochastic Linear Bandits with Sparsity
- Minimax Lower Bounds for Stochastic Linear Bandits
- Asymptotic Lower Bounds for Stochastic Linear Bandits
Adversarial Linear Bandits
- Foundations of Convex Analysis
- Exp3 for Adversarial Linear Bandits
- Follow-the-regularised-Leader and Mirror Descent
- The Relation between Adversarial and Stochastic Linear Bandits
Other Topics
- Combinatorial Bandits
- Non-stationary Bandits
- Ranking
- Pure Exploration
- Foundations of Bayesian Learning
- Bayesian Bandits
- Thompson Sampling
Beyond Bandits
- Partial Monitoring
- Markov Decision Processes
Dans le vaste domaine de l'intelligence artificielle, on parle de plus en plus d'apprentissage par renforcement pour les situations où un système apprend à interagir avec son environnement (l'exemple typique étant la voiture autonome). Les problèmes de bandit sont une classe particulière d'apprentissage par renforcement, avec une simplification majeure (il n'y a plus d'état) qui permet une étude théorique extrêmement poussée.
Cet ouvrage se veut être une bible des algorithmes de bandit, surtout écrite pour découvrir le domaine : autant que possible, les algorithmes et les théorèmes sont expliqués de manière intuitive. Les auteurs proposent une grande famille d'algorithmes pour des situations très variées, mais n'oublient pas le côté pratique avec des exemples réalistes d'applications. Toutefois, le public cible a très clairement de bonnes bases en mathématiques, plus qu'en informatique.
Chaque chapitre se termine par une série d'exercices bien ficelés, même si on peut regretter qu'il n'y ait pas de correction. Les preuves sont présentes en nombre, mais sont toujours détaillées, pour faciliter la compréhension des compromis mis en place pour chaque algorithme. Les auteurs mettent un point d'orgue à expliciter les hypothèses, chapitre par chapitre.
Les premiers chapitres forment un résumé des probabilités du point de vue de la théorie de la mesure : l'exposé n'est pas forcément limpide (car succinct), mais permet de généraliser les probabilités aux cas nécessaires pour l'étude des bandits. Les chapitres sont tous très petits, avec un découpage qui semble parfois arbitraire.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
The Art of Feature Engineering
Essentials for Machine Learning
Résumé de l'éditeur
'Pablo Duboue is a true grandmaster of the art and science of feature engineering. His foundational contributions to the creation of IBM Watson were a critical component of its success. Now readers can benefit from his expertise. His book provides deep insights into to how to develop, assess, combine, and enhance machine learning features. Of particular interest to advanced practitioners is his discussion of feature engineering and deep learning; there is a pervasive myth in the industry that deep learning and big data have made feature engineering obsolete, but the book explains why that is often incorrect for real-world computing applications and explains the relationship between building effective features and deep neural network architectures. The book engages with countless other basic and advanced topics in the area of machine learning and feature engineering, making it a valuable resource for machine learning practitioners of all levels of experience.' J. William Murdock, IBM
When working with a data set, machine learning engineers might train a model but find that the results are not as good as they need. To get better results, they can try to improve the model or collect more data, but there is another avenue: feature engineering. The feature engineering process can help improve results by modifying the data’s features to better capture the nature of the problem. This process is partly an art and partly a palette of tricks and recipes. This practical guide to feature engineering is an essential addition to any data scientist’s or machine learning engineer’s toolbox, providing new ideas on how to improve the performance of a machine learning solution.
Beginning with the basic concepts and techniques of feature engineering, the text builds up to a unique cross-domain approach that spans data on graphs, texts, time series and images, with fully worked-out case studies. Key topics include binning, out-of-fold estimation, feature selection, dimensionality reduction and encoding variable-length data. The full source code for the case studies is available on a companion website as Python Jupyter notebooks.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Cambridge University Press
ISBN10 : 1-108-70938-9
ISBN13 : 978-1-108-70938-5
Fundamentals
- Introduction
- Features, Combined: Normalization, Discretization and Outliers
- Features, Expanded: Computable Features, Imputation and Kernels
- Features, Reduced: Feature Selection, Dimensionality Reduction and Embeddings
- Advanced Topics: Variable-Length Data and Automated Feature Engineering
Case Studies
- Graph Data
- Time stamped Data
- Textual Data
- Image Data
- Other Domains: Video, GIS and Preferences
Certains compétiteurs sur Kaggle disent que la grande différence entre les gagnants et les autres, ce ne sont pas les compétences dans le réglage des algorithmes d'apprentissage, mais bien dans la création de nouvelles variables, c'est-à-dire dans l'art de l'ingénierie des caractéristiques. C'est justement de ce sujet précis que traite cet ouvrage.
Le livre est en bonne partie construit sur des études de cas : elles constituent la deuxième partie, où les différentes techniques présentées dans la première sont mises en pratique et comparées. L'auteur ne cherche d'ailleurs pas qu'à y montrer ce qui fonctionne bien, car la plupart des essais, dans la pratique industrielle, ne donnent pas les résultats escomptés. Toutes ces études de cas partent d'une même utilisation, l'estimation de la population de villes, à partir de données différentes (tabulaires, textuelles, graphiques, etc.).
La première partie se focalise sur des manières génériques de traiter un jeu de données. Elle est orientée vers la méthodologie derrière le calcul de nouvelles caractéristiques plutôt que sur le code pour réaliser les opérations mathématiques. La seconde moitié de l'ouvrage présente aussi des méthodes moins génériques, mais plutôt conçues à partir de connaissances fines du domaine d'application.
Bon nombre de techniques présentées sont véritablement à la pointe de la recherche scientifique dans le domaine. L'auteur a d'ailleurs inclus des centaines de références vers la littérature scientifique (dont les méthodes ne sont pas toujours expliquées en détail dans le livre). On peut cependant regretter que les techniques proposées ne soient pas comparées d'un point de vue mathématique, mais uniquement numérique, d'une manière qui n'est donc pas forcément scientifique (mais ce n'est pas l'objectif de l'ouvrage).
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Dynamics of Multibody Systems
Résumé de l'éditeur
This fully revised fifth edition provides comprehensive coverage of flexible multibody system dynamics. Including an entirely new chapter on the integration of geometry, durability analysis, and design, it offers clear explanations of spatial kinematics, rigid body dynamics, and flexible body dynamics, and uniquely covers the basic formulations used by the industry for analysis, design, and performance evaluation. Included are methods for formulating dynamic equations, the floating frame of reference formulation used in small deformation analysis, and the absolute nodal coordinate formulation used in large deformation analysis, as well as coverage of industry durability investigations. Illustrated with a wealth of examples and practical applications throughout, it is the ideal text for single-semester graduate courses on multibody dynamics taken in departments of aerospace and mechanical engineering, and for researchers and practicing engineers working on a wide variety of flexible multibody systems.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Cambridge University Press
ISBN10 : 1-108-48564-2
ISBN13 : 978-1-108-48564-7
- Introduction
- Reference Kinematics
- Analytical Techniques
- Mechanics of Deformable Bodies
- Floating Frame of Reference Formulation
- Finite-Element Formulation
- The Large Deformation Problem
- Concepts and Essential Details
- Integration of Geometry, Durability Analysis, and Design
Cet ouvrage propose une introduction assez succincte aux problèmes de mécanique avec plusieurs corps, notamment dans le cas où ceux-ci sont déformables. Il part des principes mécaniques de base et explique les techniques courantes de modélisation des systèmes mécaniques (notamment les travaux virtuels), qu'il s'agisse de points matériels ou de corps, avant de généraliser au cas de corps déformables. Bon nombre d'applications simples sont traitées dans les exemples, notamment en robotique.
Chaque chapitre est accompagné d'une série d'exercices de mise en pratique, mais sans correction. Toutefois, l'auteur formule les exemples de la même manière que les exercices ; ceux-ci incluent des corrections et explications complètes. Également, les preuves sont écrites au complet, sans laisser une grande marge d'interprétation au lecteur.
Les principes de base pour l'implémentation des méthodes numériques actuelles sont bien présents, y compris avec du pseudocode. Ces méthodes se focalisent sur une résolution précise des problèmes numériques, plutôt qu'une résolution rapide. Les explications sont complètes et se basent assez peu sur des connaissances préalables du lecteur.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Network Traffic Engineering
Stochastic Models and Applications
Résumé de l'éditeur
A comprehensive guide to the concepts and applications of queuing theory and traffic theory
Network Traffic Engineering: Models and Applications provides an advanced level queuing theory guide for students with a strong mathematical background who are interested in analytic modeling and performance assessment of communication networks.
The text begins with the basics of queueing theory before moving on to more advanced levels. The topics covered in the book are derived from the most cutting-edge research, project development, teaching activity, and discussions on the subject. They include applications of queuing and traffic theory in:
- LTE networks
- Wi-Fi networks
- Ad-hoc networks
- Automated vehicles
- Congestion control on the Internet
The distinguished author seeks to show how insight into practical and real-world problems can be gained by means of quantitative modeling. Perfect for graduate students of computer engineering, computer science, telecommunication engineering, and electrical engineering, Network Traffic Engineering offers a supremely practical approach to a rapidly developing field of study and industry.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Wiley
ISBN10 : 1-119-63243-9
ISBN13 : 978-1-119-63243-6
- Introduction
- Service Systems and Queues
- Stochastic Models for Network Traffic
- Single-Server Queues
- Multi-Server Queues
- Priorities and Scheduling
- Queueing Networks
- Bounds and Approximations
- Multiple Access
- Congestion Control
- Quality-of-Service Guarantees
Contrairement à ce que l'on pourrait attendre, cet ouvrage traite presque uniquement du sujet des files d'attente. À l'opposé de trop de livres et de cours sur le sujet, cependant, il ne s'intéresse pas tellement à la théorie en elle-même, mais plutôt à ses applications, notamment dans le domaine de l'évaluation de la performance de réseaux de télécommunications. On retrouve donc le traitement complet et très mathématique du sujet des files d'attente, mais aussi la mise en pratique sur des questions d'actualité, comme les réseaux Wi-Fi, la 5G ou les diverses implémentations de TCP. Ces développements aident à mieux comprendre les compromis effectués lors du déploiement de ces technologies (par exemple, pourquoi certaines variantes de TCP fonctionnent mieux entre serveurs d'un même centre informatique).
Pour bien profiter de ce contenu, il vaut mieux donc être bien équipé d'un point de vue mathématique, notamment sur les probabilités, les processus stochastiques et les chaînes de Markov. Quant aux exemples, le lecteur a intérêt à avoir de sérieuses bases en télécommunications (fonctionnement de TCP, accès à la couche physique, etc.). Des notions de programmation ne pourraient pas faire de mal, étant donné que certaines parties sont formalisées à l'aide d'algorithmes et de code, tandis que l'implémentation en MATLAB de certains exemples est proposée.
L'ouvrage est rédigé de manière très progressive, en présentant d'abord les bases théoriques des files d'attente, avant de les appliquer. Chaque chapitre contient une série d'exercices (malheureusement pas corrigés) pour vérifier sa compréhension des éléments clés. De même, l'auteur prend soin de résumer les idées essentielles de chaque chapitre dans une section prévue à cet effet. Les notations sont toujours bien expliquées et explicitées.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Introduction to the Finite Element Method and Implementation with MATLAB®
Résumé de l'éditeur
Connecting theory with numerical techniques using MATLAB®, this practical textbook equips students with the tools required to solve finite element problems. This hands-on guide covers a wide range of engineering problems through nine well-structured chapters including solid mechanics, heat transfer and fluid dynamics; equilibrium, steady state and transient; and 1-D, 2-D and 3-D problems. Engineering problems are discussed using case study examples, which are solved using a systematic approach, both by examining the steps manually and by implementing a complete MATLAB®code. This topical coverage is supplemented by discourse on meshing with a detailed explanation and implementation of 2-D meshing algorithms. Introducing theory and numerical techniques alongside comprehensive examples this text increases engagement and provides students with the confidence needed to implement their own computer codes to solve given problems.
Drawing upon years of practical experience and using numerous examples and illustrative applications, Gang Li provides:
- 15 engineering problems on elasticity, heat transfer, fluid flow, and mesh creation, fully worked and described in step-by-step detail
- over 110 end-of-chapter problems for students to practice and build confidence
- M-files for all numerical examples and exercise problems, which can be accessed and downloaded from the textbook's online resource page.
Dr. Gang Li is a professor and D. W. Reynolds Emerging Scholar of Mechanical Engineering at Clemson University. He was an awardee of the National Science Foundation Early Career Award. He is an associate editor of the Journal of Computational Electronics and serves on the ASME Committee on Computing in Applied Mechanics. Dr. Li's scholarly articles on computational mechanics and finite element method frequently appear in leading journals.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Cambridge University Press
ISBN10 : 1-108-47168-4
ISBN13 : 978-1-108-47168-8
- Introduction
- Mathematical Preliminaries
- Numerical Analysis Methods
- General Procedures of FEA for Linear Static Analysis: 1-D Problems
- FEA for Multi-Dimensional Scalar Field Problems
- Mesh Generation
- FEA for Multi-Dimensional Vector Field Problems
- Structural Elements
- FEA for Linear Time-Dependent Analysis
La méthode des éléments finis est parfois réputée pour être très compliquée à apprendre et à utiliser. Ce livre se focalise sur l'apprentissage des fondamentaux de la technique et sur son implémentation. Il se base sur des applications typiques en ingénierie pour présenter le procédé étape par étape, en commençant avec une modélisation physique pour terminer avec l'extraction d'une solution pour toutes les variables d'intérêt du problème : on ne compte que très peu de contenu abstrait. Ainsi, l'auteur montre que les éléments finis ne sont pas si compliqués à comprendre ou à implémenter : à aucun moment, il ne montre l'utilisation de logiciels existants (ils sont simplement mentionnés). La pédagogie de l'ouvrage est exceptionnelle, notamment avec un rappel des bases mathématiques nécessaires pour bien comprendre d'où vient la formulation utilisée avec des éléments finis. Ces bases sont présentées en lien, autant que possible, avec leur interprétation physique (notamment, pour les valeurs propres ou le nombre de conditionnement).
Le public cible a très clairement de bonnes bases en ingénierie, notamment en génie mécanique. Un lecteur sans notion de résistance des matériaux ou de conduction de la chaleur aura du mal à suivre les exemples. Néanmoins, celui qui en a une connaissance basique profitera d'un exposé qui repart de ce socle et reconstruit toute la méthode des éléments finis, sans omettre une seule étape de calcul, même fastidieuse.
Les aspects algorithmiques sont mis en avant, pour faciliter l'implémentation de codes d'éléments finis basiques. On peut toutefois regretter que le sujet des conditions de convergence ne soit pas véritablement abordé.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Rigid Body Kinematics
Résumé de l'éditeur
Master the conceptual, theoretical and practical aspects of kinematics with this exhaustive text, which provides a rigorous analysis and description of general motion in mechanical systems, with numerous examples from spinning tops to wheel ground-vehicles. Over 400 figures illustrate the main ideas and provide a geometrical interpretation and a deeper understanding of concepts, and exercises and problems throughout the text provide additional hands-on practice. Ideal for students taking courses on rigid body kinematics, and an invaluable reference for researchers.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Cambridge University Press
ISBN10 : 1-108-78231-0
ISBN13 : 978-1-108-78231-9
- Space and Time
- Point Kinematics
- Rigid Body Kinematics
- Introduction to Kinematics of Multibody Systems
La cinématique est l'un des sujets principaux des enseignements de physique dans le supérieur. Ce livre propose de le découvrir, en suivant une approche rigoureuse mais intuitive. Des bases mathématiques sont nécessaires, mais les auteurs préfèrent toujours les explications géométriques (d'ailleurs, l'ouvrage est richement illustré). Les exemples détaillés proviennent, pour la plupart, de la vie courante ou d'applications techniques actuelles (notamment en robotique). Les preuves sont écrites in extenso, sans laisser au lecteur de marge d'interprétation.
Chaque chapitre est complété par une grande série de problèmes supplémentaires, tant sous la forme de quiz que de problèmes plus ouverts. Toujours, les solutions sont proposées : pour les quiz, elles incluent les résultats sous forme analytique, afin de vérifier si, outre le résultat final, le raisonnement est bien correct.
Le livre est succinct et ne traite que de cinématique, afin de correspondre à un public aussi large que possible. Un résumé des notations aurait été le bienvenu.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Modern C++ Programming Cookbook
Master C++ core language and standard library features, with over 100 recipes, updated to C++20
Résumé de l'éditeur
C++ has come a long way to be one of the most widely used general-purpose languages that is fast, efficient, and high-performance at its core.
The updated second edition of Modern C++ Programming Cookbook addresses the latest features of C++20, such as modules, concepts, coroutines, and the many additions to the standard library, including ranges and text formatting. The book is organized in the form of practical recipes covering a wide range of problems faced by modern developers.
The book also delves into the details of all the core concepts in modern C++ programming, such as functions and classes, iterators and algorithms, streams and the file system, threading and concurrency, smart pointers and move semantics, and many others. It goes into the performance aspects of programming in depth, teaching developers how to write fast and lean code with the help of best practices.
Furthermore, the book explores useful patterns and delves into the implementation of many idioms, including pimpl, named parameter, and attorney-client, teaching techniques such as avoiding repetition with the factory pattern. There is also a chapter dedicated to unit testing, where you are introduced to three of the most widely used libraries for C++: Boost.Test, Google Test, and Catch2.
By the end of the book, you will be able to effectively leverage the features and techniques of C++11/14/17/20 programming to enhance the performance, scalability, and efficiency of your applications.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Packt
ISBN10 : 1-80020-898-7
ISBN13 : 978-1-80020-898-8
Learning Modern Core Language Features
- Using auto whenever possible
- Creating type aliases and alias templates
- Understanding uniform initialization
- Understanding the various forms of non-static member initialization
- Controlling and querying object alignment
- Using scoped enumerations
- Using override and final for virtual methods
- Using range-based for loops to iterate on a range
- Enabling range-based for loops for custom types
- Using explicit constructors and conversion operators to avoid implicit conversion
- Using unnamed namespaces instead of static globals
- Using inline namespaces for symbol versioning
- Using structured bindings to handle multi-return values
- Simplifying code with class template argument deduction
Working with Numbers and Strings
- Converting between numeric and string types
- Limits and other properties of numeric types
- Generating pseudo-random numbers
- Initializing all bits of internal state of a pseudo-random number generator
- Creating cooked user-defined literals
- Creating raw user-defined literals
- Using raw string literals to avoid escaping characters
- Creating a library of string helpers
- Verifying the format of a string using regular expressions
- Parsing the content of a string using regular expressions
- Replacing the content of a string using regular expressions
- Using string_view instead of constant string references
- Formatting text with std::format
- Using std::format with user-defined types
Exploring Functions
- Defaulted and deleted functions
- Using lambdas with standard algorithms
- Using generic and template lambdas
- Writing a recursive lambda
- Writing a function template with a variable number of arguments
- Using fold expressions to simplify variadic function templates
- Implementing the higher-order functions map and fold
- Composing functions into a higher-order function
- Uniformly invoking anything callable
Preprocessing and Compilation
- Conditionally compiling your source code
- Using the indirection pattern for preprocessor stringification and concatenation
- Performing compile-time assertion checks with static_assert
- Conditionally compiling classes and functions with enable_if
- Selecting branches at compile time with constexpr if
- Providing metadata to the compiler with attributes
Standard Library Containers, Algorithms, and Iterators
- Using vector as a default container
- Using bitset for fixed-size sequences of bits
- Using vector<bool> for variable-size sequences of bits
- Using the bit manipulation utilities
- Finding elements in a range
- Sorting a range
- Initializing a range
- Using set operations on a range
- Using iterators to insert new elements into a container
- Writing your own random-access iterator
- Container access with non-member functions
General-Purpose Utilities
- Expressing time intervals with chrono::duration
- Working with calendars
- Converting times between time zones
- Measuring function execution time with a standard clock
- Generating hash values for custom types
- Using std::any to store any value
- Using std::optional to store optional values
- Using std::variant as a type-safe union
- Visiting an std::variant
- Using std::span for contiguous sequences of objects
- Registering a function to be called when a program exits normally
- Using type traits to query properties of types
- Writing your own type traits
- Using std::conditional to choose between types
Working with Files and Streams
- Reading and writing raw data from/to binary files
- Reading and writing objects from/to binary files
- Using localized settings for streams
- Using I/O manipulators to control the output of a stream
- Using monetary I/O manipulators
- Using time I/O manipulators
- Working with filesystem paths
- Creating, copying, and deleting files and directories
- Removing content from a file
- Checking the properties of an existing file or directory
- Enumerating the content of a directory
- Finding a file
Leveraging Threading and Concurrency
- Working with threads
- Synchronizing access to shared data with mutexes and locks
- Avoiding using recursive mutexes
- Handling exceptions from thread functions
- Sending notifications between threads
- Using promises and futures to return values from threads
- Executing functions asynchronously
- Using atomic types
- Implementing parallel map and fold with threads
- Implementing parallel map and fold with tasks
- Implementing parallel map and fold with standard parallel algorithms
- Using joinable threads and cancellation mechanisms
- Using thread synchronization mechanisms
Robustness and Performance
- Using exceptions for error handling
- Using noexcept for functions that do not throw exceptions
- Ensuring constant correctness for a program
- Creating compile-time constant expressions
- Creating immediate functions
- Performing correct type casts
- Using unique_ptr to uniquely own a memory resource
- Using shared_ptr to share a memory resource
- Implementing move semantics
- Consistent comparison with the operator >=>
Implementing Patterns and Idioms
- Avoiding repetitive if...else statements in factory patterns
- Implementing the pimpl idiom
- Implementing the named parameter idiom
- Separating interfaces and implementations with the non-virtual interface idiom
- Handling friendship with the attorney-client idiom
- Static polymorphism with the curiously recurring template pattern
- Implementing a thread-safe singleton
Exploring Testing Frameworks
- Getting started with Boost.Test
- Writing and invoking tests with Boost.Test
- Asserting with Boost.Test
- Using fixtures in Boost.Test
- Controlling outputs with Boost.Test
- Getting started with Google Test
- Writing and invoking tests with Google Test
- Asserting with Google Test
- Using test fixtures with Google Test
- Controlling output with Google Test
- Getting started with Catch2
- Writing and invoking tests with Catch2
- Asserting with Catch2
- Controlling output with Catch2
C++ 20 Core Features
- Working with modules
- Understanding module partitions
- Specifying requirements on template arguments with concepts
- Using requires expressions and clauses
- Iterating over collections with the ranges library
- Creating your own range view
- Creating a coroutine task type for asynchronous computations
- Creating a coroutine generator type for sequences of values
Le langage de programmation C++ n'est pas réputé pour sa facilité d'apprentissage ou d'écriture de code, mais C++ 11 a véritablement changé la situation et donné naissance au mouvement du C++ moderne. Ce livre propose d'étudier une série de sujets de C++ moderne, afin d'améliorer la qualité de son code en profitant des dernières fonctionnalités. L'ouvrage s'oriente vers les meilleures pratiques du C++ moderne. Cette deuxième édition est par exemple entièrement à jour pour C++ 20 (même si la norme n'était pas encore sortie au moment de la rédaction).
L'auteur présuppose une bonne connaissance du langage et de ses fondamentaux, mais pas forcément de C++ moderne, c'est là l'intérêt. Il analyse, souvent en grande profondeur, les nouveautés apparues entre C++ 11 et C++ 20, grâce à l'utilisation d'exemples complets. L'exposé est rarement théorique, sauf pour détailler quelques finesses. Notamment, puisque tout le monde ne peut pas encore utiliser les dernières versions du langage pour diverses raisons, l'auteur indique toujours quand telle ou telle fonctionnalité a été ajoutée au langage.
La structure globale du livre est assez classique, avec de grands thèmes à aborder, mais chaque section est structurée sous la forme d'une recette, avec différentes sous-sections fournissant des niveaux de détail différents. On pourrait se limiter à la première sous-section pour utiliser le livre comme référence de tous les jours, avec la syntaxe et un cas d'utilisation potentiel.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Conception d'algorithmes
150 exercices corrigés
Résumé de l'éditeur
La conception des algorithmes : une science !
L'algorithmique est l'art et la science de concevoir des algorithmes corrects et efficaces. Pour beaucoup d'informaticiens, c'est l'aspect artistique qui prédomine : on cherche l'idée lumineuse, la structure cachée, la réponse astucieuse. Mais la conception des algorithmes est d'abord une science dont il faut posséder les bases et les techniques avant d'exprimer sa créativité.
Ce livre invite le lecteur à une approche rigoureuse de la construction d'algorithmes. Il explique comment la même idée peut se retrouver dans plusieurs algorithmes correspondant à des problèmes différents. Il donne les outils pour analyser rationnellement un problème, le classer dans une famille de méthodes et produire une solution exacte.
Un manuel de référence sur la construction raisonnée des algorithmes
Dans chaque chapitre de ce livre, les bases théoriques et techniques sont rappelées et illustrées par des exemples. On y trouve ensuite un grand nombre d'exercices, accompagnés d'une correction minutieuse et complète. De la sorte, on y voit comment une démarche rationnelle permet d'atteindre une solution, exacte par construction, à travers une grande variété de cas.
Après des rappels sur le raisonnement, les structures de données et la complexité, le livre parcourt les grandes méthodes de construction d'algorithmes : invariants, récursivité, essais successifs, méthodes PSEP, algorithmes gloutons, diviser pour régner, programmation dynamique. Au total, près de 150 exemples d'algorithmes sont ainsi analysés et construits rigoureusement.
Cet ouvrage, pour sa troisième édition, a été entièrement revu et corrigé. Nombre d'exercices ont été remaniés, certains assez largement, en visant une meilleure gradation des difficultés et une argumentation plus complète.
À qui s'adresse ce livre ?
- Aux étudiants et enseignants en science informatique
- Aux ingénieurs, enseignants-chercheurs, informaticiens et industriels
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Eyrolles
ISBN10 : 2-416-00103-5
ISBN13 : 978-2-416-00103-1
- Mathématiques et informatiques : notions utiles
- Complexité d'un algorithme
- Spécification, invariants, itération
- Diminuer pour résoudre, récursivité
- Essais successifs
- PSEP
- Algorithmes gloutons
- Diviser pour régner
- Programmation dynamique
Vaste sujet qu'est la conception d'algorithmes. Peu de gens maîtrisent réellement ce domaine de l'informatique, le prenant pour mystérieux ou obscur. Cet ouvrage offre un tour d'horizon exhaustif des techniques de conception et abreuve le lecteur d'exemples en tout genre, justement pour donner l'habitude de la pensée algorithmique. Les auteurs suivent un schéma commun pour chaque technique présentée : une introduction, un premier exemple détaillé en profondeur, un résumé de la technique (les points essentiels à mettre en œuvre et les conditions d'application) sous la forme d'un patron de conception d'algorithme, puis une série d'exercices (parfois plus de cent pages pour une méthode, corrections comprises !). Cette manière de procéder explicite la manière d'arriver, par un raisonnement rationnel plutôt qu'intuitif, à une solution efficace (sans oublier d'indiquer où la créativité a droit de cité). Les auteurs mettent en avant la rigueur avec laquelle ils ont rédigé le texte — il faut avouer que ce n'étaient pas des paroles en l'air. Cette troisième édition ne dénote pas par rapport à la précédente.
L'ouvrage est principalement constitué d'exercices. Leurs énoncés sont souvent détaillés, de telle sorte qu'on comprenne bien là où les auteurs veulent mener sans devoir regarder la solution. Une manière très efficace d'utiliser le livre est ainsi de réaliser les exercices comme ils sont proposés, en ne vérifiant les solutions qu'à la fin de chaque question. Les exercices proposés sont relativement variés : on n'a pas droit à une pléthore de graphes et quelques autres pour faire bonne figure, mais un mélange plus varié, avec par exemple des jeux. Autant le texte principal n'a pas fortement évolué depuis la deuxième édition, les solutions ont été retravaillées, pour les rendre plus explicites et plus faciles à comprendre.
Toutefois, l'ouvrage n'est pas le plus abordable. Ce n'est pas tellement dû à ses prérequis — les auteurs s'attendent entre autres à un bon bagage en structures de données et en mathématiques —, mais plutôt au niveau de formalisme mathématique utilisé. Ils démontrent, par exemple, que les schémas de preuves habituels sont corrects ; autant dire que chaque algorithme est donné avec son invariant de boucle. Les preuves données dans les corrections sont détaillées, chaque étape du raisonnement étant minutieusement abordée (les auteurs ne sont pas des adeptes du « laissé au lecteur »). Ceci restreint le public ciblé, qui doit avoir une certaine ouverture d'esprit à la beauté mathématique ; inutile cependant d'avoir un parcours mathématique pur pour tirer bénéfice du livre.
Pour ceux qui disposent déjà d'une édition précédente de l'ouvrage, il n'est nul besoin d'acheter la nouvelle. Il n'y a pas eu de changement cosmétique de la mise en page ou en profondeur dans l'approche des auteurs.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Apprentissage artificiel
Concepts et algorithmes : de Bayes et Hume au Deep Learning
Résumé de l'éditeur
Les programmes d'intelligence artificielle sont aujourd'hui capables de reconnaître des commandes vocales, d'analyser automatiquement des photos satellites, d'assister des experts pour prendre des décisions dans des environnements complexes et évolutifs (analyse de marchés financiers, diagnostics médicaux...), de fouiller d'immenses bases de données hétérogènes, telles les innombrables pages du Web...
Pour réaliser ces tâches, ils sont dotés de modules d'apprentissage leur permettant d'adapter leur comportement à des situations jamais rencontrées, ou d'extraire des lois à partir de bases de données d'exemples. Ce livre présente les concepts qui sous-tendent l'apprentissage artificiel, les algorithmes qui en découlent et certaines de leurs applications. Son objectif est de décrire un ensemble d'algorithmes utiles en tentant d'établir un cadre théorique pour l'ensemble des techniques regroupées sous ce terme « d'apprentissage artificiel ». La quatrième édition de ce livre a été augmentée et complètement réorganisée pour s'adapter aux évolutions très significatives de l'apprentissage artificiel ces dernières années. Une large place y est accordée aux techniques d'apprentissage profond et à de nouvelles applications, incluant le traitement de flux de données.
A qui s'adresse ce livre ?
Ce livre s'adresse tant aux décideurs et aux ingénieurs qui souhaitent mettre au point des applications qu'aux étudiants de niveau Master 1 et 2 et en école d'ingénieurs, qui souhaitent un ouvrage de référence sur ce domaine clé de l'intelligence artificielle.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Édition : Eyrolles
ISBN10 : 2-416-00104-3
ISBN13 : 978-2-416-00104-8
- Des machines apprenantes !
- L'induction exploitant la structure de l'espace des hypothèses
- L'induction par optimisation d'un critère inductif
- L'induction par comparaison à des exemples (et par collaboration)
- L'apprentissage descriptif
- Apprentissage en environnement et non stationnaire
- Aspects pratiques et suppléments
- Annexes et bibliographie
À l'achat, ce livre se dénote par son poids, son nombre de pages. Que peut-il donc contenir de plus que la concurrence ? Le lecteur intéressé regardera ensuite la table des matières et verra que les sujets abordés sont plus étendus : les auteurs ne se focalisent pas sur l'apprentissage automatique, mais visent plus large, toutes les techniques qui permettent à un ordinateur d'extraire des connaissances depuis un jeu de données. C'est là le grand avantage de cet ouvrage, il cherche à donner une vue d'ensemble aussi diversifiée que possible sur un domaine d'étude loin d'être jeune. À la lecture, ce pressentiment se confirme : c'est complet, si ce n'est exhaustif ; c'est une référence (et le texte est prévu comme tel : aucun ordre n'est imposé sur la lecture des chapitres).
La rédaction diffère également de la concurrence, le point de vue adopté étant plus basé sur la théorie que la pratique (bien que les auteurs abordent le cycle de vie d'un projet de science des données). Les titres des chapitres ne révèlent pleinement leur cohérence qu'à la lecture. C'est là un parti pris : plus de théorie que de pratique. Cette structuration mène également à des points plus étonnants, comme le fait que la question de l'évaluation d'un apprentissage est traitée d'abord pour l'apprentissage non supervisé, puis (bien) après pour l'apprentissage supervisé plus classique. Également, le texte fourmille de références vers des articles plus académiques encore, pour creuser plus avant si le cœur vous en dit.
Un point négatif (par rapport au public visé : « décideurs et […] ingénieurs […, ainsi] qu'aux étudiants de niveau Master 1 et 2 et en école d'ingénieurs ») est justement le côté théorique de toutes choses, le formalisme mathématique poussé à un très bon niveau. Les auteurs se veulent formels, et ce, dès l'introduction. Cela rend malheureusement l'ouvrage assez peu accessible, voire complètement imperméable pour les allergiques des mathématiques. Pourtant, lors de la majorité des chapitres, on se rend compte de l'effort fourni pour éviter l'abus d'anglicismes (moins pour le nouveau contenu, malheureusement). Le sous-titre présente le mot clé « deep learning », mais celui-ci n'est pas glorifié, comme d'autres ouvrages du domaine.
Cette quatrième édition est augmentée, avec quatre chapitres entièrement nouveaux, dont l'un très pratique sur la conduite de projet. Ce nouveau contenu permet d'aborder de nouvelles pistes de recherche à la pointe du domaine (apprentissage semi-supervisé ou avec peu d'exemples). Comme un bon vin, on peut dire que le livre bonifie avec les éditions.
Par conséquent, l'ouvrage semble plutôt prédestiné à ceux qui veulent une compréhension profonde de la théorie derrière l'apprentissage, de ses liens avec les algorithmes. Il pèche sur les questions plus pratiques. Il n'y a donc pas beaucoup de souci à se faire pour la péremption des informations, qui resteront valables des années, si ce n'est dizaines d'années pour la plupart. Le public visé est plutôt mathématicien ou chercheur dans le domaine : il faut avoir déjà des connaissances préalables en apprentissage pour tirer un maximum du livre.
Avez-vous lu ce livre ? Qu'en pensez-vous ? Commentez
Professional C++
Résumé de l'éditeur
Embrace C++ depth and complexity to discover just how much it can do
C++ is notoriously difficult to master, but its wide-ranging capabilities have made it the most common language for gaming and commercial software applications. Even experienced users are typically unfamiliar with many advanced features, but the release of C++17 presents the perfect opportunity to explore the language's full capabilities. This new fourth edition of Professional C++ provides a code-intensive, solutions-oriented guide to everything C++ has to offer, including the newest tools and features in the latest release. Packed with practical instructions geared toward real-world programming, this book is the programmer's ideal opportunity to dig deeper into C++.
Professional C++:
- Demonstrates how to think in C++ in order to maximize the language's far-reaching capabilities and develop effective solutions
- Explains poorly understood elements, warns against pitfalls, and shares tips, tricks, and workarounds for efficiency and performance
- Presents a variety of challenging, real-world program segments versatile enough to plug into any project
- Highlights the new features of C++17 including structured bindings, nested namespaces, constexpr if, and much more
- Features in-depth discussions of new C++17 Standard Library features, such as string_view, optional, parallel algorithms, the file system API, and more
Wrox Professional guides are written by working programmers to meet the real-world needs of programmers, developers, and IT professionals. Focused and relevant, they address the issues technology professionals face every day. They provide examples, practical solutions, and expert education in new technologies, all designed to help programmers do a better job.
Édition : Wrox
ISBN10 : 1-119-69540-6
ISBN13 : 978-1-119-69540-0
Introduction to Professional C++
- A Crash Course In C++ And The Standard Library
- Working With Strings And String Views
- Coding With Style
Professional C++ Software Design
- Designing Professional C++ Programs
- Designing With Objects
- Designing For Reuse
C++ Coding the Professional Way
- Memory Management
- Gaining Proficiency With Classes And Objects
- Mastering Classes and Objects
- Discovering Inheritance Techniques
- Odds and Ends
- Writing Generic Code With Templates
- Demystifying C++ I/O
- Handling Errors
- Overloading C++ Operators
- Overview of The C++ Standard Library
- Understanding Iterators and The Ranges Library
- Standard Library Containers
- Function Pointers, Function Objects, And Lambda Expressions
- Mastering Standard Library Algorithms
- String Localization and Regular Expressions
- Date and Time Utilities
- Random Number Facilities
- Additional Library Utilities
Mastering Advanced Features of C++
- Customizing and Extending The Standard Library
- Advanced Templates
- Multithreaded Programming With C++
C++ Software Engineering
- Maximizing Software Engineering Methods
- Writing Efficient C++
- Becoming Adept at Testing
- Conquering Debugging
- Incorporating Design Techniques and Frameworks
- Applying Design Patterns
- Developing Cross-Platform and Crosslanguage Applications
Appendices
- C++ Interviews
- Annotated Bibliography
- Standard Library Header Files
- Introduction to UML
Le C++ est bien souvent vu comme un langage à la complexité insurmontable, affublé d'une syntaxe au moins autant imbuvable. Bon nombre de ces défauts ont été corrigés depuis la version 2011 du langage, à condition d'apprendre à utiliser les nouvelles fonctionnalités. Cet ouvrage propose une manière d'apprendre le C++ en partant des meilleures pratiques actuelles pour le langage, c'est-à-dire pour C++17 et C++20.
Par exemple, autant que possible, le code est écrit dans des modules, fonctionnalité arrivée avec C++20… et pas encore implémentée dans les dernières versions des compilateurs majeurs (à moins d'activer les fonctionnalités expérimentales). De même, la génération de chaînes de caractères se fait avec std::format, qui n'est pas encore disponible à grande échelle. Toutefois, l'auteur présente des manières de se passer de ces avancées du langage. Tous les sections et paragraphes qui se servent de C++20 sont indiqués clairement.
Les prérequis ne sont pas très élevés, puisque l'auteur commence par un cours express de C++ avec la STL, en supposant la connaissance de la programmation impérative. Les notions d'orientation objet sont également vues de zéro.
Bien que tourné vers la modernité, l'ouvrage n'oublie pas que C++ est présent depuis les années 1980 et que le lecteur devra probablement, à un moment ou à un autre, toucher à du code plus ancien. C'est pourquoi les anciennes manières de pratiquer sont décrites, afin de bien les comprendre (mais aussi leurs limitations). Dans le même esprit pragmatique, la plupart du code montré l'est dans une situation réaliste.
Puisque la pratique est (malheureusement ?) répandue dans l'industrie, l'auteur a préparé quelques sections sur la manière de se préparer à des entretiens techniques en C++ dans le cadre d'un recrutement, en plus des exercices de fin de chapitre (avec les corrections en ligne).
Les réseaux 5G
Architecture système, radio et cœur, coexistance 4G, mise en œuvre opérationnelle
Résumé de l'éditeur
Cet ouvrage a pour objectif de rendre accessible, progressivement, les spécifications techniques qui constituent le socle de la 5G. Il détaille la Release-15 du standard 3GPP ainsi que les orientations futures (Release-16, Release-17). Il s'ouvre sur les interviews d'acteurs majeurs du monde des télécommunications (constructeurs, opérateurs et utilisateurs), qui partagent leur vision quant à l'introduction de la 5G, ses atouts et complexités. Sont décrits ensuite les principaux cas d'usage de la 5G ainsi que leurs applications possibles.
L'eMBB est le principal objectif des premiers déploiements 5G des opérateurs, tandis qu'URLLC ouvre les réseaux mobiles à l'industrie 4.0 (transports autonomes, santé ou robotique). Enfin, mMTC s'appuie sur les modernisations des standards LTE-M et NB-IoT pour répondre aux besoins de l'IoT massif, ces technologies ayant évolué pour s'insérer dans le système 5G avec le niveau de performance attendu.
Au-delà de ces applications, cet ouvrage couvre, avec des cas pratiques et de nombreuses illustrations, les aspects techniques suivants :
- architecture système (5GS), du réseau coeur (5GC) et du réseau d'accès radio de nouvelle génération (NG-RAN) ;
- principes de la transmission multi-antennes et de la formation de faisceaux NR ;
- types de mesures radio et signaux de référence correspondants en NR ;
- couches protocolaires de l'interface radio (5G NR), fonctionnalités et traitements de signaux correspondants ;
- interopérabilité entre LTE et NR ;
- signaux et fonctionnalités de l'accès initial NR, LTE-M/NB-IoT ;
- structure de transmission NR et LTE-M/NB-IoT pour les données et le contrôle.
Édition : Eyrolles
ISBN10 : 2-212-67898-3
ISBN13 : 978-2-212-67898-7
L'architecture des réseaux 5G
- Introduction aux réseaux 5G
- Architecture système du réseau 5G
- Architecture protocolaire du réseau d'accès
- Spectre 5G, propagation radio, principe d'OFDM
- Commutation, agrégation et partage du spectre
- Ressources physiques de transmission
- Signaux de synchronisation et informations système
- Accès aléatoire
- Technologies MIMO
- Mesures radio et signaux de référence
- Traitements des canaux physiques de contrôle
- Traitements des canaux de transport DL/UL et allocation des ressources physiques
- Planification et HARQ
Les technologies LTE-M et NB-IoT dans l'univers 5G
- Internet des objets et réseaux mobiles
- LTE-M - Permettre à LTE de connecter l'IoT
- NB-IoT : l'interface radio dédiée à l'IoT
La 5G est la nouvelle génération de systèmes de télécommunications, une évolution ou révolution par rapport à la 4G (aussi connue comme LTE). Son principal avantage est d'offrir plus de flexibilité pour son déploiement, en gérant tant les cas où énormément de bande passante est requise (pour les particuliers, notamment) ou où il faut connecter un très grand nombre d'appareils et leur garantir une extrêmement faible consommation d'énergie. Ce livre fournit une introduction complète à la 5G, des aspects de plus haut niveau (ordonnancement, fonctionnement des protocoles) et de très bas niveau (accès au spectre, propagation des signaux, modulation).
L'ouvrage s'ouvre sur une série d'entretiens avec des personnalités du domaine, montrant la versatilité voulue dans les usages de la 5G. On peut regretter une certaine redondance (les questions posées sont souvent les mêmes), ainsi que le haut degré de technicité (pour bien profiter des réponses, mieux vaut avoir lu le livre en entier).
Tous les aspects importants de la 5G sont couverts, qu'il s'agisse plutôt de la couche physique ou de techniques de déploiement de la technologie (pour améliorer la couverture ou l'interopérabilité avec d'autres technologies). Le style est synthétique et sans fioritures. Pour approfondir, les auteurs ont à cœur d'indiquer une série de références pour appuyer leurs dires (normes et rapports officiels, notamment).
Le public visé est très clairement connaisseur, au moins de la 4G : LTE est supposé maîtrisé à un haut niveau, le contenu principal du livre étant souvent présenté par opposition à la 4G. Tous les termes techniques sont explicités en anglais avec leur acronyme (certains termes ne sont d'ailleurs jamais traduits en français).
On peut regretter la part donnée à la description des normes 5G plutôt qu'aux explications des raisons qui ont poussé les concepteurs à poser certains choix. Par ailleurs, les évolutions de la 5G ne sont pas vraiment développées, les auteurs n'abordent notamment pas les avantages que l'on cherche à obtenir avec la 6G. Une bonne partie du contenu est centrée sur la France et non la francophonie, notamment pour les organismes de normalisation ou les opérateurs cités. Les figures sont imprimées en noir et blanc, alors qu'elles sont prévues pour la couleur.
Le grand livre de l'impression 3D
Résumé de l'éditeur
Le retour de l'impression 3D
Très richement illustré, cet ouvrage de référence dresse un état de l'art de l'impression 3D personnelle et professionnelle en France et dans le monde. Il décrit avec précision les différents procédés liés à cette technologie, leurs applications, ainsi que les matériaux et les finitions possibles. Fournissant de multiples conseils techniques et pratiques, il passe aussi en revue les nombreux secteurs concernés par l'impression 3D : santé, transports, architecture, prototypage, électronique... Il montre enfin que ce mode de fabrication apporte des possibilités innovantes pour concevoir les produits de demain et répondre aux grands enjeux planétaires.
Cet ouvrage est aussi l'occasion pour l'auteure, qui a écrit en 2013 le premier livre français sur l'impression 3D. de faire un bilan de cette technologie, une petite décennie après sa déferlante en France. Ce mode de fabrication a-t-il tenu ses promesses ? Quelle est son implantation dans notre société actuelle ? On pariait de troisième révolution industrielle, où en est-on aujourd'hui ? Avec beaucoup de recul. Mathilde Berchon nous livre sa vision sur l'avenir de l'impression 3D. qui a certainement un rôle-clé à jouer dans l'industrie du futur.
Parmi les sujets abordés :
- l'explosion de l'impression 3D métal
- les formations d'impression 3D en France
- la modélisation paramétrique
- l'entrepreneuriat et l'impression.3D
- les avancées sur la propriété intellectuelle
- le rôle de l'impression 3D dans la transition écologique
À qui s'adresse ce livre ?
- À tous les makers, geeks, designers, artistes, inventeurs ou simples curieux
- Aux particuliers et aux professionnels
- Aux décideurs et aux managers
Édition : Eyrolles
ISBN10 : 2-212-67770-7
ISBN13 : 978-2-212-67770-6
Comprendre
- Qu'est-ce que l'impression 3D ?
- Courte histoire de l'impression 3D
- Les procédés d'impression 3D
- L'impression 3D impacte tous les secteurs d'activité
Créer
- La phase de modélisation
- La phase d'impression
- Les matériaux
- Post-traitements et finitions
Agir
- L'impression 3D en France et dans le monde
- L'impression 3D pour les particuliers
- L'impression 3D en entreprise
- Les métiers de l'impression 3
- L'impression 3D, pilier d'un monde en transition
L'impression 3D a longtemps été présentée comme une révolution pour les particuliers, avant que le battage médiatique ne s'estompe. Le domaine, loin d'être neuf, arrive dans une phase de stabilisation plus mesurée, où ses avantages ne sont plus surévalués par la majorité. Ce livre tombe ainsi à pic et propose une vue d'ensemble très généraliste, pour aider un maximum de gens à s'approprier les techniques et à estimer leur utilité dans leur cas particulier.
On sent rapidement l'expérience de l'auteure dans la rédaction, avec par exemple une série de trucs et astuces, dissiminés tout au long de l'ouvrage, sur les points sensibles du processus : le lecteur pourra éviter ces écueils lors de la mise en pratique. Tous les aspects de l'impression 3D sont couverts, de l'historique (pour la culture générale) au technique en passant par le commercial.
L'ouvrage richement illustré ne se focalise pas sur un petit ensemble de techniques, il s'ouvre tant sur celles de l'industrie que celles accessibles au particulier. Ainsi, le public visé est extrêmement large, du particulier à l'industriel, mais avec une très faible expérience de l'impression 3D.
On regrettera cependant l'absence d'un lexique, les termes techniques étant utilisés sans vraiment de définition.
Basic concepts in algorithms
Résumé de l'éditeur
This book is the result of several decades of teaching experience in data structures and algorithms. It is self-contained but does assume some prior knowledge of data structures, and a grasp of basic programming and mathematics tools. Basic Concepts in Algorithms focuses on more advanced paradigms and methods combining basic programming constructs as building blocks and their usefulness in the derivation of algorithms. Its coverage includes the algorithms' design process and an analysis of their performance. It is primarily intended as a textbook for the teaching of Algorithms for second year undergraduate students in study fields related to computers and programming.
Klein reproduces his oral teaching style in writing, with one topic leading to another, related one. Most of the classical and some more advanced subjects in the theory of algorithms are covered, though not in a comprehensive manner. The topics include Divide and Conquer, Dynamic Programming, Graph algorithms, probabilistic algorithms, data compression, numerical algorithms and intractability. Each chapter comes with its own set of exercises, and solutions to most of them are appended.
Édition : World Scientific
ISBN10 : 9811238529
ISBN13 : 9789811238529
Recursion
- Divide and Conquer
- Dynamic Programming
Graph Algorithms
- Minimum Spanning Trees
- Shortest Paths
Probabilistic Algorithms
- Primality
Text Algorithms
- Data Compression
- Pattern Matching
Numerical Algorithms
- Fast Fourier Transform
- Cryptography
Intractability
- NP Completeness
- Approximations
Bon nombre d'ouvrages proposent des introductions aux algorithmes et à leur conception, mais rares sont ceux qui le font avec une telle variété. L'auteur a un style d'enseignement moins structuré que la norme, style qu'il reproduit dans ce livre : les sujets abordés ne sont pas toujours conventionnels (avec, par exemple, des algorithmes probabilistes et cryptographiques, mais aussi l'algorithme de Borůvka pour les arbres couvrants, avec des idées sous-jacentes très différentes des algorithmes de Prim ou de Kruskal), dans un ordre qui rassemble des thèmes similaires.
Ce livre n'est pas censé être utilisé comme introduction à la programmation, puisque l'auteur présuppose que les notions de base en programmation sont déjà intégrées, notamment les structures de données principales. Le formalisme mathématique est limité afin de garantir une bonne lisibilité (ce qui n'empêche que certains théorèmes sont prouvés).
La complexité est une notion essentielle de cet ouvrage, tous les algorithmes ayant droit à un calcul précis de leur complexité temporelle. Les notions nécessaires sont expliquées de manière très intuitive.
Chaque chapitre se termine par une série d'exercices de niveaux variés. Ces derniers sont bien choisis et servent à faire réfléchir aux notions centrales de chaque chapitre (plutôt qu'une simple mise en application) ; les corrections apparaissent en fin d'ouvrage.
The Moment-SOS Hierarchy
Lectures in Probability, Statistics, Computational Geometry, Control and Nonlinear PDEs
Résumé de l'éditeur
The moment-SOS hierarchy is a powerful methodology that is used to solve the Generalized Moment Problem (GMP) where the list of applications in various areas of Science and Engineering is almost endless. Initially designed for solving polynomial optimization problems (the simplest example of the GMP), it applies to solving any instance of the GMP whose description only involves semi-algebraic functions and sets. It consists of solving a sequence (a hierarchy) of convex relaxations of the initial problem, and each convex relaxation is a semidefinite program whose size increases in the hierarchy.
The goal of this book is to describe in a unified and detailed manner how this methodology applies to solving various problems in different areas ranging from Optimization, Probability, Statistics, Signal Processing, Computational Geometry, Control, Optimal Control and Analysis of a certain class of nonlinear PDEs. For each application, this unconventional methodology differs from traditional approaches and provides an unusual viewpoint. Each chapter is devoted to a particular application, where the methodology is thoroughly described and illustrated on some appropriate examples.
The exposition is kept at an appropriate level of detail to aid the different levels of readers not necessarily familiar with these tools, to better know and understand this methodology.
Édition : World Scientific
ISBN10 : 1786348535
ISBN13 : 9781786348531
- Notation, Definitions and Preliminaries
- Principle of the Moment-SOS Hierarchy
The Moment-SOS Hierarchy for Applications in Probability and Statistics
- Volume and Gaussian Measure of Semi-Algebraic Sets
- Lebesgue Decomposition of a Measure
- Super Resolution on Semi-Algebraic Domains
- Sparse Polynomial Interpolation
- Representation of (Probabilistic) Chance-Constraints
- Approximate Optimal Design
The Moment-SOS Hierarchy for Applications in Control, Optimal Control and Non-Linear Partial Differential Equations
- Optimal Control
- Convex Computation of Region of Attraction and Reachable Set
- Non-Linear Partial Differential Equations
- Miscellaneous
L'optimisation avec des matrices semi-définies positives (SDP, en anglais) est un domaine de niche, notamment parce que la modélisation de problèmes pour rentrer dans ce cadre est loin d'être aisée, malgré les possibilités offertes. Cet ouvrage part de la notion de polynôme « somme de carrés » et présente la riche théorie qui mène naturellement aux matrices semi-définies positives, puis applique leur combinaison à un bon nombre d'applications, certaines classiques, la majorité plus étonnante.
Les auteurs proposent ainsi une sélection de sujets d'intérêt autour de la notion de polynôme « somme de carrés » (SOS, en anglais), avec un approfondissement de la dualité avec les moments statistiques. Ce diptyque s'applique, de manière plus ou moins intuitive, tant au calcul de probabilités qu'à la résolution de certaines familles d'équations aux dérivées partielles. Les auteurs présentent tous les détails depuis le domaine d'application jusqu'à la formulation sous forme d'une suite de SDP, parfois avec des conseils d'implémentation numérique pour améliorer la convergence de la formulation.
Le niveau mathématique de l'ouvrage est toutefois très élevé, malgré les messages rassurants en quatrième de couverture. Notamment, il faut déjà s'y connaître en matière d'optimisation semi-définie, les rappels proposés étant très succincts. De plus, la théorie des polynômes « sommes de carrés » est présentée dans sa généralité, ce qui nécessite de bonnes connaissances en théorie de la mesure pour bien s'y retrouver.
Reinforcement Learning
Industrial Applications of Intelligent Agents
Résumé de l'éditeur
Reinforcement learning (RL) will deliver one of the biggest breakthroughs in AI over the next decade, enabling algorithms to learn from their environment to achieve arbitrary goals. This exciting development avoids constraints found in traditional machine learning (ML) algorithms. This practical book shows data science and AI professionals how to learn by reinforcement and enable a machine to learn by itself.
- Learn what RL is and how the algorithms help solve problems
- Become grounded in RL fundamentals including Markov decision processes, dynamic programming, and temporal difference learning
- Dive deep into a range of value and policy gradient methods
- Apply advanced RL solutions such as meta learning, hierarchical learning, multi-agent, and imitation learning
- Understand cutting-edge deep RL algorithms including Rainbow, PPO, TD3, SAC, and more
- Get practical examples through the accompanying website
Author Phil Winder of Winder Research covers everything from basic building blocks to state-of-the-art practices. You'll explore the current state of RL, focus on industrial applications, learn numerous algorithms, and benefit from dedicated chapters on deploying RL solutions to production. This is no cookbook; doesn't shy away from math and expects familiarity with ML.
Édition : O'Reilly
ISBN10 : 1-0981-1483-3
ISBN13 : 9781098114831
- Why Reinforcement Learning?
- Markov Decision Processes, Dynamic Programming, and Monte Carlo Methods
- Temporal-Difference Learning, Q-Learning, and n-Step Algorithms
- Deep Q-Networks
- Policy Gradient Methods
- Beyond Policy Gradients
- Learning All Possible Policies with Entropy Methods
- Improving How an Agent Learns
- Practical Reinforcement Learning
- Operational Reinforcement Learning
L'intelligence artificielle a apporté de nombreux progrès scientifiques récents, mais peut rester mystérieuse pour les non-initiés. Ce livre ne considère pas de prérequis particulier dans le domaine et apporte des explications très accessibles pour le domaine de l'apprentissage par renforcement, l'un des piliers actuels des développements récents de l'intelligence artificielle. L'auteur ne partage pas que ses connaissances, une bonne partie de l'ouvrage se focalise sur les applications réelles de l'apprentissage par renforcement. C'est d'ailleurs là l'un de ses points forts, car les derniers chapitres s'intéressent au déploiement industriel de solutions d'apprentissage par renforcement.
Même si l'apprentissage par renforcement est un domaine très mathématique, l'auteur limite l'exposition aux équations le plus possible et ne garde que l'essentiel des développements, tout en ponctuant les formules les plus compliquées avec des intuitions pour en comprendre le sens.
Bien qu'appliqué, cet ouvrage ne présente presque pas de code, uniquement des principes : tout le code se retrouve en ligne, parce qu'il est plus agréable de le lire sur écran que sur papier, notamment pour profiter des dernières mises à jour. Aussi, les mises en pratique sont toujours éclairées par les dernières avancées de la recherche dans le domaine, certains algorithmes présentés n'ayant été développés que ces dernières années. Ce n'est pas pour autant que l'auteur cède aux sirènes journalistiques : les sujets abordés restent les pieds sur terre, sans extrapolation sur les possibilités technologiques, mais avec des considérations éthiques.
Antivirus Bypass Techniques
Learn practical techniques and tactics to combat, bypass, and evade antivirus software
Résumé de l'éditeur
Antivirus software is built to detect, prevent, and remove malware from systems, but this does not guarantee the security of your antivirus solution as certain changes can trick the antivirus and pose a risk for users. This book will help you to gain a basic understanding of antivirus software and take you through a series of antivirus bypass techniques that will enable you to bypass antivirus solutions.
The book starts by introducing you to the cybersecurity landscape, focusing on cyber threats, malware, and more. You will learn how to collect leads to research antivirus and explore the two common bypass approaches used by the authors. Once you’ve covered the essentials of antivirus research and bypassing, you'll get hands-on with bypassing antivirus software using obfuscation, encryption, packing, PowerShell, and more. Toward the end, the book covers security improvement recommendations, useful for both antivirus vendors as well as for developers to help strengthen the security and malware detection capabilities of antivirus software.
By the end of this security book, you'll have a better understanding of antivirus software and be able to confidently bypass antivirus software.
Édition : Packt Publishing
ISBN10 : 1801079749
ISBN13 : 9781801079747
Know the Antivirus – the Basics Behind Your Security Solution
- Introduction to the Security Landscape
- Before Research Begins
- Antivirus Research Approaches
Bypass the Antivirus – Practical Techniques to Evade Antivirus Software
- Bypassing the Dynamic Engine
- Bypassing the Static Engine
- Other Antivirus Bypass Techniques
Using Bypass Techniques in the Real World
- Antivirus Bypass Techniques in Red Team Operations
- Best Practices and Recommendations
Les antivirus sont la solution principale de sécurité chez les particuliers et une composante très importante en entreprise. Cependant, ces logiciels sont faillibles, presque par définition. Il est impensable d'imaginer qu'ils pourront éviter toutes les attaques, mais les antivirus actuels sont toutefois très efficaces et en bloquent une très bonne partie. Passer outre n'est pas évident.
Ce livre présente des techniques générales pour trouver des failles spécifiquement dans des logiciels antivirus, même si certaines parties s'appliquent à tous les programmes informatiques en général. Pour ce faire, les auteurs détaillent le fonctionnement habituel des antivirus modernes pour Windows (avec des analyses statiques et dynamiques du comportement des logiciels), puis donnent des astuces pour trouver des failles dans leur fonctionnement. Ils illustrent leur propos par les résultats de leurs propres recherches, c'est-à-dire des failles qu'ils ont trouvées dans des antivirus du commerce (et signalées aux développeurs). On a ainsi droit à un exposé tant théorique que pratique, avec l'objectif d'armer le lecteur pour trouver de nouvelles failles.
L'introduction est assez lente, avec des rappels probablement inutiles pour le public auquel ce livre est destiné : les auteurs considèrent que le lecteur n'a jamais tenté de bidouiller sur sa machine ou tenté de pénétrer dans un système informatique. Les premières lignes insistent sur les connaissances attendues du lecteur, mais il est seulement nécessaire d'avoir une petite habitude du C et d'avoir déjà vu de l'assembleur x86, le reste est expliqué. On s'étonne d'ailleurs de ne pas avoir l'un ou l'autre chapitre pour détailler plus avant des techniques d'exploitation de failles pour créer des virus (avant de les dissimuler dans le reste de l'ouvrage), tant les rappels sont longs : les premiers chapitres présentent simplement la manière de lancer un terminal sur une machine et de l'utiliser à distance.
Globalement, l'ouvrage remplit à merveille l'objectif que son titre lui donne. Les auteurs ont une expérience dans le domaine et la partagent dans un style simple et abordable.
Graph Machine Learning
Take graph data to the next level by applying machine learning techniques and algorithms
Résumé de l'éditeur
Graph Machine Learning provides a new set of tools for processing network data and leveraging the power of the relation between entities that can be used for predictive, modeling, and analytics tasks.
You will start with a brief introduction to graph theory and graph machine learning, understanding their potential. As you proceed, you will become well versed with the main machine learning models for graph representation learning: their purpose, how they work, and how they can be implemented in a wide range of supervised and unsupervised learning applications. You'll then build a complete machine learning pipeline, including data processing, model training, and prediction in order to exploit the full potential of graph data. Moving ahead, you will cover real-world scenarios such as extracting data from social networks, text analytics, and natural language processing (NLP) using graphs and financial transaction systems on graphs. Finally, you will learn how to build and scale out data-driven applications for graph analytics to store, query, and process network information, before progressing to explore the latest trends on graphs.
By the end of this machine learning book, you will have learned essential concepts of graph theory and all the algorithms and techniques used to build successful machine learning applications.
Édition : Packt Publishing
ISBN10 : 1800204493
ISBN13 : 9781800204492
Introduction to Graph Machine Learning
- Getting Started with Graphs
- Graph Machine Learning
Machine Learning on Graphs
- Unsupervised Graph Learning
- Supervised Graph Learning
- Problems with Machine Learning on Graphs
Advanced Applications of Graph Machine Learning
- Social Network Graphs
- Text Analytics and Natural Language Processing Using Graphs
- Graph Analysis for Credit Card Transactions
- Building a Data-Driven Graph-Powered Application
- Novel Trends on Graphs
Dans le domaine de l'intelligence artificielle, l'apprentissage à partir de graphes est un secteur en pleine expansion. Ce type de données est très particulier et nécessite des techniques adaptées, que cet ouvrage couvre en deux parties : l'une plus théorique, sur les algorithmes existants ; l'autre plus pratique, avec un accent particulier sur la modélisation de problèmes sous la forme de graphes.
La première moitié du livre, présentant des algorithmes d'apprentissage supervisé ou non sur des graphes, est la plus décevante des deux. Elle part des bases, sans considérer que le lecteur connaît quoi que ce soit aux graphes, puis introduit progressivement les notions plus avancées requises pour certaines analyses. Les explications des algorithmes sont, au début, très intuitives, puis deviennent de plus en plus vagues quand le sujet devient plus compliqué, en préférant des exemples d'utilisation des algorithmes avec certaines bibliothèques Python à des détails sur leur fonctionnement.
Au contraire, la partie appliquée est bien plus intéressante. Les auteurs présentent des modélisations qui ne sont pas évidentes dans des domaines comme le traitement des langues ou la détection de transactions frauduleuses. Peu de détails sont laissés à l'imagination, tout le code nécessaire pour les analyses et l'obtention de prédictions étant disponible dans le livre.
Au niveau de la mise en page, on regrettera surtout celle des mathématiques, objectivement très mauvaise : elle limite la lisibilité des formules. Le code Python est aussi régulièrement mal indenté (avec des erreurs d'un ou deux espaces), ce qui risque de poser problème à ceux qui recopient le code exactement comme il apparaît dans le titre.
Interactive Dashboards and Data Apps with Plotly and Dash
Harness the power of a fully fledged frontend web framework in Python — no JavaScript required
Résumé de l'éditeur
With Plotly's Dash framework, it is now easier than ever for Python programmers to develop complete data apps and interactive dashboards. Dash apps can be used by a non-technical audience, and this will make data analysis accessible to a much wider group of people. This book will help you to explore the functionalities of Dash for visualizing data in different ways and getting the most out of it.
The book starts with an overview of the Dash ecosystem, its main packages, and the third-party packages crucial for structuring and building different parts of your apps. You'll learn how to create a basic Dash app and add different features to it. Next, you’ll integrate controls such as dropdowns, checkboxes, sliders, date pickers, and more in the app and then link them to charts and other outputs. Depending on the data you are visualizing, you'll also add several types of charts, including scatter plots, line plots, bar charts, histograms, and maps, as well as explore the options available for customizing them.
By the end of this book, you'll have developed the skills you need to create and deploy an interactive dashboard, handle complexities and code refactoring, and understand the process of improving your application.
Édition : Packt Publishing
ISBN10 : 1800568916
ISBN13 : 9781800568914
Building a Dash App
- Overview of the Dash Ecosystem
- Exploring the Structure of a Dash App
- Working with Plotly's Figure Objects
- Data Manipulation and Preparation, Paving the Way to Plotly Express
Adding Functionality to Your App with Real Data
- Interactively Comparing Values with Bar Charts and Dropdown Menus
- Exploring Variables with Scatter Plots and Filtering Subsets with Sliders
- Exploring Map Plots and Enriching Your Dashboards with Markdown
- Calculating the Frequency of Your Data with Histograms and Building Interactive Tables
Taking Your App to the Next Level
- Letting Your Data Speak for Itself with Machine Learning
- Turbo-charge Your Apps with Advanced Callbacks
- URLs and Multi-Page Apps
- Deploying Your App
- Next Steps
Pour tirer le meilleur profit des données disponibles, il est souvent nécessaire de passer par une phase de visualisation, que ce soit pour comprendre les données ou pour les montrer à d'autres. Ce livre utilise Plotly et Dash pour la réalisation de tableaux de bord, qui correspondent plutôt à ce deuxième besoin (montrer des données). Quand Plotly se charge de l'affichage de graphiques, Dash les intègre dans une application Web.
Ce livre, très agréable à lire, n'a pas de prérequis particuliers, à part la connaissance de Python : il n'est même pas nécessaire d'avoir une petite habitude de travailler avec des données, les bases sont expliquées (tout comme HTML, CSS et Bootstrap). Tout au long de l'ouvrage, l'auteur construit une application de visualisation d'un jeu de données de l'ONU, avec des graphiques plus avancés et de plus en plus d'interaction (jusque des animations).
Le code est toujours bien expliqué en détail, sans fioritures et avec les meilleures pratiques actuelles en Python ; à certains moments, plusieurs manières de procéder exploitant différentes facettes de Plotly sont proposées et comparées. Cependant, on pourra regretter que l'auteur ne fasse pas vraiment le lien avec les meilleures pratiques de visualisation (même si elles sont de mise dans les exemples).
Le chapitre sur l'apprentissage est quelque peu décevant, puisque seule une technique de partitionnement des données est présentée (ce que l'on peut difficilement qualifier d'apprentissage). On peut regretter qu'il n'y ait pas d'implémentation du principe de brushing and linking, une forme d'interactivité très efficace. Toutes les figures sont imprimées en noir et blanc, alors que le texte fait régulièrement référence aux couleurs présentes sur ces images : heureusement qu'elles sont disponibles en ligne.
3D Graphics Rendering Cookbook
A comprehensive guide to exploring rendering algorithms in modern OpenGL and Vulkan
Résumé de l'éditeur
OpenGL is a popular cross-language, cross-platform application programming interface (API) used for rendering 2D and 3D graphics, while Vulkan is a low-overhead, cross-platform 3D graphics API that targets high-performance applications. 3D Graphics Rendering Cookbook helps you learn about modern graphics rendering algorithms and techniques using C++ programming along with OpenGL and Vulkan APIs.
The book begins by setting up a development environment and takes you through the steps involved in building a 3D rendering engine with the help of basic, yet self-contained, recipes. Each recipe will enable you to incrementally add features to your codebase and show you how to integrate different 3D rendering techniques and algorithms into one large project. You'll also get to grips with core techniques such as physically based rendering, image-based rendering, and CPU/GPU geometry culling, to name a few. As you advance, you'll explore common techniques and solutions that will help you to work with large datasets for 2D and 3D rendering. Finally, you'll discover how to apply optimization techniques to build performant and feature-rich graphics applications.
By the end of this 3D rendering book, you'll have gained an improved understanding of best practices used in modern graphics APIs and be able to create fast and versatile 3D rendering frameworks.
- Improve the performance of legacy OpenGL applications
- Manage a substantial amount of content in real-time 3D rendering engines
- Discover how to debug and profile graphics applications
- Understand how to use the Approaching Zero Driver Overhead (AZDO) philosophy in OpenGL
- Integrate various rendering techniques into a single application
- Find out how to develop Vulkan applications
- Implement a physically based rendering pipeline from scratch
- Integrate a physics library with your rendering engine
Édition : Packt Publishing
ISBN10 : 1838986197
ISBN13 : 9781838986193
- Establishing a Build Environment
- Using Essential Libraries
- Getting Started with OpenGL and Vulkan
- Adding User Interaction and Productivity Tools
- Working with Geometry Data
- Physically Based Rendering Using the glTF2 Shading Model
- Graphics Rendering Pipeline
- Image-based Techniques
- Working with Scene Graphs
- Advanced Rendering Techniques and Optimizations
Les API de rendu 3D ont beaucoup évolué ces dernières années, en tendant notamment vers le AZDO (almost zero driver overhead). OpenGL 4.6 et Vulkan proposent des fonctionnalités très avancées pour limiter l'impact en performance du pilote graphique, Vulkan étant extrêmement bas niveau. Ce livre n'aborde ces deux API que sous l'angle AZDO, pour obtenir autant de performance que possible d'une carte graphique.
Le public visé maîtrise déjà le développement avec des API de plus haut niveau, comme OpenGL 3, et souhaite passer le pas vers des API plus récentes. Il commence par présenter une série de bibliothèques qui implémentent les fonctionnalités qu'OpenGL ne propose plus, comme GLM pour les opérations matricielles, sans oublier les outils que les auteurs utilisent pour compiler leur code et installer les dépendances (CMake et Bootstrap).
Le code est toujours bien expliqué en détail, en étant simple et efficace, sans se perdre dans des détails de niveau trop bas pour l'exposé. Le point fort de l'ouvrage est probablement l'implémentation d'un moteur de graphe de scène complet avec l'intégration du moteur physique Bullet, en partant des bases et en montrant les techniques nécessaires pour obtenir une performance excellente.
L'ouvrage est, comme indiqué par son titre, organisé comme une collection de recettes, ce qui fait qu'un chapitre rassemble des éléments parfois épars. Toutes les figures sont imprimées en noir et blanc : heureusement qu'elles sont disponibles en ligne.
Operations Research
Introduction to Models and Methods
Résumé de l'éditeur
This attractive textbook with its easy-to-follow presentation provides a down-to-earth introduction to operations research for students in a wide range of fields such as engineering, business analytics, mathematics and statistics, computer science, and econometrics. It is the result of many years of teaching and collective feedback from students.
The book covers the basic models in both deterministic and stochastic operations research and is a springboard to more specialized texts, either practical or theoretical. The emphasis is on useful models and interpreting the solutions in the context of concrete applications.
The text is divided into several parts. The first three chapters deal exclusively with deterministic models, including linear programming with sensitivity analysis, integer programming and heuristics, and network analysis. The next three chapters primarily cover basic stochastic models and techniques, including decision trees, dynamic programming, optimal stopping, production planning, and inventory control. The final five chapters contain more advanced material, such as discrete-time and continuous-time Markov chains, Markov decision processes, queueing models, and discrete-event simulation.
Each chapter contains numerous exercises, and a large selection of exercises includes solutions.
Édition : World Scientific
ISBN10 : 9811239347
ISBN13 : 9789811239342
- Linear Programming
- Integer Programming
- Network Analysis
- Decision Trees
- Dynamic Programming
- Inventory Management
- Discrete-Time Markov Chains
- Continuous-Time Markov Chains
- Queueing Theory
- Markov Decision Processes
- Simulation
La recherche opérationnelle est un vaste domaine aux applications multiples et variées, qui nécessitent des techniques parfois très différentes. Cet ouvrage propose une introduction à toutes les spécialités principales de cette branche des mathématiques appliquées, tout en gardant une approche abordable à un public très varié. Certains livres tentent de traiter le sujet, mais gardent un niveau de formalisme très élevé et approfondissent des domaines dont l'intérêt ne saute pas aux yeux d'un débutant ; au contraire, l'ouvrage de Boucherie, Braaksma et Tijms fait preuve d'une pédagogie exemplaire, en introduisant des algorithmes et des modèles, mais aussi leur utilité réelle. Les auteurs préfèrent toujours une explication parfois très longue mais compréhensible à un texte concis.
Au programme, on retrouve les techniques d'optimisation mathématique (avec des modèles uniquement déterministes), notamment pour des problèmes de réseau, mais aussi des probabilités (arbres de probabilités, chaînes de Markov, files d'attente) et de la prise de décision sous incertitude (programmation dynamique, bases de l'apprentissage par renforcement). Les auteurs gardent aussi en tête que l'on peut approcher un même problème de diverses manières et n'hésitent pas à montrer l'exemple dans certaines applications.
Chaque chapitre se termine par des exercices, dont la solution succincte se trouve en annexe. On peut regretter que des outils des auteurs soient utilisés, plutôt que des applications habituellement utilisées dans la recherche (tant académique qu'industrielle) ou les applications.
Interpretable Machine Learning with Python
Learn to build interpretable high-performance models with hands-on real-world examples
Résumé de l'éditeur
Do you want to understand your models and mitigate risks associated with poor predictions using machine learning (ML) interpretation? Interpretable Machine Learning with Python can help you work effectively with ML models.
The first section of the book is a beginner's guide to interpretability, covering its relevance in business and exploring its key aspects and challenges. You'll focus on how white-box models work, compare them to black-box and glass-box models, and examine their trade-off. The second section will get you up to speed with a vast array of interpretation methods, also known as Explainable AI (XAI) methods, and how to apply them to different use cases, be it for classification or regression, for tabular, time-series, image or text. In addition to the step-by-step code, the book also helps the reader to interpret model outcomes using examples. In the third section, you'll get hands-on with tuning models and training data for interpretability by reducing complexity, mitigating bias, placing guardrails, and enhancing reliability. The methods you'll explore here range from state-of-the-art feature selection and dataset debiasing methods to monotonic constraints and adversarial retraining.
By the end of this book, you'll be able to understand ML models better and enhance them through interpretability tuning.
- Recognize the importance of interpretability in business
- Study models that are intrinsically interpretable such as linear models, decision trees, and Naive Bayes
- Become well-versed in interpreting models with model-agnostic methods
- Visualize how an image classifier works and what it learns
- Understand how to mitigate the influence of bias in datasets
- Discover how to make models more reliable with adversarial robustness
- Use monotonic constraints to make fairer and safer models
Édition : Packt
ISBN10 : 180020390X
ISBN13 : 9781800203907
Introduction to Machine Learning Interpretation
- Interpretation, Interpretability, and Explainability; and Why Does It All Matter?
- Key Concepts of Interpretability
- Interpretation Challenges
Mastering Interpretation Methods
- Fundamentals of Feature Importance and Impact
- Global Model-Agnostic Interpretation Methods
- Local Model-Agnostic Interpretation Methods
- Anchor and Counterfactual Explanations
- Visualizing Convolutional Neural Networks
- Interpretation Methods for Multivariate Forecasting and Sensitivity Analysis
Tuning for Interpretability
- Feature Selection and Engineering for Interpretability
- Bias Mitigation and Causal Inference Methods
- Monotonic Constraints and Model Tuning for Interpretability
- Adversarial Robustness
- What's Next for Machine Learning Interpretability?
Dans le vaste champ de l'apprentissage automatique, il est très courant de se satisfaire d'un modèle qui semble avoir une bonne performance d'après les tests effectués. Cependant, ce n'est pas toujours suffisant, c'est là que l'interprétabilité du modèle devient importante : pourquoi prédit-il telle ou telle classe ? Perpétue-t-il des stéréotypes ? L'interprétation peut aussi expliquer pourquoi un modèle ne fonctionne pas bien en pratique, car on peut alors s'intéresser aux raisons des prédictions.
Le domaine est, pour le moment, à la pointe des développements scientifiques, l'auteur fait d'ailleurs régulièrement référence à la littérature. Cependant, il n'oublie pas le côté appliqué : les chapitres se développent autour d'exemples concrets, variés et réalistes (basés sur des jeux de données librement accessibles), en présentant le code utilisé pour arriver à interpréter des aspects d'un modèle d'apprentissage. Néanmoins, l'auteur considère toujours que les concepts sont plus importants que le code et les explique de manière intuitive (sans rentrer dans une multitude de détails).
Le livre présente bon nombre de méthodes pour l'interprétation de modèles, il ne se focalise pas sur les réseaux neuronaux profonds : au contraire, la majorité des méthodes ne dépend pas vraiment de l'algorithme d'apprentissage.
Au niveau de la présentation, toutefois, on peut regretter que les images soient en noir et blanc (alors que le texte fait référence directement à la couleur) et que la qualité des images et tableaux compromette leur lisibilité.
Clustering
Theoretical and Practical Aspects
Résumé de l'éditeur
This unique compendium gives an updated presentation of clustering, one of the most challenging tasks in machine learning. The book provides a unitary presentation of classical and contemporary algorithms ranging from partitional and hierarchical clustering up to density-based clustering, clustering of categorical data, and spectral clustering.
Most of the mathematical background is provided in appendices, highlighting algebraic and complexity theory, in order to make this volume as self-contained as possible. A substantial number of exercises and supplements makes this a useful reference textbook for researchers and students.
Édition : World Scientific
ISBN10 : 9811241198
ISBN13 : 9789811241192
- Introduction
- Set-Theoretical Preliminaries
- Dissimilarities, Metrics, and Ultrametrics
- Convexity
- Graphs and Hypergraphs
- Partitional Clustering
- Statistical Approaches to Clustering
- Hierarchical Clustering
- Density-based Clustering
- Categorical Data Clustering
- Spectral Clustering
- Correlation and Consensus Clustering
- Clustering Quality
- Clustering Axiomatization
- Biclustering
- Semi-supervised Clustering
- Special Functions and Applications
- Linear Algebra
- Linear Programming
- NP Completeness
Le partitionnement de données est l'approche principale quand il s'agit d'extraire de l'information d'un jeu de données sans que l'on sache exactement ce qu'il faut prédire. Il s'agit d'un des domaines de la science des données qui voit le plus de nouveaux développements, notamment de par l'abondance de telles données, mais aussi l'un des plus anciens.
Cet ouvrage est prévu comme une véritable référence dans le domaine : tous les domaines principaux du partitionnement ont droit à leur chapitre pour en expliquer les principes, les résultats mathématiques principaux et quelques algorithmes parmi les plus importants, des plus classiques aux plus modernes (en présentant, le cas échéant, des preuves de convergence ou des ratios d'approximation par rapport à des algorithmes exacts), avec des références vers la littérature scientifique. Quand la plupart des livres traitant du partitionnement se limitent à des données continues, l'auteur s'aventure aussi dans le domaine des données catégoriques (par exemple, pour du partitionnement avec des règles d'association). Autant que possible, l'ouvrage indique des liens avec la théorie de la complexité, afin de montrer le besoin d'approximations pour obtenir des complexités temporelles polynomiales.
Toutefois, les bases mathématiques requises sont très élevées. Presque tous les éléments requis sont expliqués dans les premiers chapitres (trois cents pages) ou dans les annexes (cent pages), à l'exception des notions de dérivée, de matrice ou de nombre complexe. Néanmoins, ces notions sont présentées d'une manière très concise et difficile d'accès pour ceux qui n'ont pas déjà connaissance des principes de base et de la formalisation des domaines en question (théorie des ensembles ou des graphes, convexité, mesure de similarité et de distance, etc.). Ceux qui ont déjà eu une bonne exposition pourront cependant profiter des preuves présentées, qui permettent d'approfondir sa compréhension selon des points de vue spécifiques au partitionnement.
Le titre indique que la pratique du partitionnement est abordée, mais cela se limite à la mise en œuvre de quelques algorithmes en R et en Python, sans proposer d'étude de cas significative.
L'UX, c'est quoi exactement ?
Une approche bienveillante pour des expériences optimales
Résumé de l'éditeur
L’UX (Expérience Utilisateurs) c'est avant tout un état d'esprit qui consiste à se mettre à la place des humains qui vont utiliser un produit afin d’anticiper, d’éviter ou de corriger les problèmes qu’ils pourraient rencontrer. Le but est de leur offrir ainsi la meilleure « expérience » possible, et plus largement d'améliorer la vie des humains avec la technologie.
L'objectif de ce livre est d'introduire l'approche UX à un large public afin de vous aider à comprendre pourquoi certains produits sont simples à comprendre et faciles à utiliser, alors que d'autres sont frustrants ou décevants.
Il vous propose une visite guidée concise et vulgarisée en commençant par les idées reçues dont il faut se débarrasser, puis en donnant un éclairage pragmatique sur la manière dont fonctionne notre cerveau.
Il détaille ensuite les outils et les méthodes dont se servent les professionnels de l’UX. Il aborde enfin d’importantes questions d’éthique, d’accessibilité et d’inclusion qui sont au cœur de l’approche UX.
Édition : Dunod
ISBN10 : 2-10-083888-1
ISBN13 : 978-2-10-083888-2
- Qu’est-ce que l’UX (expérience utilisateur) ?
- Qu’est-ce que l’UX n’est pas ?
- Les bases scientifiques de l’UX
- Les méthodes de l’UX
- Etat d’esprit et éthique de l’UX
On en entend de plus en plus parler, souvent de manière vague : l'UX (user experience) s'apparente au monstre du loch Ness, tout le monde en parle, peu l'ont vu. Ce livre, très court, a pour objectif de présenter les bases du domaine à un public très varié, pas forcément technique, l'auteure ne s'adresse pas uniquement à des développeurs. Au contraire, les principes évoqués peuvent s'appliquer dans bien d'autres domaines que l'informatique.
Le point de vue suivi tout au long de l'ouvrage est que l'UX est un état d'esprit à mettre en œuvre tout au long d'un projet informatique, un processus qui part de l'utilisateur pour sans cesse y revenir. En particulier, les aspects d'accessibilité des applications et d'éthique des professionnels de l'UX sont abordés.
L'auteure cherche d'abord à déconstruire des mythes sur l'UX, avant de reconstruire un cadre plus sain sur des bases scientifiques, en omettant tous les sujets pour lesquels la communauté scientifique n'a pas encore atteint de consensus. Par ailleurs, la liste des références est bien fournie et permet d'explorer plus en avant certains sujets, selon ses centres d'intérêt. Ce faisant, les concepts abordés sont clairement définis (en sus d'un glossaire en fin d'ouvrage).
Introduction au Machine Learning
Résumé de l'éditeur
Cet ouvrage s’adresse aux étudiantes et étudiants en informatique ou maths appliquées, en L3, master ou école d’ingénieurs.
Le Machine Learning est une discipline dont les outils puissants permettent aujourd’hui à de nombreux secteurs d’activité de réaliser des progrès spectaculaires grâce à l’exploitation de grands volumes de données.
Le but de cet ouvrage est de vous fournir des bases solides sur les concepts et les algorithmes de ce domaine en plein essor.
Il vous aidera à identifier les problèmes qui peuvent être résolus par une approche Machine Learning, à les formaliser, à identifier les algorithmes les mieux adaptés à chaque problème, à les mettre en oeuvre, et enfin à savoir évaluer les résultats obtenus.
Les notions de cours sont illustrées et complétées par 85 exercices, tous corrigés.
Édition : Dunod
ISBN10 : 2100834762
ISBN13 : 9782100834761
- Présentation du machine learning
- Apprentissage supervisé
- Sélection de modèle et évaluation
- Inférence bayésienne
- Régressions paramétriques
- Régularisation
- Réseaux de neurones artificiels
- Méthodes des plus proches voisins
- Arbres et forêts
- Machines à vecteurs de support et méthodes à noyaux
- Réduction de dimension
- Clustering
Dans le merveilleux monde de l'apprentissage automatique, certains imaginent que les algorithmes d'apprentissage pourront résoudre tous les problèmes de l'humanité. L'auteure prévient, dès l'introduction, que ce ne sera pas le cas, puisqu'on ne peut pas tout faire avec ces techniques : elles ont leurs avantages et inconvénients, mais aussi des limites.
Le livre est écrit surtout à destination d'étudiants qui découvrent ou commencent à approfondir le domaine. L'accent est mis sur la compréhension profonde des algorithmes plutôt que sur leur mise en pratique à l'aide de bibliothèques Python (utilisées pour certains exemples, sans que le code soit vraiment montré) ou autres. L'auteure détaille les concepts nécessaires à leur implémentation sans bibliothèque extérieure, y compris l'optimisation convexe (théorèmes principaux et méthodes numériques) utilisée pour bon nombre d'algorithmes, même si on aura probablement du mal à passer du livre au code.
Cet ouvrage, malgré sa cible clairement universitaire, exploite l'intuition, notamment au niveau géométrique — même si des sujets plus mathématiques (comme la notion de risque ou les techniques d'évaluation de modèles) sont présentés bien avant les algorithmes d'apprentissage proprement dits. Ce faisant, l'auteure propose une série d'exemples détaillés, mais aussi des exercices corrigés pour chaque chapitre.
Par rapport à bon nombre de livres introductifs, celui-ci se distingue par l'importance donnée à la pensée probabiliste et bayésienne. Pour ceux qui envisagent une carrière plus académique ou d'explorer les sujets présentés en profondeur, chaque chapitre est accompagné d'une liste de références scientifiques.
Le livre sans les exercices est librement accessible sur le site de l'auteure.
L'art du game design
Se focaliser sur les fondamentaux
Résumé de l'éditeur
Le but de ce livre est de faire de vous le meilleur game designer possible.
Il vous explique les principes fondamentaux des jeux et montre comment les tactiques utilisées dans les jeux de cartes, les jeux de plateau ou les jeux de plein air fonctionnent aussi pour les jeux vidéo.
La création de jeux est une aventure, et toute aventure nécessite une carte. L’auteur a créé ce livre comme une carte qui permettra d’explorer les rouages du game design. Le premier chapitre commence par présenter le designer. Puis les chapitres suivants ajoutent d’autres éléments, un à un, et construisent graduellement le système complexe de relations qui existe entre le concepteur, le joueur, le jeu et l’équipe.
Une bonne façon de concevoir un jeu est de pouvoir l’observer depuis autant de points de vue que possible. Ces points de vue font l’objet de 116 encadrés appelés Focus qui se réfèrent à une multitude de domaines comme la psychologie, l’architecture, la musique, le graphisme, le développement logiciel ou les mathématiques.
Édition : Dunod
ISBN10 : 2100832425
ISBN13 : 9782100832422
- À l’origine du jeu, il y a le game designer
- Le game designer crée une expérience
- L’expérience se déroule dans un lieu
- L’expérience découle du jeu
- Le jeu est composé d’éléments
- Les éléments soutiennent un thème
- Le jeu commence par une idée
- Le jeu s’améliore par itération
- Le jeu est fait pour un joueur
- L’expérience est dans l’esprit du joueur
- L’esprit du joueur est guidé par la motivation du joueur
- Certains éléments sont les mécaniques du jeu
- Les mécaniques du jeu doivent être équilibrées
- Les mécaniques de jeu encouragent auLes joueurs interagissent avec les jeux par le biais d’une interfacessi les casse-tête
- Les expériences peuvent être évaluées par leurs courbes d’intérêt
- L’histoire est une forme d’expérience
- L’histoire et les structures du jeu peuvent être habilement combinées par un contrôle indirect
- Les histoires et les jeux se déroulent dans des mondes
- Les mondes incluent des personnages
- Les mondes contiennent des espaces
- Certaines interfaces créent un sentiment de présence
- L’apparence et le ressenti d’un monde dépendent de son esthétique
- Certains jeux se jouent avec d’autres joueurs
- Les joueurs forment parfois des communautés
- Le game designer travaille généralement avec une équipe
- L’équipe communique parfois par le biais de documents
- Les bons jeux se forgent grâce à des séances de tests
- L’équipe construit un jeu grâce à une technologie
- Le jeu a généralement un client
- Le game designer fait au client une présentation
- Le game designer et le client veulent que le jeu réalise un profit
- Les jeux transforment leurs joueurs
- Les game designers ont certaines responsabilités
- Chaque game designer a un objectif
Pour certains, la capacité à bien concevoir des jeux est innée, d'autres la travaillent : Jesse Schell est clairement dans ce second camp. Il nous offre un livre qui explore l'élaboration de jeux à travers le prisme de l'expérience du joueur, en expliquant une série de techniques éprouvées qui évitent de (trop) tâtonner. La majorité du contenu est générique, dans le sens où elle s'applique à tout type de jeu, comme les sports ou les jeux de cours de récréation.
L'ouvrage est structuré comme une carte heuristique pour organiser les concepts abordés. Chaque chapitre est tourné vers la production d'une série de focus, c'est-à-dire une série de questions qui permet d'aborder la composition d'un jeu sous un angle particulier, en synthétisant l'expérience de l'auteur. Pour y arriver, l'auteur exploite l'immense quantité de jeux déjà produits, y compris quelques jeux vidéo dont il est l'auteur, mais aussi des jeux bien plus anciens. Ces points de vue sont très souvent issus d'analyses anthropologiques du comportement des humains, car elles permettent d'expliquer pourquoi certains jeux fonctionnent et d'autres pas.
L'ouvrage est aussi bien ancré dans le 21e siècle, avec notamment un chapitre sur les problématiques spécifiques à la réalité augmentée ou virtuelle. Les aspects éthiques ne sont pas mis de côté, notamment pour les jeux gratuits proposant des objets à acheter. L'un des sujets récurrents est la conception de jeux inclusifs pour une famille entière, pour éviter que certains membres ne soient mis de côté. Par contre, on peut regretter l'absence de sujets liés à l'inclusivité, notamment les handicaps.
Globalement, l'ouvrage s'approche de l'exhaustivité sur la conception de jeux, il est difficile de trouver des failles dans les sujets abordés. L'analyse de l'auteur, surtout en termes d'expérience et sur des bases anthropologiques, est de nature à changer la perception que l'on peut avoir du monde en général, même en dehors des jeux.
Data Algorithms with Spark
Recipes and Design Patterns for Scaling Up using PySpark
Résumé de l'éditeur
Apache Spark's speed, ease of use, sophisticated analytics, and multilanguage support makes practical knowledge of this cluster-computing framework a required skill for data engineers and data scientists. With this hands-on guide, anyone looking for an introduction to Spark will learn practical algorithms and examples using PySpark.
In each chapter, author Mahmoud Parsian shows you how to solve a data problem with a set of Spark transformations and algorithms. You'll learn how to tackle problems involving ETL, design patterns, machine learning algorithms, data partitioning, and genomics analysis. Each detailed recipe includes PySpark algorithms using the PySpark driver and shell script.
With this book, you will:
- Learn how to select Spark transformations for optimized solutions
- Explore powerful transformations and reductions including reduceByKey(), combineByKey(), and mapPartitions()
- Understand data partitioning for optimized queries
- Build and apply a model using PySpark design patterns
- Apply motif-finding algorithms to graph data
- Analyze graph data by using the GraphFrames API
- Apply PySpark algorithms to clinical and genomics data
- Learn how to use and apply feature engineering in ML algorithms
- Understand and use practical and pragmatic data design patterns
Édition : O'Reilly
ISBN10 : 1492082384
ISBN13 : 9781492082385
Fundamentals
- Introduction to Spark and PySpark
- Transformations in Action
- Mapper Transformations
- Reductions in Spark
Working with Data
- Partitioning Data
- Graph Algorithms
- Interacting with External Data Sources
- Ranking Algorithms
Data Design Patterns
- Classic Data Design Patterns
- Practical Data Design Patterns
- Join Design Patterns
- Feature Engineering in PySpark
Spark n'est pas l'outil informatique le plus facile à maîtriser, mais son utilisation est presque incontournable pour du traitement de données distribué. Autant son utilisation basique est accessible au plus grand nombre, autant l'amélioration de la performance de ses tâches de calcul est ardue. Pour faciliter cette opération, cet ouvrage propose de concevoir ses applications Spark à l'aide de motifs de conception, tout comme n'importe quelle brique logicielle, mais des motifs algorithmiques adaptés au calcul distribué (exemplifiés dans la partie 2, puis formalisés dans la partie ).
Ce livre, très orienté pratique, part de zéro, c'est-à-dire aucune connaissance de Spark. Il balaie tout le parcours des données, de l'ingestion (ETL) à l'extraction de variables ou au classement. Chaque algorithme est explicitement implémenté, le code étant disponible en ligne, régulièrement de plusieurs manières pour en améliorer la performance ou la mise à l'échelle (en présentant souvent des fonctionnalités plus avancées de Spark pour y arriver). Les motifs décrits servent à penser ses algorithmes comme Spark le requiert pour atteindre la meilleure performance possible.
Les API RDD et DataFrame de Spark sont présentées, la majorité des exemples étant rédigée des deux manières. Parmi les applications, la bio-informatique se taille une place de choix. Le code est régulièrement détaillé ligne par ligne. PageRank est aussi l'objet de plusieurs sections, tout d'abord à travers GraphFrames, puis en l'implémentant complètement par-dessus les API de bas niveau de Spark. Au fil des chapitres, l'auteur récapitule une série de fonctions sous la forme de tableaux. Certains chapitres supplémentaires sont disponibles en ligne.
On peut toutefois regretter que la profondeur des explications soit souvent limitée, que ce soit au niveau de l'exécution du code par Spark pour bien comprendre les compromis à effectuer pour améliorer la performance ou du fonctionnement d'algorithmes plus avancés comme PageRank.
Fluent Python
Clear, Concise, and Effective Programming
Résumé de l'éditeur
Python’s simplicity lets you become productive quickly, but often this means you aren’t using everything it has to offer. With the updated edition of this hands-on guide, you’ll learn how to write effective, modern Python 3 code by leveraging its best ideas.
Don’t waste time bending Python to fit patterns you learned in other languages. Discover and apply idiomatic Python 3 features beyond your past experience. Author Luciano Ramalho guides you through Python’s core language features and libraries and teaches you how to make your code shorter, faster, and more readable.
Featuring major updates throughout the book, Fluent Python, second edition, covers:
- Special methods: The key to the consistent behavior of Python objects
- Data structures: Sequences, dicts, sets, Unicode, and data classes
- Functions as objects: First-class functions, related design patterns, and type hints in function declarations
- Object-oriented idioms: Composition, inheritance, mixins, interfaces, operator overloading, static typing and protocols
- Control flow: Context managers, generators, coroutines, async/await, and thread/process pools
- Metaprogramming: Properties, attribute descriptors, class decorators, and new class metaprogramming hooks that are simpler than metaclasses
Édition : O'Reilly
ISBN10 : 1492056359
ISBN13 : 9781492056355
Data Structures
- The Python Data Model
- An Array of Sequences
- Dictionaries and Sets
- Unicode Text Versus Bytes
- Data Class Builders
- Object References, Mutability, and Recycling
Functions as Objects
- Functions as First-Class Objects
- Type Hints in Functions
- Decorators and Closures
- Design Patterns with First-Class Functions
Classes and Protocols
- A Pythonic Object
- Special Methods for Sequences
- Interfaces, Protocols, and ABCs
- Inheritance: For Better or for Worse
- More About Type Hints
- Operator Overloading
Control Flow
- Iterators, Generators, and Classic Coroutines
- with, match, and else Blocks
- Concurrency Models in Python
- Concurrent Executors
- Asynchronous Programming
Metaprogramming
- Dynamic Attributes and Properties
- Attribute Descriptors
- Class Metaprogramming
Malgré ses apparences de simplicité, Python permet de développer de manière industrielle des logiciels de grande taille, avec notamment les assurances qualité nécessaires. Ce livre part d'un bon niveau de connaissance de Python, mais mène le lecteur à une maîtrise du langage et de ses mécanismes qui permettent d'écrire du code de manière pythonique, tout en nuance (parfois en développant des vues pas spécialement répandues sur ces fonctionnalités). Chaque chapitre est copieusement illustré en exemples, y compris avec des exemples d'utilisation (écrits sous la forme de doctests).
L'ouvrage aborde une grande série de sujets, mais approfondit surtout les annotations de types (et les cas où elles ne sont pas utiles) et les mécanismes de programmation asynchrone. La première moitié (parties 1 et 2) montrent comment exploiter les fonctions existantes de Python, tandis que la suivante (parties 3 et 5) se focalise sur l'écriture de classes, notamment avec de la métaprogrammation. La partie 4, quant à elle, est axée sur la programmation concurrente avec les mécaniques asynchrones récemment ajoutées dans le langage. Ce faisant, l'auteur explique comment fonctionne l'interpréteur Python, en allant par exemple jusqu'au MRO (method resolution order) dans le cas de l'héritage. Certains détails sont uniquement présents sur le site accompagnant le livre.
Chaque chapitre se termine par un résumé des idées principales et une liste d'articles ou livres pour approfondir les sujets abordés. De manière plus intéressante, les chapitres se concluent tous par une tribune, où l'auteur exprime son opinion ou retrace l'historique de certains mécanismes.
Globalement, ce livre de très bonne facture s'adresse aux utilisateurs déjà expérimentés de Python et leur ouvre tout un champ de possibilités qu'ils n'osaient pas imaginer pour ce langage. Ce livre détaille la manière dont Python implémente les mécanismes qui ont fait son succès, afin de les exploiter au mieux dans son code (si cela devait s'avérer nécessaire).
Graph and Networks
Résumé de l'éditeur
A unique blend of graph theory and network science for mathematicians and data science professionals alike.
Featuring topics such as minors, connectomes, trees, distance, spectral graph theory, similarity, centrality, small-world networks, scale-free networks, graph algorithms, Eulerian circuits, Hamiltonian cycles, coloring, higher connectivity, planar graphs, flows, matchings, and coverings, Graphs and Networks contains modern applications for graph theorists and a host of useful theorems for network scientists.
The book begins with applications to biology and the social and political sciences and gradually takes a more theoretical direction toward graph structure theory and combinatorial optimization. A background in linear algebra, probability, and statistics provides the proper frame of reference.
Graphs and Networks also features:
- Applications to neuroscience, climate science, and the social and political sciences
- A research outlook integrated directly into the narrative with ideas for students interested in pursuing research projects at all levels
- A large selection of primary and secondary sources for further reading
- Historical notes that hint at the passion and excitement behind the discoveries
- Practice problems that reinforce the concepts and encourage further investigation and independent work
Édition : Wiley
ISBN10 : 111893718X
ISBN13 : 9781118937181
- From Königsberg to Connectomes
- Fundamental Topics
- Similarity and Centrality
- Types of Networks
- Graph Algorithms
- Structure, Coloring, Higher Connectivity
- Planar Graphs
- Flows and Matchings
Dans l'analyse de données, les graphes se font une place de plus en plus importante, car ils permettent de modéliser des relations entre entités de manière fine. Encore faut-il disposer d'outils pour les traiter : c'est ce que propose cet ouvrage, avec une introduction partant de presque zéro pour arriver aux sujets les plus classiques, comme les mesures de centralité, la biconnectivité ou les flots. Ces sujets sont abordés surtout depuis le point de vue des applications, que l'auteure estime nécessaire pour justifier l'intérêt des problèmes étudiés. L'intuition est un élément essentiel dans la manière de rédiger, avec la formalisation nécessaire.
Il n'est donc pas besoin d'avoir un gros bagage en mathématique ou en informatique pour profiter du livre. Les annexes fournissent les éléments nécessaires en algèbre linéaire, probabilités ou encore algorithmique. Même si une bonne partie de l'ouvrage est constituée de preuves (que l'auteure considère comme essentielles pour la compréhension en profondeur), il n'est nul besoin d'être expert en logique : on a même droit à une section sur la manière de concevoir ses preuves.
Chaque chapitre se termine par une sélection d'exercices classés en deux catégories, les plus simples et ceux prévus pour approfondir les sujets abordés. La bibliographie est abondante, ce qui se montrera utile pour les chercheurs exploitant la théorie des graphes. De plus, l'aspect historique n'est pas négligé et sert régulièrement de justification pour approcher certains sujets (par exemple, en mentionnant les premières applications).
Régulièrement, l'auteure aborde non seulement des applications en sciences sociales, mais aussi les impacts sociaux lors du déploiement des techniques qu'elle développe (notamment, en faisant le rapprochement entre la recommandation par filtrage collaboratif et les chambres d'écho numériques dans lesquelles certains internautes s'enferment). Elle omet cependant des sujets plus avancés, extrêmement utiles en pratique mais moins liés à des applications, comme la largeur arborescente.
Reinforcement Learning and Stochastic Optimization
A Unified Framework for Sequential Decisions
Résumé de l'éditeur
Sequential decision problems, which consist of “decision, information, decision, information,” are ubiquitous, spanning virtually every human activity ranging from business applications, health (personal and public health, and medical decision making), energy, the sciences, all fields of engineering, finance, and e-commerce. The diversity of applications attracted the attention of at least 15 distinct fields of research, using eight distinct notational systems which produced a vast array of analytical tools. A byproduct is that powerful tools developed in one community may be unknown to other communities.
Reinforcement Learning and Stochastic Optimization offers a single canonical framework that can model any sequential decision problem using five core components: state variables, decision variables, exogenous information variables, transition function, and objective function. This book highlights twelve types of uncertainty that might enter any model and pulls together the diverse set of methods for making decisions, known as policies, into four fundamental classes that span every method suggested in the academic literature or used in practice.
Reinforcement Learning and Stochastic Optimization is the first book to provide a balanced treatment of the different methods for modeling and solving sequential decision problems, following the style used by most books on machine learning, optimization, and simulation. The presentation is designed for readers with a course in probability and statistics, and an interest in modeling and applications. Linear programming is occasionally used for specific problem classes. The book is designed for readers who are new to the field, as well as those with some background in optimization under uncertainty.
Throughout this book, readers will find references to over 100 different applications, spanning pure learning problems, dynamic resource allocation problems, general state-dependent problems, and hybrid learning/resource allocation problems such as those that arose in the COVID pandemic. There are 370 exercises, organized into seven groups, ranging from review questions, modeling, computation, problem solving, theory, programming exercises and a “diary problem” that a reader chooses at the beginning of the book, and which is used as a basis for questions throughout the rest of the book.
Édition : Wiley
ISBN10 : 1119815037
ISBN13 : 9781119815037
Introduction
- Sequential Decision Problems
- Canonical Problems and Applications
- Online Learning
- Introduction to Stochastic Search
Stochastic Search
- Derivative-Based Stochastic Search
- Stepsize Policies
- Derivative-Free Stochastic Search
State-dependent Problems
- State-dependent Problems
- Modeling Sequential Decision Problems
- Uncertainty Modeling
- Designing Policies
Policy Search
- Policy Function Approximations and Policy Search
- Cost Function Approximations
Lookahead Policies
- Exact Dynamic Programming
- Backward Approximate Dynamic Programming
- Forward ADP I: The Value of a Policy
- Forward ADP II: Policy Optimization
- Forward ADP III: Convex Resource Allocation Problems
- Direct Lookahead Policies
Multiagent Systems
- Multiagent Modeling and Learning
Les succès de l'apprentissage par renforcement font régulièrement la une de la presse informatique, parfois même grand public, mais il n'empêche que le domaine reste formé d'une grande variété d'approches avec des liens peu évidents entre elles. Cet ouvrage propose une théorie qui unifie toutes les approches de l'apprentissage par renforcement, un domaine que l'auteur préfère appeler prise de décision séquentielle pour plus d'exactitude. On rencontre dans ce livre des techniques d'optimisation mathématique stochastique, de simulation-optimisation, de contrôle optimal, entre autres.
L'ouvrage s'oriente surtout autour d'une typologie que l'auteur a développée tout au long de sa carrière pour caractériser les manières d'aborder un problème de décision séquentielle. Il la prétend exhaustive, dans le sens que toute technique de décision séquentielle doit s'y inscrire. En guise de preuve, il explique comment les approches de quinze domaines différents se situent sur cette carte du domaine, en partant des problématiques relativement simples d'estimation stochastique aux approches les plus avancées.
L'autre point saillant de l'ouvrage est sans conteste l'importance de la modélisation par rapport aux algorithmes. De fait, la modélisation sert à poser le problème à résoudre et ses caractéristiques, ce qui guide le choix d'un algorithme probablement efficace sans s'enfermer dans le carcan des méthodes classiques d'un domaine particulier. La modélisation est abordée de manière théorique, mais surtout pratique, avec un grand nombre d'exemples (approfondis dans l'ouvrage compagnon disponible sur Internet). Globalement, l'ouvrage se destine surtout à des praticiens, même si les liens à la recherche académique restent très importants. L'auteur transmet son expérience, notamment des aspects ignorés par les théoriciens qui ne se révèlent pleinement que dans la pratique, comme le choix d'hyperparamètres.
La majorité des chapitres contient une section « Why does it work? » pour détailler, d'un point de vue mathématique, les preuves omises dans le texte. L'ouvrage se cherche à l'intersection du tutoriel et du livre de référence, ce qui ne contribue pas à sa clarté globale.
Classical And Modern Optimization
Résumé de l'éditeur
The quest for the optimal is ubiquitous in nature and human behavior. The field of mathematical optimization has a long history and remains active today, particularly in the development of machine learning.
Classical and Modern Optimization presents a self-contained overview of classical and modern ideas and methods in approaching optimization problems. The approach is rich and flexible enough to address smooth and non-smooth, convex and non-convex, finite or infinite-dimensional, static or dynamic situations. The first chapters of the book are devoted to the classical toolbox: topology and functional analysis, differential calculus, convex analysis and necessary conditions for differentiable constrained optimization. The remaining chapters are dedicated to more specialized topics and applications.
Valuable to a wide audience, including students in mathematics, engineers, data scientists or economists, Classical and Modern Optimization contains more than 200 exercises to assist with self-study or for anyone teaching a third- or fourth-year optimization class.
Édition : World Scientific
ISBN10 : 1800610866
ISBN13 : 9781800610866
- Topological and Functional Analytic Preliminaries
- Differential Calculus
- Convexity
- Optimality Conditions for Differentiable Optimization
- Problems Depending on a Parameter
- Convex Duality and Applications
- Iterative Methods for Convex Minimization
- When Optimization and Data Meet
- An Invitation to the Calculus of Variations
Vaste est le champ de l'optimisation mathématique, tant dans les algorithmes et la théorie qui les supporte que dans les applications. Cet ouvrage traite surtout du premier point de vue, c'est-à-dire proposer des outils au praticien (et une introduction complète au théoricien), sans toutefois oublier les applications pour justifier le besoin d'algorithmes. Le livre présente certains théorèmes très pratiques, mais malheureusement peu connus. La modélisation est toutefois un parent pauvre.
L'ouvrage s'oriente surtout autour d'une typologie que l'auteur a développée tout au long de sa carrière pour caractériser les manières d'aborder un problème de décision séquentielle. Il la prétend exhaustive, dans le sens que toute technique de décision séquentielle doit s'y inscrire. En guise de preuve, il explique comment les approches de quinze domaines différents se situent sur cette carte du domaine, en partant des problématiques relativement simples d'estimation stochastique aux approches les plus avancées.
On pourra regretter le style de rédaction, très sec, avec par exemple peu de contexte autour des définitions et théorèmes. Le chapitre sur la science des données et l'apprentissage couvre essentiellement des exemples classiques et non ceux où la théorie de l'optimisation permet des avancées profondes mais peu connues.
Algorithms
Design Techniques and Analysis
Résumé de l'éditeur
Problem solving is an essential part of every scientific discipline. It has two components: (1) problem identification and formulation, and (2) the solution to the formulated problem. One can solve a problem on its own using ad hoc techniques or by following techniques that have produced efficient solutions to similar problems. This requires the understanding of various algorithm design techniques, how and when to use them to formulate solutions, and the context appropriate for each of them.
Algorithms: Design Techniques and Analysis advocates the study of algorithm design by presenting the most useful techniques and illustrating them with numerous examples — emphasizing on design techniques in problem solving rather than algorithms topics like searching and sorting. Algorithmic analysis in connection with example algorithms are explored in detail. Each technique or strategy is covered in its own chapter through numerous examples of problems and their algorithms.
Readers will be equipped with problem solving tools needed in advanced courses or research in science and engineering.
Édition : World Scientific
ISBN10 : 9811238642
ISBN13 : 9789811238642
- Basic Concepts and Introduction to Algorithms
- Techniques Based on Recursion
- First-Cut Techniques
- Complexity of Problems
- Coping with Hardness
- Iterative Improvement for Domain-Specific Problems
- Techniques in Computational Geometry
- Appendices
On compte bon nombre de livres sur les algorithmes, peu sortent du lot. Toutefois, ce livre en fait partie, avec notamment un choix éclectique de sujets (comme la géométrie algorithmique ou les algorithmes parallèles), une notation précise de la complexité (et un intérêt particulier pour les bornes inférieures de complexité) et une justification des algorithmes par des problèmes réels plutôt qu'abstraits.
L'auteur considère peu de prérequis de la part des lecteurs, si ce n'est une première expérience en programmation et des structures de données basiques (comme le vecteur ou la liste liée, qui sont quand même brièvement expliquées) et un peu de probabilités discrètes. Il termine son ouvrage par des sujets plus complexes, comme la théorie de la complexité (sans machines de Turing), la géométrie algorithmique et les algorithmes parallèles.
Tout au long de l'ouvrage, l'auteur fait appel à l'intuition du lecteur pour éviter de l'assomer de détails mathématiques peu importants pour la compréhension. Les techniques de conception d'algorithmes sont d'abord mises en pratiques avant d'être généralisées et approfondies avec encore plus d'exemples.
Un point surtout remarquable est l'importance que l'auteur met dans la distinction entre grand O, grand Omega et grand Thêta. La plupart des auteurs les passent sous silence ou les mettent sous le tapis, mais cet ouvrage les met en avant pour bien indiquer la complexité d'un algorithme et les possibilités d'amélioration. Bien que le pire cas soit l'outil le plus utilisé, l'auteur présente régulièrement des analyses dans un cas moyen.
Scientific Writing 3.0
A Reader and Writer's Guide
Résumé de l'éditeur
The third edition of this book aims to equip both young and experienced researchers with all the tools and strategy they will need for their papers to not just be accepted, but stand out in the crowded field of academic publishing. It seeks to question and deconstruct the legacy of existing science writing, replacing or supporting historically existing practices with principle- and evidence-driven styles of effective writing. It encourages a reader-centric approach to writing, satisfying reader-scientists at large, but also the paper's most powerful readers, the reviewer and editor. Going beyond the baseline of well-structured scientific writing, this book leverages an understanding of human physiological limitations (memory, attention, time) to help the author craft a document that is optimized for readability.
Through real and fictional examples, hands-on exercises, and entertaining stories, this book breaks down the critical parts of a typical scientific paper (Title, Abstract, Introduction, Visuals, Structure, and Conclusions). It shows at great depth how to achieve the essential qualities required in scientific writing, namely being clear, concise, convincing, fluid, interesting, and organized. To enable the writer to assess whether these parts are well written from a reader's perspective, the book also offers practical metrics in the form of six checklists, and even an original Java application to assist in the evaluation.
Édition : World Scientific
ISBN10 : 9811229538
ISBN13 : 9789811229534
The Reading Toolkit
- Writer vs. Reader, a Matter of Attitude
- Strategic Writing
- The Scientific Writing Style
- Require Less from Memory
- Sustain Attention to Ensure Continuous Reading
- Reduce Reading Time
- Keep the Reader Motivated
- Bridge the Knowledge Gap
- Set the Reader's Expectations
- Set Progression Tracks for Fluid Reading
- Detect Sentence Fluidity Problems
- Control Reading Energy Consumption
Paper Structure and Purpose
- Title: The Face of Your Paper
- Abstract: The Heart of Your Paper
- Headings-Subheadings: The Skeleton of Your Paper
- Introduction: The Hands of Your Paper
- Introduction Part II: Popular Traps
- Visuals: The Voice of Your Paper
- Conclusions: The Smile of Your Paper
- Additional Resources for the Avid Learner
Dans les domaines scientifiques, écrire pour présenter son travail semble facile, une fois le travail effectué. Cependant, il ne faut pas oublier que l'écriture n'est pas l'objectif poursuivi : pour atteindre la meilleure efficacité, l'auteur doit penser au lecteur, présenter ses idées pour que le lecteur les comprenne facilement. C'est le point de vue qu'ont pris les auteurs de cet ouvrage. Il s'adresse clairement à un public scientifique, peu importe le domaine des sciences, en visant une publication dans des journaux ou conférences académiques, mais la majorité de son contenu s'appliquera très bien à d'autres formes de communication technique par écrit, par exemple après une analyse d'un jeu de données. Bien que le livre soit en anglais et les exemples aussi, il s'appliquera sans problème à d'autres langues (certaines sections plus grammaticales mises de côté).
Le livre est découpé en deux parties, la première se focalise sur l'écriture plus générique, la seconde sur la structure d'un article académique. Les chapitres ne traitent qu'un sujet, avec moult exemples (bons et moins bons), et se terminent par des listes de contrôle des points essentiels. Régulièrement, on retrouve le personnage de Vladimir pour exemplifier certains problèmes de manière plus légère.
Avec cet ouvrage, les auteurs remplissent un vide criant dans l'éducation scientifique classique : peu de gens sortent d'études supérieures avec un bon bagage en rédaction, alors que cette compétence est essentielle pour la majorité des emplois intellectuels.
Robust and Adaptive Optimization
Résumé de l'éditeur
The purpose of this book is to provide a unified, insightful, and original treatment of robust and adaptive optimization.
- Part I describes linear RO and the underlying uncertainty sets.
- Part II treats modeling, exact and approximate algorithms for ARO.
- Part III introduces nonlinear RO for concave uncertainty.
- Part IV outlines nonlinear RO for convex uncertainty.
- Part V discusses the theory of distributionally RO and ARO.
- Part VI contains a variety of RO and ARO applications including queueing theory, auction design, option pricing and energy unit commitment.
There are some distinguishing characteristics in our selection of the particular structure of the book we would like to comment on:
- Our unifying treatment of RO and ARO. We present RO and ARO for LO in Parts I and II, and we return to RO for nonlinear optimization in Parts III and IV, as opposed to presenting RO first and then ARO. The reason is that ARO offers new and very effective ways to solve RO problems, a fact not fully recognized earlier.
- Our treatment of nonlinear RO in Parts III and IV using concave and convex uncertainty respectively, as opposed to treating robust conic optimization.
- Our extensive treatment of a variety of applications of RO and ARO in several fields in Part VI is guided by the quote of George Dantzig at the beginning of the preface.
Édition : Dynamic Ideas
ISBN10 : 1733788522
ISBN13 : 9781733788526
Robust Linear Optimization
- Uncertainty and Robustness
- RO Under Linear Uncertainty
- Choosing Uncertainty Sets and Their Parameters
- RO Under Nonlinear Uncertainty
- Robust Discrete Optimization
Adaptive Linear Optimization
- Introduction to Adaptive Robust Optimization
- Approximating ARO Solutions by Decision Rules
- Pareto Robustly Optimal Solutions
- Adaptive Mixed Integer Optimization
- RO as an Approximation to Two-Stage ARO
- The Cutting Plane Method
- The Art of Robust and Adaptive Modeling
Robust Nonlinear Optimization with Concave Uncertainty
- RCQO with Concave Uncertainty
- Robust NLO with Concave Uncertainty
- Guarantees for Concave Uncertainty
Robust Nonlinear Optimization with Convex Uncertainty
- RCQO with Convex Uncertainty
- An ARO Approach to Robust NLO
- A Unified Framework for Convex Uncertainty
Distributionally Robust Optimization
- Distributionally Robust Optimization
- Adaptive DRO
The Impact of Robust Optimization
- Robust Queueing Theory
- Robust Auction Theory
- ARO for the Unit Commitment Problem
- Robust Multi-Period Portfolio Optimization
- Robust Option Pricing
- Robust Linear Regression
- Robust Linear Quadratic Control
Une fois une solution optimale trouvée pour un problème de recherche opérationnelle, on se demande parfois à quel point elle peut être robuste si tous les paramètres ne se réalisent pas comme prévu (comme un trajet un peu plus long ou une électricité un peu plus chère). L'optimisation robuste est un outil pour déterminer des solutions qui fonctionnent bien pour toute une série de valeurs de ces paramètres (plutôt qu'une seule valeur, choix plus classique), elle est l'objet unique de cet ouvrage. L'auteur y poursuit une approche très pragmatique, où les temps de calcul en pratique sont plus importants qu'une classe de complexité abstraite.
La théorie de l'optimisation robuste, qu'elle soit adaptative ou distributionnelle, est bien couverte dans cet ouvrage, à partir des fondements en dualité jusqu'à des équivalences entre optimisation robuste et adaptative, avec une justification des problèmes pratique qu'elle permet de résoudre (surtout les parties les plus avancées de la théorie). Néanmoins, l'auteur met l'accent sur les questions de modélisation (toute une partie se focalise sur ces applications) et sur les algorithmes de résolution, qu'ils soient classiques ou moins.
Outre la modélisation et les algorithmes, ce qui différencie cet ouvrage d'autres traitements de l'optimisation robuste est sa prise en compte de la pensée stochastique, très répandue. Souvent, le lien entre les deux se limite à la justification des ensembles d'incertitude ellipsoïdaux, mais l'auteur présente des résultats théoriques bien plus précis et utiles, comme des caractérisations de probabilité de violation de contrainte ou l'approximation de quantités stochastiques par des techniques d'optimisation robuste. Le lien avec les probabilités est rarement aussi explicite et détaillé.
Le niveau attendu du lecteur est celui d'un praticien en recherche opérationnelle, avec de bonnes connaissances pour les techniques d'optimisation sans incertitude (problèmes linéaires, convexes et en nombres entiers), mais sans forcément d'exposition à l'incertitude. Chaque chapitre a une bibliographie imposante et variée.
Deep Learning on Graphs
Résumé de l'éditeur
'This timely book covers a combination of two active research areas in AI: deep learning and graphs. It serves the pressing need for researchers, practitioners, and students to learn these concepts and algorithms, and apply them in solving real-world problems. Both authors are world-leading experts in this emerging area.' — Huan Liu, Arizona State University
'Deep learning on graphs is an emerging and important area of research. This book by Yao Ma and Jiliang Tang covers not only the foundations, but also the frontiers and applications of graph deep learning. This is a must-read for anyone considering diving into this fascinating area.' — Shuiwang Ji, Texas A&M University
Deep learning on graphs has become one of the hottest topics in machine learning. The book consists of four parts to best accommodate our readers with diverse backgrounds and purposes of reading. Part 1 introduces basic concepts of graphs and deep learning; Part 2 discusses the most established methods from the basic to advanced settings; Part 3 presents the most typical applications including natural language processing, computer vision, data mining, biochemistry and healthcare; and Part 4 describes advances of methods and applications that tend to be important and promising for future research. The book is self-contained, making it accessible to a broader range of readers including (1) senior undergraduate and graduate students; (2) practitioners and project managers who want to adopt graph neural networks into their products and platforms; and (3) researchers without a computer science background who want to use graph neural networks to advance their disciplines.
Édition : Cambridge
ISBN10 : 1108831745
ISBN13 : 9781108831741
Introduction
- Deep Learning on Graphs: An Introduction
Foundations
- Foundations of Graphs
- Foundations of Deep Learning
Methods
- Graph Embedding
- Graph Neural Networks
- Robust Graph Neural Networks
- Scalable Graph Neural Networks
- Graph Neural Networks on Complex Graphs
- Beyond GNNs: More Deep Models on Graphs
Applications
- Graph Neural Networks in Natural Language Processing
- Graph Neural Networks in Computer Vision
- Graph Neural Networks in Data Mining
- Graph Neural Networks in Biochemistry and Healthcare
Advances
- Advanced Topics in Graph Neural Networks
- Advanced Applications in Graph Neural Networks
Les graphes ont longtemps été un parent pauvre dans le domaine de l'apprentissage automatique, peu de techniques se généralisant à des structures aussi compliquées. Les réseaux neuronaux sont actuellement à la pointe de la recherche dans le domaine et percolent dans les applications industrielles. Ce livre se place entre les deux, avec une couverture détaillée de la théorie sous-jacente aux GNN et un approfondissement de quelques applications.
Les auteurs partent d'un niveau de connaissances en graphes et réseaux neuronaux presque nul et apportent moult références scientifiques, principalement très récentes. Ils fournissent les résultats théoriques principaux dans leur totalité (preuves complètes ou détails mathématiques des architectures de réseaux neuronaux), ce qui a malheureusement parfois tendance à limiter la lisibilité de l'ouvrage.
Ce livre est une revue de littérature poussée du domaine, les auteurs couvrant des types de graphes ayant attiré plus ou moins de succès (dirigés ou non, mais aussi hétérogènes, multipartites, hypergraphes). Ils cherchent à unifier des résultats d'apparence très différente sous un même vocabulaire.
Les applications couvertes partent des plus classiques au plus récentes (y compris en optimisation combinatoire). Les GNN sont mis à toutes les sauces, y compris pour de la génération de données (GAN) ou de la modélisation non supervisée (auto-encodeurs variationnels). On peut toutefois regretter que la pratique se limite à la description des architectures de réseaux neuronaux déployées, sans indiquer de piste pour en débuter l'implémentation.
Optimization for Data Analysis
Résumé de l'éditeur
Optimization techniques are at the core of data science, including data analysis and machine learning. An understanding of basic optimization techniques and their fundamental properties provides important grounding for students, researchers, and practitioners in these areas. This text covers the fundamentals of optimization algorithms in a compact, self-contained way, focusing on the techniques most relevant to data science.
An introductory chapter demonstrates that many standard problems in data science can be formulated as optimization problems. Next, many fundamental methods in optimization are described and analyzed, including: gradient and accelerated gradient methods for unconstrained optimization of smooth (especially convex) functions; the stochastic gradient method, a workhorse algorithm in machine learning; the coordinate descent approach; several key algorithms for constrained optimization problems; algorithms for minimizing nonsmooth functions arising in data science; foundations of the analysis of nonsmooth functions and optimization duality; and the back-propagation approach, relevant to neural networks.
Édition : Cambridge
ISBN10 : 1316518981
ISBN13 : 9781316518984
- Introduction
- Foundations of Smooth Optimization
- Descent Methods
- Gradient Methods Using Momentum
- Stochastic Gradient
- Coordinate Descent
- First-Order Methods for Constrained Optimization
- Nonsmooth Functions and Subgradients
- Nonsmooth Optimization Methods
- Duality and Algorithms
- Differentiation and Adjoints
Optimisation et science des données sont deux domaines fort proches, mais qui gagneraient à travailler main dans la main. Cet ouvrage propose une introduction aux techniques d'optimisation spécifiquement dans le cadre de la science des données, en se focalisant sur les méthodes du premier ordre utilisées pour l'entraînement de modèles. Les auteurs incluent des preuves de convergence en temps fini (et non des preuves asymptotiques), ce qui permet de garantir une bonne performance théorique ; cependant, ils la contrastent toujours avec la performance pratique pour des problèmes de science des données.
La liste des sujets abordés est longue, surtout par rapport au volume de l'ouvrage : problèmes convexes ou non, dérivables ou non, contraints ou non, avec des méthodes duales. Cependant, l'optimisation discrète est oubliée, malgré son utilité notamment en sélection de variables. Le dernier chapitre aborde le sujet très important de la dérivation automatique, une brique essentielle du développement actuel de l'intelligence artificielle.
Le contenu est très mathématique, peu de preuves sont laissées au lecteur. Les chapitres tendent à suivre une structure similaire, ce qui facilite la recherche d'information a posteriori. Chaque chapitre se termine par une liste de références bibliographiques, mais aussi quelques exercices (proposés sans solution).
Computer Architecture for Scientists
Principles and Performance
Résumé de l'éditeur
The dramatic increase in computer performance has been extraordinary, but not for all computations: it has key limits and structure. Software architects, developers, and even data scientists need to understand how exploit the fundamental structure of computer performance to harness it for future applications.
Using a principled approach, Computer Architecture for Scientists covers the four key pillars of computer performance and imparts a high-level basis for reasoning with and understanding these concepts. These principles and models provide approachable high-level insights and quantitative modeling without distracting low-level detail. The pillars include:
- Small is fast: how size scaling drives performance (miniaturization)
- Hidden parallelism: how a sequential program can be executed faster with parallelism (instruction-level parallelism)
- Dynamic locality: skirting physical limits, by arranging data in a smaller space (caches and reuse/locality)
- Parallelism: increasing performance with teams of workers (multicore and cloud)
Finally, the text covers the GPU and machine-learning accelerators that have become important for more and more mainstream applications. The course provides a longer-term understanding of computer capabilities, performance, and limits to the wealth of computer scientists practicing data science, software development, or machine learning.
Édition : Cambridge
ISBN10 : 1316518531
ISBN13 : 9781316518533
- Computing and the Transformation of Society
- Instructions Sets, Software, and Instruction Execution
- Processors and Scaling: Small is Fast!
- Sequential Abstraction, But Parallel Implementation
- Memories: Exploiting Dynamic Locality
- The General Purpose Computer
- Beyond Sequential: Parallelism in Multicore and the Cloud
- Accelerators: Customized Architectures for Performance
- Computing Performance: Past, Present, and Future
- Appendix - RISC-V Instruction Set Reference Card
La majorité des livres sur l'architecture des ordinateurs porte uniquement sur la conception de processeurs. Pendant ce temps, le public cible a proportionnellement tendance à se réduire, vu le nombre d'utilisateurs à la recherche de performance lors de l'écriture de programmes (qu'ils aient pour objectif de faire avancer la science ou d'analyser des données). L'auteur ne rentre donc pas dans les détails d'implémentation des processeurs, en présentant les principes de conception plutôt que les mécanismes précis.
Au contraire, il reste à un niveau d'abstraction plus haut, ce qui ne facilite pas la compréhension fine du fonctionnement des bases d'un processeur, mais donne rapidement les idées principales derrière les attaques Spectre et Meltdown. Ceux qui souhaitent toutefois approfondir les sujets pourront profiter des sections de fin de chapitre, présentant les références académiques principales et des sources d'information pour les détails.
L'ouvrage vise un public qui n'a pas forcément une formation approfondie en informatique et introduit notamment les bases des compilateurs, surtout pour montrer comment les instructions de base (conditions, tableaux, structures, etc.) sont transformées en assembleur. L'auteur pose le choix de RISC-V comme exemple d'assembleur, surtout pour la simplicité de l'architecture ; il n'empêche qu'il présente également les processeurs x86 et ARM actuels. Le livre se termine sur des sujets plus avancés, comme les accélérateurs de plus en plus disponibles (processeurs graphiques ou spécifiques aux réseaux neuronaux) et les architectures infonuagiques (avec une brève introduction à la conception de systèmes).
Mining of Massive Datasets
Résumé de l'éditeur
The Web, social media, mobile activity, sensors, Internet commerce and so on all provide many extremely large datasets from which information can be gleaned by data mining. This book focuses on practical algorithms that have been used to solve key problems in data mining and can be used on even the largest datasets.
It begins with a discussion of the MapReduce framework and related techniques for efficient parallel programming. The tricks of locality-sensitive hashing are explained. This body of knowledge, which deserves to be more widely known, is essential when seeking similar objects in a very large collection without having to compare each pair of objects. Stream-processing algorithms for mining data that arrives too fast for exhaustive processing are also explained. The PageRank idea and related tricks for organizing the Web are covered next. Other chapters cover the problems of finding frequent itemsets and clustering, each from the point of view that the data is too large to fit in main memory. Two applications: recommendation systems and Web advertising, each vital in e-commerce, are treated in detail. Later chapters cover algorithms for analyzing social-network graphs, compressing large-scale data, and machine learning.
This third edition includes new and extended coverage on decision trees, deep learning, and mining social-network graphs. Written by leading authorities in database and Web technologies, it is essential reading for students and practitioners alike.
Édition : Cambridge
ISBN10 : 1108476341
ISBN13 : 9781108476348
- Data Mining
- Map-Reduce and the New Software Stack
- Finding Similar Items
- Mining Data Streams
- Link Analysis
- Frequent Itemsets
- Clustering
- Advertising on the Web
- Recommendation Systems
- Mining Social-Network Graphs
- Dimensionality Reduction
- Large-Scale Machine Learning
- Neural Nets and Deep Learning
Pour l'analyse de grands jeux de données, ceux qui ne tiennent pas sur une seule machine, on trouve souvent des livres sur les techniques de programmation des grappes de calcul (que ce soit avec des techniques de superordinateurs comme MPI ou les plus récentes comme MapReduce ou Hadoop) ou sur les algorithmes utiles (sans réfléchir à leur implémentation à grande échelle). Cet ouvrage se situe à l'intersection des deux domaines, en présentant des méthodologies pour extraire de l'information de ces données tout en répartissant les calculs sur plusieurs machines. Il part de prérequis modestes en bases de données (pas forcément distribuées), algorithmes (sans qu'il s'agisse d'analyse de données) ou programmation.
Les auteurs commencent par présenter un environnement de programmation distribué, MapReduce. Certes, ce n'est pas le plus récent, mais il reste très utilisé en pratique et force à réfléchir à la distribution des calculs et des données sur plusieurs machines. Par la suite, les auteurs utilisent ce paradigme pour expliciter la manière d'implémenter les algorithmes qu'ils présentent (sans toutefois proposer d'exemple de code), afin de comprendre en profondeur ces techniques.
L'essentiel de l'ouvrage porte sur les algorithmes utiles pour l'analyse de données, y compris l'apprentissage automatique. En sus, deux applications très pratiques sont décortiquées : la recommandation et la publicité en ligne. Les sujets traités commencent avec les bases (comme l'évaluation de statistiques de manière efficace), mais montent rapidement en puissance (par exemple, le calcul en ligne de couplages ou le locality-sensitive hashing), en partant d'un contexte d'application.
La majorité des chapitres comporte une section sur la distribution des calculs sur une grappe en indiquant les principes à appliquer pour réaliser cette distribution de manière efficace. Les auteurs présentent aussi des approximations dans certains cas pour obtenir de meilleurs temps de calcul (au détriment de la qualité des réponses obtenues). Leur objectif est toujours de mettre en avant les principes appliqués, de telle sorte qu'on puisse les réutiliser dans d'autres contextes.
Chaque chapitre contient une série d'exercices (sans solution, mais certains ont des corrections automatiques en ligne), des notes bibliographiques, mais aussi un résumé des idées principales. L'un des plus gros regrets sur ce livre est que seuls les principes de l'apprentissage profond soient présentés, sans indiquer comment répartir les calculs.
À noter que les auteurs mettent la version PDF du livre à disposition sur le site du cours à Stanford dont l'ouvrage est issu.
Foundations of Data Science
Résumé de l'éditeur
This book provides an introduction to the mathematical and algorithmic foundations of data science, including machine learning, high-dimensional geometry, and analysis of large networks. Topics include the counterintuitive nature of data in high dimensions, important linear algebraic techniques such as singular value decomposition, the theory of random walks and Markov chains, the fundamentals of and important algorithms for machine learning, algorithms and analysis for clustering, probabilistic models for large networks, representation learning including topic modelling and non-negative matrix factorization, wavelets and compressed sensing. Important probabilistic techniques are developed including the law of large numbers, tail inequalities, analysis of random projections, generalization guarantees in machine learning, and moment methods for analysis of phase transitions in large random graphs. Additionally, important structural and complexity measures are discussed such as matrix norms and VC-dimension. This book is suitable for both undergraduate and graduate courses in the design and analysis of algorithms for data.
Édition : Cambridge
ISBN10 : 1108485065
ISBN13 : 9781108485067
- Introduction
- High-Dimensional Space
- Best-Fit Subspaces and Singular Value Decomposition (SVD)
- Random Walks and Markov Chains
- Machine Learning
- Algorithms for Massive Data Problems: Streaming, Sketching, and Sampling
- Clustering
- Random Graphs
- Topic Models, Nonnegative Matrix Factorization, Hidden Markov Models, and Graphical Models
- Other Topics
- Wavelets
- Background Material
Beaucoup de gens l'oublient, la science des données tire ses racines dans les mathématiques, notamment les statistiques. Ce livre agira sûrement comme une piqûre de rappel, étant donné qu'il fournit une introduction aux principes mathématiques sous-jacents. Ces sujets ne sont pas abordés sous un angle purement théorique, mais véritablement de mathématiques appliquées : les théorèmes proposés sont souvent des preuves de convergence d'algorithmes très utilisés, les outils théoriques sont utiles dans le domaine spécifique de la science des données (comme la dimension VC), par exemple. Cela permet aux auteurs de construire les algorithmes depuis les principes de base.
Contrairement à ce que l'on pourrait croire, toutefois, les prérequis sont assez faibles (des bases en statistiques, en algèbre linéaire, en programmation). La majorité des résultats basiques très utiles de ces domaines sont d'ailleurs prouvés. Les auteurs présentent de manière rigoureuse et claire les principes utilisés en science des données, aidés en cela par un choix de notations cohérent. Ils ne se limitent pas aux sujets les plus basiques (chaînes de Markov, SVD, etc.), ils explorent aussi les flux de données et les enjeux qui en découlent, tout en présentant des techniques moins omniprésentes comme l'acquisition comprimée ou les vaguelettes.
Chaque chapitre présente une série d'exercices, mais sans solution, en plus d'une liste de références académiques, surtout historiques. On peut regretter que les analyses mathématiques présentées soient véritablement développées pour tous les sujets… sauf l'apprentissage automatique.
A First Course in Random Matrix Theory
For physicists, engineers and data scientists
Résumé de l'éditeur
The real world is perceived and broken down as data, models and algorithms in the eyes of physicists and engineers. Data is noisy by nature and classical statistical tools have so far been successful in dealing with relatively smaller levels of randomness. The recent emergence of Big Data and the required computing power to analyse them have rendered classical tools outdated and insufficient. Tools such as random matrix theory and the study of large sample covariance matrices can efficiently process these big data sets and help make sense of modern, deep learning algorithms. Presenting an introductory calculus course for random matrices, the book focusses on modern concepts in matrix theory, generalising the standard concept of probabilistic independence to non-commuting random variables. Concretely worked out examples and applications to financial engineering and portfolio construction make this unique book an essential tool for physicists, engineers, data analysts, and economists.
Édition : Cambridge
ISBN10 : 1108488080
ISBN13 : 9781108488082
Classical Random Matrix Theory
- Deterministic Matrices
- Wigner Ensemble and Semi-Circle Law
- More on Gaussian Matrices*
- Wishart Ensemble and Marčenko–Pastur Distribution
- Joint Distribution of Eigenvalues
- Eigenvalues and Orthogonal Polynomials*
- The Jacobi Ensemble*
Sums and Products of Random Matrices
- Addition of Random Variables and Brownian Motion
- Dyson Brownian Motion
- Addition of Large Random Matrices
- Free Probabilities
- Free Random Matrices
- The Replica Method*
- Edge Eigenvalues and Outliers
Applications
- Addition and Multiplication: Recipes and Examples
- Products of Many Random Matrices
- Sample Covariance Matrices
- Bayesian Estimation
- Eigenvector Overlaps and Rotationally Invariant Estimators
- Applications to Finance
En science des données, notamment, certains outils sont régulièrement ignorés, par exemple parce que requérant trop de bases mathématiques. Sans nul doute, les matrices aléatoires en font partie. Cet ouvrage développe la théorie sous-jacente, tout en laissant une place aux applications en dehors de cette théorie, qu'elles soient plus ou moins appliquées (analyse de données, économie, physique, etc.). Les auteurs l'ont voulu accessible, introductif et pédagogique, alors qu'il dépasse largement de ce cadre (les chapitres et sections plus avancés sont indiqués par une astérisque ou présentés dans une fonte plus petite).
Le livre s'ouvre sur une liste de notations, chose que l'on aimerait voir plus souvent. Les auteurs font plus souvent appel à l'intuition, par exemple en rappelant des résultats classiques sur des valeurs scalaires, qu'à des développements mathématiques très poussés, même s'ils ne sont pas omis. Le choix des sujets exposés a été guidé par les applications, c'est pour cela que seules les matrices à valeurs réelles sont mises en avant (les nombres complexes et quaternions sont aussi mentionnés, mais le plus souvent en note de base de page) et que l'étude des matrices de covariance est poussée.
The Principles of Deep Learning Theory
An Effective Theory Approach to Understanding Neural Networks
Résumé de l'éditeur
This textbook establishes a theoretical framework for understanding deep learning models of practical relevance. With an approach that borrows from theoretical physics, Roberts and Yaida provide clear and pedagogical explanations of how realistic deep neural networks actually work. To make results from the theoretical forefront accessible, the authors eschew the subject's traditional emphasis on intimidating formality without sacrificing accuracy. Straightforward and approachable, this volume balances detailed first-principle derivations of novel results with insight and intuition for theorists and practitioners alike. This self-contained textbook is ideal for students and researchers interested in artificial intelligence with minimal prerequisites of linear algebra, calculus, and informal probability theory, and it can easily fill a semester-long course on deep learning theory. For the first time, the exciting practical advances in modern artificial intelligence capabilities can be matched with a set of effective principles, providing a timeless blueprint for theoretical research in deep learning.
Édition : Cambridge
ISBN10 : 1316519333
ISBN13 : 9781316519332
- Initialization
- Pretraining
- Neural Networks
- Effective Theory of Deep Linear Networks at Initialization
- RG Flow of Preactivations
- Effective Theory of Preactivations at Initialization
- Bayesian Learning
- Gradient-Based Learning
- RG Flow of the Neural Tangent Kernel
- Effective Theory of the NTK at Initialization
- Kernel Learning
- Representation Learning
- The End of Training
- Epilogue: Model Complexity from the Macroscopic Perspective
- Information in Deep Learning
- Residual Learning
Les réseaux neuronaux sont, actuellement, bien plus utilisés que compris, la théorie classique de l'apprentissage ayant souvent du mal à expliquer leur efficacité. Cet ouvrage vient expliquer le fonctionnement de ces réseaux en utilisant des techniques éprouvées en physique statistique et thermodynamique, c'est-à-dire en étudiant d'abord le comportement d'une couche de neurones, pour généraliser au réseau complet. Ce faisant, les auteurs n'oublient pas que les réseaux neuronaux sont d'abord un outil pratique, ils n'étudient pas de cas ésotérique, ils cherchent à se rapprocher de la pratique.
Ce tutoriel sur des résultats de recherche très récents se veut très pédagogue et progressif, tout en partant de relativement peu de connaissances en mathématiques : intégrales et dérivées, presque exclusivement ; les autres éléments requis sont expliqués dans le premier chapitre (surtout les intégrales gaussiennes). Les auteurs partent de zéro pour dériver toute la théorie, en n'omettant aucun détail, en se basant sur l'hypothèse que les éléments extérieurs au réseau neuronal (les données ou les poids avant entraînement) suivent des distributions presque gaussiennes. Ils présentent des cas particuliers de leurs résultats avant de les généraliser : un chapitre ne traite que des réseaux linéaires profonds, afin de mettre en place les mécanismes de dérivation et le vocabulaire qui seront utilisés par la suite, par exemple. Ces résultats simples ne sont utilisés que comme marchepied vers des résultats applicables en pratique. Ainsi, ils expliquent théoriquement d'où viennent les problèmes d'explosion et d'évanescence des gradients, les raisons pour lesquelles des réseaux profonds ne surapprennent pas forcément ou encore pourquoi ReLU fonctionne souvent mieux que la tangente hyperbolique.
Machine Learning for Engineers
Résumé de l'éditeur
This self-contained introduction to machine learning, designed from the start with engineers in mind, will equip students with everything they need to start applying machine learning principles and algorithms to real-world engineering problems. With a consistent emphasis on the connections between estimation, detection, information theory, and optimization, it includes: an accessible overview of the relationships between machine learning and signal processing, providing a solid foundation for further study; clear explanations of the differences between state-of-the-art techniques and more classical methods, equipping students with all the understanding they need to make informed technique choices; demonstration of the links between information-theoretical concepts and their practical engineering relevance; reproducible examples using Matlab, enabling hands-on student experimentation. Assuming only a basic understanding of probability and linear algebra, and accompanied by lecture slides and solutions for instructors, this is the ideal introduction to machine learning for engineering students of all disciplines.
Édition : Cambridge
ISBN10 : 1316512827
ISBN13 : 9781316512821
Introduction and Background
- When and How to Use Machine Learning
- Background
Fundamental Concepts and Algorithms
- Inference, or Model-Driven Prediction
- Supervised Learning: Getting Started
- Optimization for Machine Learning
- Supervised Learning: Beyond Least Squares
- Unsupervised Learning
Advanced Tools and Algorithms
- Statistical Learning Theory
- Exponential Family of Distributions
- Variational Inference and Variational Expectation Minimization
- Information-Theoretic Inference and Learning
- Bayesian Learning
Beyond Centralized Single-Task Learning
- Transfer Learning, Multi-task Learning, Continual Learning, and Meta-learning
- Federated Learning
Epilogue
- Beyond This Book
Les livres introductifs sur l'apprentissage automatique ont tendance à se focaliser sur les algorithmes possibles plutôt que sur un public cible. Cet ouvrage s'adresse surtout à un public d'ingénieurs en offrant un point de vue de la théorie de l'information sur le domaine, une théorie qui sert de vocabulaire unifiant. Malgré son titre, l'auteur donne une foultitude de détails mathématiques, tant sur les algorithmes et leurs principes que la théorie de l'apprentissage — les parties les plus avancées sont réservées aux annexes.
Dans un style narratif, l'auteur passe des probabilités élémentaires à une approche bayésienne ou fréquentiste de l'apprentissage, selon les moments. Tous les sujets classiques sont abordés, y compris les réseaux neuronaux profonds, mais sans que les algorithmes occupent la majorité du texte. Le livre démarre sur des principes généraux comme les fonctions de perte ou la maximisation de probabilité a posteriori avant des algorithmes basiques comme la régression linéaire, ce qui donne une impression d'un texte abstrait.
Le livre se termine par des avancées scientifiques récentes, en explorant l'apprentissage fédéré ou par transfert. Pour approfondir ses connaissances, chaque chapitre se termine par une série d'exercices sans correction et une courte bibliographie, contenant surtout des ouvrages plus avancés.
Au tout début, l'auteur nous fournit une liste de notations et d'acronymes. Le code utilisé pour générer les figures est le plus souvent disponible à la fois en Python et en MATLAB.
Gradient Boosting
Exploitez les arbres de décision pour le Machine Learning (XGBoost, CatBoost, LightGBM)
Résumé de l'éditeur
Ce livre sur les méthodes de Gradient Boosting est destiné aux étudiants, universitaires, ingénieurs, data scientist qui souhaitent découvrir en profondeur le fonctionnement de cette technique de Machine Learning utilisée pour construire des ensembles d’arbres de décision.
Tous les concepts sont illustrés par des exemples de code applicatif. Ils permettent au lecteur de reconstruire from scratch sa propre librairie d’entraînement des méthodes de Gradient Boosting. En parallèle, le livre présente les bonnes pratiques de la Data Science et apporte au lecteur un solide bagage technique pour construire des modèles de Machine Learning.
Après une présentation des principes du Gradient Boosting citant les cas d’application, les avantages et les limites, le lecteur s’imprègne des détails de la théorie mathématique. Une implémentation simple est donnée afin d’en illustrer le fonctionnement.
Le lecteur est ensuite armé pour aborder la mise en application et la configuration de ces méthodes. Préparation des données, entraînement, explication d’un modèle, gestion de l’Hyper Parameter Tuning et utilisation des fonctions objectifs sont couverts en détail !
Les derniers chapitres du livre élargissent le sujet vers l’application du Gradient Boosting pour les séries temporelles, la présentation des bibliothèques emblématiques XGBoost, CatBoost et LightGBM ainsi que sur le concept de modèle multi-résolution.
Des éléments complémentaires sont en téléchargement sur le site www.editions-eni.fr.
Édition : ENI
ISBN10 : 2409034020
ISBN13 : 9782409034022
- Avant-propos
- Gradient Boosted Tree : contexte et théorie
- Gradient Boosted Tree : fonctionnement
- Entraîner efficacement un modèle
- Comprendre et expliquer un modèle
- Hyperparameters Tuning
- Du bon usage des fonctions objectifs
- Gradient Boosting pour les séries temporelles
- XGBoost, LightGBM ou CatBoost ?
- Approche multimodèle
- Pour aller plus loin
Le sujet des méthodes de dopage par gradient en apprentissage automatique ne semble pas nécessiter de s'y appesantir trop longtemps : il s'agit d'une énième méthode basée sur des arbres, pourrait-on penser, avec l'avantage de donner d'extrêmement bons résultats dans des compétitions comme celles organisées sur Kaggle. Cependant, les apparences sont trompeuses.
L'ouvrage décrit d'abord le formalisme mathématique derrière les méthodes de dopage par gradient, avant de passer à son implémentation sans utiliser de bibliothèque externe. C'est là l'un des points forts du livre, puisque rien n'est caché derrière un appel de bibliothèque (si ce n'est des détails comme la dérivation de fonctions d'erreur). Ensuite, l'auteur aborde des sujets d'actualité comme l'explication des résultats de l'algorithme, l'optimisation d'hyperparamètres ou l'empilage de modèles (une autre technique ensembliste), même s'ils ne sont pas vraiment reliés au sujet principal (dopage par gradient). L'auteur achève l'ouvrage par les bibliothèques habituelles du domaine et quelques indices sur leur utilisation.
Cependant, les limitations du livre le destinent à un public peu averti des méthodes de dopage par gradient, voire qui n'a jamais cherché à comprendre ces méthodes. On peut regretter la clarté du code pas toujours au top (des fonctions découpées sans chercher la clarté — surtout en ce qui concerne la création des forêts et le calcul des pseudo-résidus —, formatage du code pas adapté à un livre papier) et des sujets où les explications s'arrêtent trop tôt pour bien comprendre comment implémenter les techniques (surtout au niveau de l'arrêt prématuré, mais aussi des optimisations de bibliothèques comme LightGBM ou du fonctionnement des arbres de décision). Certaines formulations sont malheureuses (comme l'implication entre l'abondance de données et le surapprentissage.
Cybersécurité et PowerShell
De l'attaque à la défense du système d'information
Résumé de l'éditeur
Ce livre traite de la sécurité des systèmes d’information à travers le prisme du langage PowerShell. Il s’adresse aux administrateurs système et réseau, experts ou consultants en cybersécurité, chefs de projet ou responsables cyber qui souhaitent comprendre le rôle et les capacités du langage de scripting de Microsoft dans le domaine de la cybersécurité.
L’auteur propose une approche pragmatique et pédagogique de la sécurité qui présente aussi bien les capacités offensives que défensives de PowerShell, le tout illustré par des exemples pratiques à mettre en œuvre au sein d’un laboratoire virtuel.
Dans une première partie dédiée aux aspects offensifs, des premiers chapitres détaillent des exemples d’attaque en PowerShell et vous invitent à développer votre propre ransomware. Vous découvrez également PowerShell Empire, un framework d’attaque open source entièrement basé sur PowerShell.
La seconde partie illustre les possibilités défensives de PowerShell (et la façon de les contourner), comme la signature de code, la mise en place d’une chaîne de certification, les mécanismes comme AMSI (Anti-Malware Scan Interface) ou le mode de langage contraint. La sécurisation des accès à distance avec PowerShell est également étudiée avec WinRM, WMI ou Just Enough Administration. Diverses techniques d’administration nécessaires à la sécurité sont ensuite évoquées, telles que la protection des protocoles SMB et RDP, les comptes de service managés et les abonnements WMI.
Pour finir, une dernière partie appréhende la supervision des environnements Windows et PowerShell avec les mécanismes de journalisation et de centralisation des logs jusqu’à la mise en œuvre d’une infrastructure de supervision SIEM.
Édition : ENI
ISBN10 : 2409034144
ISBN13 : 9782409034145
- Fondamentaux et mise en place du Lab
- Les attaquants et PowerShell
- Malware maison
- PowerShell Empire
- Sécuriser PowerShell
- Restreindre PowerShell
- Défendre son SI avec PowerShell
- Superviser PowerShell
PowerShell est un langage de script récent de Microsoft, très répandu parmi les administrateurs, utilisable depuis quelques années d'ailleurs sous Linux ou macOS. En tant que tel, il est un outil indispensable au quotidien, mais aussi une source d'attaques. Cet ouvrage étudie PowerShell pour ses capacités offensives, mais aussi comme outil d'administration des systèmes Windows avec comme seule application la sécurité. Il ne s'agit pas d'un tutoriel PowerShell, la syntaxe n'est pas étudiée en détail, seulement les éléments essentiels pour qu'une personne sachant déjà programmer puisse voir les possibilités du langage et écrire quelques scripts.
Ce livre est résolument orienté vers la pratique, le premier chapitre vous guide pour le déploiement d'un environnement de test. Cet environnement est exploité dès que possible dans le reste de l'ouvrage pour montrer comment exploiter des vulnérabilités (issues de l'expérience de l'auteur) ou installer des systèmes de récupération des journaux, par exemple.
L'ouvrage est divisé en deux parties opposées. La première s'intéresse à l'attaque, avec le développement d'un rançongiciel basique ou le balayage de ports. Notamment, elle comporte des exemples d'attaques dans le réseau virtuel suggéré, étape par étape, ainsi que des techniques pour éviter la détection de la part des antivirus. La seconde se focalise sur l'administration des systèmes Windows en ce qui concerne leur sécurité. L'outil de base reste PowerShell. L'auteur insiste énormément sur les techniques d'audit automatique à utiliser pour la criminalistique, afin de déterminer les failles qu'un attaquant a utilisées pour pénétrer dans le système.
Photoshop, Illustrator et InDesign 2021
Les fondamentaux
Résumé de l'éditeur
Ce livre de la collection Studio Factory présente les fonctionnalités de base de Photoshop, Illustrator et InDesign. Il est destiné aux graphistes débutants désirant retrouver rapidement comment réaliser telle ou telle manipulation sur un de ces trois logiciels de la suite Adobe.
Sur Photoshop, toutes les techniques de sélection sont détaillées avant d’aborder la gestion des couleurs et l’utilisation des calques qui vous permettront de réaliser tout type de montages photos. Les outils de dessin et les outils Texte sont ensuite présentés afin de vous permettre de personnaliser vos montages. Pour optimiser le rendu de vos images, vous étudierez également les multiples fonctions de retouches et de corrections colorimétriques ainsi que les transformations avant d’appliquer les nombreux filtres disponibles.
Sur Illustrator, vous découvrirez les outils permettant de créer des formes diverses, d’insérer et de mettre en forme du texte et verrez en détail l’utilisation des outils Plume pour la création des tracés. Vous apprendrez à modifier et mettre en valeur les objets en leur appliquant des attributs, des styles, des effets, des transformations.
Sur InDesign, vous découvrirez comment créer une page avec tous les éléments nécessaires à la composition. Ensuite vous y ajouterez des blocs de texte ou d'images et apprendrez à les manipuler. Vous verrez comment mettre en forme le texte, avec notamment les feuilles de styles qui permettent une mise en forme structurée et vous apprendrez à insérer des tableaux bien formatés. Vous découvrirez ensuite comment mettre en valeur les pages avec la gestion des images et des éléments graphiques (dessin, effets...) qui la composent.
Édition : ENI
ISBN10 : 2409035728
ISBN13 : 9782409035722
- Creative Cloud
- Interface
- Bibliothèques
- Notions de base sur les images
- Affichage dans Photoshop
- Documents Photoshop
- Import/export d’images
- Impression d’un document Photoshop
- Réaliser des sélections
- Gestion des sélections
- Sélection et conversion
- Calques Photoshop
- Outils de dessin de Photoshop
- Texte dans Photoshop
- Retouches
- Transformation/modification d’une image
- Corrections colorimétriques
- Filtres
- Affichage dans Illustrator
- Documents Illustrator
- Calques Illustrator
- Outils de dessin d’Illustrator
- Outil Plume
- Modification des tracés
- Texte dans Illustrator
- Formes
- Gestion des objets
- Attributs
- Effets
- Transformation des objets
- Impression d’un document Illustrator
- Documents InDesign
- Blocs
- Texte dans les blocs
- Caractères
- Paragraphes
- Tableaux
- Images dans InDesign
- Pages
- Graphisme dans InDesign
- Diffusion de documents InDesign
Les logiciels comme ceux de la suite créative d'Adobe sont souvent difficiles à prendre en main, cet ouvrage propose un mode d'emploi pour trois d'entre eux. Il s'intéresse d'abord aux éléments communs des trois interfaces, pour débarquer ensuite en terrain connu, mais aussi à des concepts essentiels comme la résolution. Le livre est à jour et présente les nouveautés de la suite graphique en les mettant en évidence.
Chacune des trois parties suivantes se focalise sur un des logiciels, avec une organisation selon les outils disponibles. Les auteurs offrent un panorama complet des possibilités des outils principaux, de telle sorte que le lecteur en sortira outillé pour atteindre son but pour ses réalisations graphiques. Cependant, ces fonctionnalités ne sont pas mises en perspective, par exemple pour la réalisation d'un projet complet.
L'index mélange les trois logiciels, mais les spécificités de chacun sont toujours prises en compte pour éviter de perdre le lecteur. Un glossaire offre une aide intéressante pour les termes techniques (aussi détaillés dans le reste du texte). On peut regretter que le livre soit imprimé en noir et blanc, mais cela ne gêne pas lors de la lecture.
Sécurité informatique
Ethical Hacking : Apprendre l'attaque pour mieux se défendre
Résumé de l'éditeur
Ce livre sur la sécurité informatique (et le ethical hacking) s'adresse à tout informaticien sensibilisé au concept de la sécurité informatique mais novice ou débutant dans le domaine de la sécurité des systèmes d'information. Il a pour objectif d'initier le lecteur aux techniques des attaquants pour lui apprendre comment se défendre.
Cette nouvelle édition tient compte de l'actualité en matière de sécurité informatique et voit l'apparition de trois nouveaux chapitres qui traitent de la sécurité des mobiles, des voitures connectées et de l'étude des malwares.
L'ouvrage commence par vous plonger dans le monde de la cybersécurité afin de vous en présenter le fonctionnement, l'esprit et les différents acteurs. Vous y trouverez ainsi une définition précise des différents types de hackers et de leurs objectifs. Le chapitre sur le Social Engineering, ou manipulation sociale, illustrera pourquoi les failles humaines représentent plus de 60% des attaques réussies. Il sera suivi de celui sur le Black Market, véritable plateforme de revente de données subtilisées et de solutions malveillantes. Le chapitre sur la prise d'empreintes, indispensable à la préparation d'un audit (et des attaques !) présentera la méthodologie d'une attaque et la recherche d'informations ciblées et de failles exploitables. Arrive ensuite le cœur du sujet que sont les failles système sous Windows ou Linux avec l'arrivée des nouvelles versions de ces systèmes, ainsi que les failles réseaux et Wi-Fi illustrées avec à chaque fois des propositions de contre-mesures. La sécurité sur le Web est également traitée et les failles courantes identifiées à l'aide d'outils qui peuvent facilement être mis en place par le lecteur sur ses propres systèmes. L'objectif est toujours d'identifier les failles possibles pour ensuite mettre en place la stratégie de protection adaptée. Viennent ensuite les failles applicatives introduisant quelques éléments pour se familiariser au langage assembleur et ainsi mieux comprendre les possibilités d'attaque.
Suivent les chapitres sur le Forensic ou la recherche de preuves de compromission ainsi qu’une introduction sur l'étude des malwares, la sécurité des mobiles entrés dans notre quotidien, les failles matérielles (internet des objets), les Box, omniprésentes dans nos maisons, et la sécurité des véhicules connectés désormais concernés par les cyberattaques. Pour finir les aspects juridiques seront traités dans un dernier chapitre qui intègre notamment les dispositions du Règlement européen sur la Protection des Données (RGPD/GDPR).
Les auteurs de ce livre composent une équipe de personnes de conviction qui se donnent pour mission de rendre la sécurité informatique accessible à tous : "Apprendre l'attaque pour mieux se défendre" est leur adage. Hackers blancs dans l'âme, ils ouvrent au lecteur les portes de la connaissance underground. Tous sont membres de l'association ACISSI (Audit, Conseil, Installation et Sécurisation des Systèmes d'Information) qui est une association à but non lucratif qui conseille sur les enjeux de la sécurité informatique.
Édition : ENI
ISBN10 : 2409033660
ISBN13 : 9782409033667
- Introduction et définitions
- Éléments d’ingénierie sociale
- Black Market
- Prise d'empreinte ou Information Gathering
- Les failles système
- Les failles réseau
- La sécurité des communications sans fil
- Les failles web
- Les failles applicatives
- Forensic
- Malwares : étude des codes malveillants
- Les appareils mobiles : failles et investigations
- Les failles matérielles
- La sécurité des box
- Hacking du véhicule connecté
- Risques juridiques et solutions
Tous les systèmes informatiques sont faillibles, mais on n'en prend bien souvent conscience que quand il est trop tard, par exemple après une attaque informatique. Ce livre propose une approche plus proactive de la sécurité informatique, avec un point de vue systémique. Les auteurs prennent le point de vue d'un attaquant pour explorer les divers aspects de la sécurité. La sécurité des applications est abordée, mais ce n'est pas le point fort de l'ouvrage.
Le livre est structuré selon les étapes d'un test de pénétration, en commençant par exploiter la partie humaine de tout système informatique avant de passer à la technique proprement dite. Les domaines couverts passent des réseaux sans fil aux voitures, en utilisant parfois du matériel pour effectuer certaines attaques. Certaines approches sont rarement présentées dans des livres généralistes comme celui-ci, probablement parce qu'elles tiennent beaucoup du bricolage, mais elles montrent aussi à quel point il est facile et bon marché d'attaquer des systèmes sans fil.
Les auteurs ont toujours à cœur la pratique plutôt que l'exposition théorique. Par exemple, ils montrent l'utilisation de certains techniques ou outils, par exemple dans des sessions réelles, en mettant en œuvre des situations vraies (comme de véritables virus ou WPA2). Certains chapitres vont jusqu'à intégrer des exercices de laboratoire à réaliser chez soi. On pourrait toutefois regretter que la partie sur l'ingénierie sociale ne présente pas plus d'exemples, même si c'est déjà l'un des plus longs chapitres.
Néanmoins, on sent que le livre en est à sa sixième édition et qu'il n'a pas été intégralement révisé. Par exemple, la section sur les failles système est en bonne partie restée à l'époque de Windows XP, dans la partie réseau, WPA2 est toujours la version la plus sécurisée.
The Staff Engineer's Path
A Guide for Individual Contributors Navigating Growth and Change
Résumé de l'éditeur
For years, companies have rewarded their most effective engineers with management positions. But treating management as the default path for an engineer with leadership ability doesn't serve the industry well--or the engineer. The staff engineer's path allows engineers to contribute at a high level as role models, driving big projects, determining technical strategy, and raising everyone's skills.
This in-depth book shows you how to understand your role, manage your time, master strategic thinking, and set the standard for technical work. You'll read about how to be a leader without direct authority, how to plan ahead to make the right technical decisions, and how to make everyone around you better, while still growing as an expert in your domain.
By exploring the three pillars of a staff engineer's job, Tanya Reilly, a veteran of the staff engineer track, shows you how to:
- Take a broad, strategic view when thinking about your work
- Dive into practical tactics for making projects succeed
- Determine what "good engineering" means in your organization
Édition : O'Reilly
ISBN10 : 1098118731
ISBN13 : 9781098118730
- Introduction
The Big Picture
- What Would You Say You Do Here?
- Three Maps
- Creating the Big Picture
Execution
- Finite Time
- Leading Big Projects
- Why Have We Stopped?
Leveling Up
- You’re a Role Model Now (Sorry)
- Good Influence at Scale
- What’s Next?
Dans certaines entreprises informatiques, un développeur peut terminer sa carrière en ayant les mains dans le cambouis, sans nécessairement devenir manager : on dépasse les titres de junior et senior pour atteindre, notamment, celui de staff engineer (ou autre, selon l'entreprise). Le titre change, mais la fonction aussi, sans qu'on soit forcément prêt à en assumer les conséquences. Cet ouvrage cherche justement à répondre à toutes les questions d'une personne que l'on vient de nommer staff engineer — la première étant de savoir ce que fait un staff engineer, au juste.
L'auteur, dans un style facile à lire et loin d'être dénué d'humour, présente toutes les facettes du métier. Son objectif est de fournir des outils pour qu'une personne qui vient d'être nommée staff engineer sache ce que l'on attend d'elle, par exemple pour la répartition de son temps. Pour autant, le livre n'est probablement pas le plus utile à ce niveau, il donne aussi des astuces pour comprendre le fonctionnement d'une entreprise et s'y retrouver, notamment en vue d'obtenir une promotion comme staff engineer ou simplement pour mener un projet à bon port. Certains chapitres se focalisent sur les aspects politiques d'une grande entreprise, quand d'autres abordent des compétences plus particulières à développer, qu'il s'agisse de savoir-faire ou de savoir-être.
L'ouvrage suit le parcours d'un développeur informatique sans spécialité particulière, surtout afin d'être générique : l'essentiel du contenu est prévu pour s'adapter à ceux qui travaillent dans la donnée ou la conception de systèmes, par exemple. Par moments, on aimerait bien plus de détails concrets sur la manière d'appliquer certains conseils, assez abstraits, quand à d'autres l'auteure raconte son expérience pratique, très concrète.
Natural Language Processing with Transformers
Building Language Applications with Hugging Face
Résumé de l'éditeur
Since their introduction in 2017, transformers have quickly become the dominant architecture for achieving state-of-the-art results on a variety of natural language processing tasks. If you're a data scientist or coder, this practical book -now revised in full color- shows you how to train and scale these large models using Hugging Face Transformers, a Python-based deep learning library.
Transformers have been used to write realistic news stories, improve Google Search queries, and even create chatbots that tell corny jokes. In this guide, authors Lewis Tunstall, Leandro von Werra, and Thomas Wolf, among the creators of Hugging Face Transformers, use a hands-on approach to teach you how transformers work and how to integrate them in your applications. You'll quickly learn a variety of tasks they can help you solve.
- Build, debug, and optimize transformer models for core NLP tasks, such as text classification, named entity recognition, and question answering
- Learn how transformers can be used for cross-lingual transfer learning
- Apply transformers in real-world scenarios where labeled data is scarce
- Make transformer models efficient for deployment using techniques such as distillation, pruning, and quantization
- Train transformers from scratch and learn how to scale to multiple GPUs and distributed environments
Édition : O'Reilly
ISBN10 : 1098136799
ISBN13 : 9781098136796
- Hello Transformers
- Text Classification
- Transformer Anatomy
- Multilingual Named Entity Recognition
- Text Generation
- Summarization
- Question Answering
- Making Transformers Efficient in Production
- Dealing with Few to No Labels
- Training Transformers from Scratch
- Future Directions
L'actualité déborde d'articles sur les dernières prouesses de l'« intelligence artificielle », c'est-à-dire bien souvent ChatGPT ou un équivalent. Cet ouvrage propose un aperçu de la bibliothèque Python principale pour faire la une des journaux, Hugging Face Transformers. Bien qu'elle ne soit pas uniquement utilisable pour du traitement de texte, c'est néanmoins presque toujours le cas et le livre ne considère également presque que les applications avec du texte.
L'ouvrage consiste surtout en un tutoriel pour cette bibliothèque, il est organisé selon les applications que l'on souhaite en réaliser. Chaque chapitre contient plusieurs exemples d'utilisation, simples et bien conçus, après une courte introduction sur les principes mis en œuvre. Les premières utilisations de la bibliothèque sont assez simples, avec uniquement des modèles préentraînés, mais le dernier chapitre montre comment réaliser son propre modèle à base de transformateurs de zéro.
Un chapitre est dédié à la technique des transformateurs, le cœur des modèles offerts par Hugging Face Transformers. Celui-ci est un peu court pour bien comprendre le principe, mais il en donne un aperçu suffisant. Régulièrement, les auteurs donnent des liens vers la littérature scientifique afin d'approfondir ses connaissances.
Les auteurs considèrent que le lecteur connaît déjà Python et a quelques bases en apprentissage profond, même si ces dernières ne sont pas véritablement utiles pour profiter de la majorité du livre. Seule l'utilisation de la bibliothèque PyTorch est détaillée, bien que Hugging Face Transformers puisse aussi utiliser TensorFlow (expédiée en une section). Cependant, aucune connaissance en traitement de texte n'est requise.
À l'achat, préférez l'édition révisée : outre quelques corrections par rapport à la première édition, elle est imprimée en couleur, ce qui se révèle utile à la lecture.
Practical Simulations for Machine Learning
Using Synthetic Data for AI
Résumé de l'éditeur
Simulation and synthesis are core parts of the future of AI and machine learning. Consider: programmers, data scientists, and machine learning engineers can create the brain of a self-driving car without the car. Rather than use information from the real world, you can synthesize artificial data using simulations to train traditional machine learning models.Thatâ??s just the beginning.
With this practical book, youâ??ll explore the possibilities of simulation- and synthesis-based machine learning and AI, concentrating on deep reinforcement learning and imitation learning techniques. AI and ML are increasingly data driven, and simulations are a powerful, engaging way to unlock their full potential.
You'll learn how to:
- Design an approach for solving ML and AI problems using simulations with the Unity engine
- Use a game engine to synthesize images for use as training data
- Create simulation environments designed for training deep reinforcement learning and imitation learning models
- Use and apply efficient general-purpose algorithms for simulation-based ML, such as proximal policy optimization
- Train a variety of ML models using different approaches
- Enable ML tools to work with industry-standard game development tools, using PyTorch, and the Unity ML-Agents and Perception Toolkits
Édition : O'Reilly
ISBN10 : 1492089923
ISBN13 : 9781492089926
The Basics of Simulation and Synthesis
- Introducing Synthesis and Simulation
- Creating Your First Simulation
- Creating Your First Synthesized Data
Simulating Worlds for Fun and Profit
- Creating a More Advanced Simulation
- Creating a Self-Driving Car
- Introducing Imitation Learning
- Advanced Imitation Learning
- Introducing Curriculum Learning
- Cooperative Learning
- Using Cameras in Simulations
- Working with Python
- Under the Hood and Beyond
Synthetic Data, Real Results
- Creating More Advanced Synthesized Data
- Synthetic Shopping
On trouve une pléthore de livres sur l'intelligence artificielle, mais celui-ci couvre un domaine encore peu exploré : l'utilisation d'outils informatiques pour générer des données, pour des systèmes à déployer dans le monde réel (synthèse) ou non (simulation). Plus particulièrement, il s'agit ici d'utiliser Unity et sa bibliothèque Machine Learning Agents Toolkit pour créer des agents par des techniques d'apprentissage par renforcement.
L'ouvrage considère assez peu de prérequis, si ce n'est une habitude de programmation, idéalement en C# et un peu de Python. Les auteurs présentent l'essentiel des fonctionnalités de Unity pour ces cas d'utilisation, ce qui mène à des scènes assez simples. En ce qui concerne l'apprentissage par renforcement, ils introduisent les concepts de base, mais ce n'est clairement pas un livre sur le sujet : tous les exemples utilisent les algorithmes existants de ml-agents, malgré un chapitre d'ouverture pour ceux qui souhaitent coder leur propre technique d'apprentissage par renforcement.
Globalement, cet ouvrage est un tutoriel ml-agents, avec des morceaux de code C# bien expliqués et les idées sous-jacentes détaillées. Les auteurs considèrent que la pratique est essentielle pour intégrer les concepts nécessaires.
Text Analytics
An Introduction to the Science and Applications of Unstructured Information Analysis
Résumé de l'éditeur
Text Analytics: An Introduction to the Science and Applications of Unstructured Information Analysis is a concise and accessible introduction to the science and applications of text analytics (or text mining), which enables automatic knowledge discovery from unstructured information sources, for both industrial and academic purposes. The book introduces the main concepts, models, and computational techniques that enable the reader to solve real decision-making problems arising from textual and/or documentary sources.
Features:
- Easy-to-follow step-by-step concepts and methods
- Every chapter is introduced in a very gentle and intuitive way so students can understand the WHYs, WHAT-IFs, WHAT-IS-THIS-FORs, HOWs, etc. by themselves
- Practical programming exercises in Python for each chapter
- Includes theory and practice for every chapter, summaries, practical coding exercises for target problems, QA, and sample code and data available for download at https://www.routledge.com/Atkinson-Abutridy/p/book/9781032249797
Édition : CRC Press
ISBN10 : 1032245263
ISBN13 : 9781032245263
- Text Analytics
- Natural-Language Processing
- Information Extraction
- Document Representation
- Association Rules Mining
- Corpus-Based Semantic Analysis
- Document Clustering
- Topic Modeling
- Document Categorization
La pratique moderne de l'analyse de texte exploite presque exclusivement les réseaux neuronaux, au point que certains en négligent les bases lors de leur apprentissage. Cet ouvrage se focalise sur les approches plus classiques, sans forcément utiliser de réseau neuronal à chaque étape (les LLM sont cités, mais pas expliqués). L'objectif de l'auteur est de se focaliser sur une compréhension en profondeur des concepts avec une certaine simplicité d'énonciation, sans verser dans la surenchère d'algorithmes. Toutefois, l'ouvrage couvre une grande variété de sujets, même si, au regard de l'actualité, on aurait aimé voir l'aspect génératif mis en avant.
Le lecteur devra s'armer d'une certaine connaissance d'un langage de programmation comme Python, car la pratique est un élément très important de ce livre. Chaque chapitre comporte une section d'exercices en Python, certains guidés, d'autres non, exploitant les données à disposition sur le site du livre.
Les explications font souvent appel à l'intuition pour éviter un formalisme excessif ou pour transmettre une expérience (pourquoi certaines approches fonctionnent dans certains cas et pas dans d'autres, quelles informations une technique particulière pourra récupérer d'un texte, etc.). Il n'empêche que l'approche mathématique est importante pour bien saisir le détail des algorithmes (ce qui nécessite un certain bagage en algèbre linéaire ou probabilités, notamment).
L'ouvrage se termine par un glossaire des mots les plus importants (une chose que l'on aimerait voir bien plus souvent) et une bibliographie académique. Les références bibliographiques sont présentes dans tout le livre et pointent vers des articles pédagogiques ou d'autres livres plutôt que vers les articles introduisant une technique.
Large Outdoor Fire Dynamics
Résumé de l'éditeur
Large Outdoor Fire Dynamics provides the essential knowledge for the hazard evaluation of large outdoor fires, including wildland, WUI (wildland-urban interface), and urban fires. The spread of outdoor fires can be viewed as a successive occurrence of physical and chemical processes - solid fuel combustion, heat transfer to surrounding combustibles, and ignition of heated combustibles - which are explained herein. Engineering equations frequently used in practical hazard analyses are derived and then integrated to implement a computational code predicting fire spread among discretely distributed combustibles. This code facilitates learning the procedure of hazard evaluation for large outdoor fires.
Chapters cover underlying assumptions for analyzing fire spread behavior in large outdoor fires, namely, wind conditions near the ground surface and fundamentals of heat transfer; the physical mechanism of fire spread in and between combustibles, specifically focusing on fire plumes (both reacting and non-reacting) and firebrand dispersal; and the spatial modeling of 3D objects and developing the computational framework for predicting fire spread.
The book is ideal for engineers, researchers, and graduate students in fire safety as well as mechanical engineering, civil engineering, disaster management, safety engineering, and planning. Companion source codes are available online.
Édition : CRC Press
ISBN10 : 0367561689
ISBN13 : 9780367561680
- Introduction
- Wind
- Heat Transfer
- Fire Sources
- Fire Plumes - Quiescent Environment
- Fire Plumes - Windy Environment
- Ignition and Fire Spread Processes
- Firebrands
- Spatial Data Modeling
- Fire Spread Simulation
La modélisation de feux d'extérieur n'est pas un champ nouveau, mais les ouvrages introductifs ont une certaine tendance à ne considérer que les feux de forêt et à ignorer les feux urbains. Ce livre propose une théorie unificatrice de ces deux applications principales, avec tout au plus quelques paragraphes pour traiter de cas particuliers (comme une flamme s'échappant d'une fenêtre).
L'auteur indique clairement l'objectif de résoudre de manière précise des problèmes pratiques de propagation d'incendie, ce à quoi s'attelle le dernier chapitre, avec la présentation d'un solveur libre écrit spécifiquement pour le livre. D'ailleurs, il utilise régulièrement des exemples numériques détaillés pour expliciter son propos. Pour dériver les équations des modèles, il use parfois de raisonnements formels à partir de principes physiques de base, parfois de raisonnements plus intuitifs basés sur des expériences, selon l'état de la recherche. Quand il faut utiliser des paramètres, on trouve toujours un tableau qui donne les valeurs classiques pour les matériaux les plus courants.
Les prérequis sont très importants du côté mathématique (équations aux dérivées partielles, probabilités et statistiques), mais nettement moins pour la physique, les premiers chapitres fournissant une introduction à la météorologie ou aux transferts de chaleur. Pour approfondir, le texte fait régulièrement appel à des articles scientifiques.
Optimization Techniques and their Applications to Mine Systems
Résumé de l'éditeur
This book describes the fundamental and theoretical concepts of optimization algorithms in a systematic manner, along with their potential applications and implementation strategies in mining engineering. It explains basics of systems engineering, linear programming, and integer linear programming, transportation and assignment algorithms, network analysis, dynamic programming, queuing theory and their applications to mine systems. Reliability analysis of mine systems, inventory management in mines, and applications of non-linear optimization in mines are discussed as well. All the optimization algorithms are explained with suitable examples and numerical problems in each of the chapters.
Features include:
- Integrates operations research, reliability, and novel computerized technologies in single volume, with a modern vision of continuous improvement of mining systems.
- Systematically reviews optimization methods and algorithms applied to mining systems including reliability analysis.
- Gives out software-based solutions such as MATLAB®, AMPL, LINDO for the optimization problems.
- All discussed algorithms are supported by examples in each chapter.
- Includes case studies for performance improvement of the mine systems.
This book is aimed primarily at professionals, graduate students, and researchers in mining engineering.
Édition : CRC Press
ISBN10 : 1032060980
ISBN13 : 9781032060989
- Introduction to Mining Systems
- Basics of Probability and Statistics
- Linear Programming and Its Applications to Mining Systems
- Transportation and Assignment Model and Its Applications to Mining Systems
- Integer Linear Programming and Its Applications to Mining Systems
- Dynamic Programming and Its Applications to Mining Systems
- Network Analysis in Project Planning and Its Applications to Mining Systems
- Reliability Analysis of Mining Systems
- Inventory Management in Mines
- Queuing Theory and Its Application in Mines
- Non-linear Optimization Algorithms and Their Applications to Mining Systems
La gestion des mines présente des difficultés particulières lorsqu'il s'agit d'optimiser leur fonctionnement et les gains financiers sont souvent à la hauteur de ces difficultés. Ce livre donne les bases pour s'attaquer à ces situations, en offrant un tour d'horizon des techniques de recherche opérationnelle avec des applications aux mines (optimisation linéaire, files d'attente, fiabilité, gestion d'inventaire, etc.).
Cet ouvrage est introductif et, en tant que tel, présente peu de prérequis : les auteurs rappellent les éléments requis de statistiques, d'optimisation linéaire et en nombres entiers, de systèmes, mais aussi de fonctionnement de mines. De même, les algorithmes sont présentés de manière plutôt informelle, en oscillant du côté de l'intuition, plutôt qu'avec un formalisme mathématique complet.
Chaque chapitre contient des exemples détaillés d'application des techniques dans des situations minières, par exemple en explicitant chaque étape d'un algorithme. La dernière section d'un chapitre est bien souvent une étude de cas plus précise, extrêmement détaillée (en présentant énormément d'éléments sur le fonctionnement de la mine étudiée), mais les techniques de recherche opérationnelle déployées restent basiques. Après cette étude de cas vient une liste d'exercices non résolus, mais le résultat final est indiqué.
Un point très négatif, toutefois, est le peu de soin apporté à la rédaction, avec des erreurs de notation grossières fréquentes (comme la confusion entre union et intersection pour un calcul de probabilités ou une définition de fonction non linéaire qui est forcément polynomiale).
Sparse Polynomial Optimization
Theory and Practice
Résumé de l'éditeur
Many applications, including computer vision, computer arithmetic, deep learning, entanglement in quantum information, graph theory and energy networks, can be successfully tackled within the framework of polynomial optimization, an emerging field with growing research efforts in the last two decades. One key advantage of these techniques is their ability to model a wide range of problems using optimization formulations. Polynomial optimization heavily relies on the moment-sums of squares (moment-SOS) approach proposed by Lasserre, which provides certificates for positive polynomials. On the practical side, however, there is "no free lunch" and such optimization methods usually encompass severe scalability issues. Fortunately, for many applications, including the ones formerly mentioned, we can look at the problem in the eyes and exploit the inherent data structure arising from the cost and constraints describing the problem.
This book presents several research efforts to resolve this scientific challenge with important computational implications. It provides the development of alternative optimization schemes that scale well in terms of computational complexity, at least in some identified class of problems. It also features a unified modeling framework to handle a wide range of applications involving both commutative and noncommutative variables, and to solve concretely large-scale instances. Readers will find a practical section dedicated to the use of available open-source software libraries.
This interdisciplinary monograph is essential reading for students, researchers and professionals interested in solving optimization problems with polynomial input data.
Édition : World Scientific
ISBN10 : 180061294X
ISBN13 : 9781800612945
Preliminary background
- Semidefinite programming and sparse matrices
- Polynomial optimization and the moment-SOS hierarchy
Correlative sparsity
- The moment-SOS hierarchy based on correlative sparsity
- Application in computer arithmetic
- Application in deep networks
- Noncommutative optimization and quantum information
Term sparsity
- The moment-SOS hierarchy based on term sparsity
- Exploiting both correlative and term sparsity
- Application in optimal power flow
- Exploiting term sparsity in noncommutative polynomial optimization
- Application in stability of control systems
- Miscellaneous
L'optimisation sur des polynômes est un domaine de niche, dans le sens où peu de professionnels, que ce soit dans l'industrie ou la recherche, l'utilisent à grande échelle, même si la situation évolue rapidement. Ce livre cherche à montrer à un plus grand public qu'il existe des techniques d'optimisation pour cette famille de problèmes qui fonctionnent à grande échelle ; plus précisément, il s'intéresse à deux manières de gérer la structure des problèmes creux. L'ouvrage se destine à un public de chercheurs dans le domaine, avec notamment une bibliographie chargée par chapitre.
Cet ouvrage est publié dans la même série que The Moment-SOS Hierarchy, sorti en 2020 chez le même éditeur (World Scientific), et le complète. Quand le premier ouvrage (The Moment-SOS Hierarchy) s'intéresse plutôt à la théorie de la hiérarchie de Lasserre, celui-ci (Sparse Polynomial Optimization) se focalise sur des aspects d'implémentation à grande échelle en exploitant leur caractère creux. Notamment, l'ouvrage ne s'intéresse pas qu'à la hiérarchie de Lasserre pour les problèmes polynomiaux. Les auteurs orientent leur livre selon deux manières de caractériser ces problèmes creux, puis explorent des applications tirées de leurs travaux de recherche. Ces mises en pratique sont assez détaillées et positionnent le problème dans son contexte.
Les prérequis pour le lecteur sont assez importants, puisqu'il est censé avoir une bonne maîtrise de l'optimisation linéaire, SOCP, mais surtout SDP, sans oublier de bonnes bases d'algèbre linéaire et de théorie des graphes. Cependant, l'ouvrage ne fait pas preuve de pédagogie, par exemple pour expliquer les extensions particulièrement utiles pour leurs explications, à commencer par les graphes cordaux.
15 énigmes ludiques pour se perfectionner en programmation Python
Résumé de l'éditeur
Que vous soyez passionnés ou amateurs de défis, ces 15 énigmes à résoudre vous permettront de découvrir de nouveaux concepts-clés en informatique.
La difficulté des énigmes est indiquée par un système d’étoiles. En cas de besoin d’un (ou de plusieurs) coup(s) de pouce, trois indices vous mettront progressivement sur la voie de la solution. À la fin du livre, une explication détaillée vous donnera la clé de chaque énigme.
En complément de ces 15 énigmes, de très nombreux encadrés vous présentent les personnages célèbres et les connaissances historiques et techniques du monde de l’informatique.
Édition : Dunod
ISBN10 : 2100855085
ISBN13 : 9782100855087
- Les énigmes à résoudre
- Les indices en cas de besoin
- Les solutions
Pour débuter en informatique, certains préfèrent une approche à base d'énigmes : des problèmes qui ont l'air difficiles, mais que l'on peut résoudre de manière relativement aisée avec des outils informatiques. Cet ouvrage vise ainsi des étudiants en fin de cycle d'études secondaires à orientation scientifique qui savent déjà un peu programmer. Il commence par une petite introduction à la syntaxe de Python avant de partir sur une série de quinze énigmes, de plus en plus difficiles. Au besoin, les énigmes, les indices ou les solutions apportent quelques suppléments dans le langage.
La première énigme est assez facile (le jeu de la vie), mais les dernières deviennent bien plus intéressantes. Les thèmes abordés sont assez variés, elles ne tournent pas toutes autour de l'informatique : on retrouve aussi des situations plus quotidiennes ou en cryptographie, par exemple. Les auteurs introduisent chaque énigme par un contexte historique, quand cela a du sens, mais celui-ci est surtout expliqué dans les solutions.
Les indices sont proposés en trois niveaux, en apportant de plus en plus d'informations sur une solution possible au problème (principes à mettre en œuvre, structures de données utiles, etc.). Les solutions sont très détaillées et mettent l'accent sur les principes algorithmiques plutôt que sur l'implémentation (considérée plutôt comme un détail). Parfois, le niveau de mathématiques requis pour bien comprendre ces solutions est parfois assez élevé, mais il n'est pas nécessaire pour comprendre l'essence.
20 énigmes ludiques pour se perfectionner en cryptographie
Résumé de l'éditeur
Que vous soyez passionnés ou amateurs de défis, ces 20 énigmes à résoudre vous permettent de découvrir de nouveaux concepts-clés en cryptographie.
La difficulté des énigmes est indiquée par un système d’étoiles. Si vous avez besoin d’un (ou de plusieurs) coup(s) de pouce, trois indices vous mettront progressivement sur la voie de la solution. À la fin du livre, une explication détaillée vous donnera la clé de chaque énigme.
En complément de ces 20 énigmes, de très nombreux encadrés vous présentent les techniques qui se cachent derrière les codes secrets les plus célèbres et les personnages historiques qui les ont créés ou les ont « cassés ».
Édition : Dunod
ISBN10 : 2100855115
ISBN13 : 9782100855117
- Les énigmes à résoudre
- Les indices en cas de besoin
- Les solutions
La cryptographie est un domaine où les introductions sont souvent ardues et rébarbatives, car les bases mathématiques nécessaires sont assez évoluées. Cet ouvrage, au contraire, fait découvrir les principes fondamentaux de la cryptographie et de la cryptanalyse moderne à travers des énigmes ludiques avec un niveau de difficulté raisonnable — la plupart des énigmes sont accessibles aux étudiants du secondaire s'ils ont de bonnes bases en mathématiques.
Le niveau des énigmes monte progressivement. Les premières s'intéressent aux attaques statistiques sur la cryptographie de l'antiquité, mais très vite les auteurs s'attaquent à la cryptographie moderne. L'ouvrage est très intéressant dans le sens où il ne se limite pas à des énigmes et à des solutions très détaillées, il propose aussi un point de vue historique sur les méthodes de cryptographie ou le contexte d'attaques.
Les indices sont proposés en trois niveaux, en apportant de plus en plus d'informations sur une solution possible au problème. Les énigmes sont, en majorité, conçues de telle sorte qu'elles peuvent être résolues sans ordinateur.
Applied Graph Theory
An Introduction With Graph Optimization And Algebraic Graph Theory
Résumé de l'éditeur
This book serves as an introduction to graph theory and its applications. It is intended for a senior undergraduate course in graph theory but is also appropriate for beginning graduate students in science or engineering. The book presents a rigorous (proof-based) introduction to graph theory while also discussing applications of the results for solving real-world problems of interest.
The book is divided into four parts. Part 1 covers the combinatorial aspects of graph theory including a discussion of common vocabulary, a discussion of vertex and edge cuts, Eulerian tours, Hamiltonian paths and a characterization of trees. This leads to Part 2, which discusses common combinatorial optimization problems. Spanning trees, shortest path problems and matroids are all discussed, as are maximum flow problems. Part 2 ends with a discussion of graph coloring and a proof of the NP-completeness of the coloring problem. Part 3 introduces the reader to algebraic graph theory, and focuses on Markov chains, centrality computation (e.g., eigenvector centrality and page rank), as well as spectral graph clustering and the graph Laplacian. Part 4 contains additional material on linear programming, which is used to provide an alternative analysis of the maximum flow problem.
Two appendices containing prerequisite material on linear algebra and probability theory are also provided.
Édition : World Scientific
ISBN10 : 9811273103
ISBN13 : 9789811273100
Introduction to Graphs
- Introduction to Graph Theory
- Degree Sequences and Subgraphs
- Walks, Cycles, Cuts, and Centrality
- Bipartite, Acyclic, and Eulerian Graphs
Optimization in Graphs and NP-Completeness
- Trees, Algorithms, and Matroids
- An Introduction to Network Flows and Combinatorial Optimization
- Coloring
Some Algebraic Graph Theory
- Algebraic Graph Theory with Abstract Algebra
- Algebraic Graph Theory with Linear Algebra
- Applications of Algebraic Graph Theory
Linear Programming and Graph Theory
- A Brief Introduction to Linear Programming
- Max Flow/Min Cut with Linear Programming
Appendices
- Fields, Vector Spaces, and Matrices
- A Brief Introduction to Probability Theory
Parmi les principaux sujets des premiers cours d'algorithmes ou de mathématiques discrètes, on retrouve bien souvent la théorie des graphes. Ce livre est destiné à un public d'étudiants en mathématiques ressortant d'un cours sur les preuves. Il présente les fondamentaux de la théorie des graphes et quelques algorithmes classiques (plus courts chemins, arbres couvrants). Cet ouvrage couvre aussi des sujets pas toujours mis en avant, comme les applications de l'algèbre linéaire dans les graphes ou encore l'optimisation linéaire.
Le texte alterne définition, théorèmes et preuves, avec une place très relative laissée aux applications et exemples, même si ceux-ci ne sont pas les plus classiques (par exemple, l'auteur passe une demi-dizaine de pages sur une application des flots au baseball). De manière générale, la théorie guide les exemples qui sont proposés (on aurait plutôt attendu le contraire au vu du titre). Les preuves sont souvent détaillées, mais un certain nombre d'entre elles est cantonné dans les exercices qui achèvent chaque chapitre (sans solution). On retrouve une série d'algorithmes classiques en théorie des graphes, avec des preuves de correction et un calcul de complexité.
Globalement, cet ouvrage cherche à faire une synthèse entre les vues informatique (algorithmique) et mathématique (propriétés fondamentales) de la théorie des graphes, tout en prenant une approche plutôt mathématique. Il se destine surtout à un public d'étudiants en mathématiques, surtout s'ils ne sont pas intéressés par les justifications pratiques des développements théoriques.
Telling Stories with Data
With Applications in R
Résumé de l'éditeur
The book equips students with the end-to-end skills needed to do data science. That means gathering, cleaning, preparing, and sharing data, then using statistical models to analyse data, writing about the results of those models, drawing conclusions from them, and finally, using the cloud to put a model into production, all done in a reproducible way.
At the moment, there are a lot of books that teach data science, but most of them assume that you already have the data. This book fills that gap by detailing how to go about gathering datasets, cleaning and preparing them, before analysing them. There are also a lot of books that teach statistical modelling, but few of them teach how to communicate the results of the models and how they help us learn about the world. Very few data science textbooks cover ethics, and most of those that do, have a token ethics chapter. Finally, reproducibility is not often emphasised in data science books. This book is based around a straight-forward workflow conducted in an ethical and reproducible way: gather data, prepare data, analyse data, and communicate those findings. This book will achieve the goals by working through extensive case studies in terms of gathering and preparing data, and integrating ethics throughout. It is specifically designed around teaching how to write about the data and models, so aspects such as writing are explicitly covered. And finally, the use of GitHub and the open-source statistical language R are built in throughout the book.
Key Features:
- Extensive code examples.
- Ethics integrated throughout.
- Reproducibility integrated throughout.
- Focus on data gathering, messy data, and cleaning data.
- Extensive formative assessment throughout.
Édition : CRC
ISBN10 : 1032134771
ISBN13 : 9781032134772
- Telling stories with data
- Drinking from a fire hose
- Reproducible workflows
Foundations
- Writing research
- Static communication
Communication
- Farm data
- Gather data
- Hunt data
Preparation
- Clean and prepare
- Store and share
Modeling
- Exploratory data analysis
- Linear models
- Generalized linear models
Applications
- Causality from observational data
- Multilevel regression with post-stratification
- Text as data
- Concluding remarks
Bon nombre de gens s'intéressent de plus en plus aux données et cherchent à en faire quelque chose, mais pèchent par manque de connaissance dans le domaine. Ce livre offre une introduction au domaine, sans présupposer de connaissances particulières en informatique (un peu en statistiques). Il couvre bon nombre de sujets importants, comme les statistiques, le traitement de données, la visualisation ou la reproductibilité des résultats, mais n'aborde pas vraiment l'apprentissage automatique, y préférant les approches bayésiennes. Ainsi, l'auteur consacre un chapitre entier à la causalité inférée de données observées (et non d'expériences) ou encore une section à la confidentialité différentielle.
L'ouvrage se distingue par plusieurs caractéristiques, la principale étant l'éthique. Cet aspect est rarement abordé dans la littérature sur la science des données, mais l'auteur lui donne une importance particulière : il analyse bon nombre de situations où l'usage de données sans éthique a mené à des catastrophes évitables, par exemple. Il décortique les effets potentiels des transformations des données aussi selon l'angle éthique. L'auteur insiste sur les meilleures pratiques actuelles en matière de développement, notamment l'inclusion de tests ou la gestion de version (des sujets rarement mis en évidence en dehors du développement informatique classique).
Malgré son titre, le livre ne cherche pas à enseigner R, plutôt les éléments essentiels du langage. Tout le code source utilisé pour le livre (tableaux et figures) est inclus, avec des explications sur les principes sous-jacents, de telle sorte que l'ouvrage reste utile avec d'autres langages de programmation.
Natural Language Processing in the Real World
Text Processing, Analytics, and Classification
Résumé de l'éditeur
Natural Language Processing in the Real World is a practical guide for applying data science and machine learning to build Natural Language Processing (NLP) solutions. Where traditional, academic-taught NLP is often accompanied by a data source or dataset to aid solution building, this book is situated in the real world where there may not be an existing rich dataset.
This book covers the basic concepts behind NLP and text processing and discusses the applications across 15 industry verticals. From data sources and extraction to transformation and modelling, and classic Machine Learning to Deep Learning and Transformers, several popular applications of NLP are discussed and implemented.
This book provides a hands-on and holistic guide for anyone looking to build NLP solutions, from students of Computer Science to those involved in large-scale industrial projects.
Édition : CRC Press
ISBN10 : 1032195339
ISBN13 : 9781032195339
NLP Concepts
- NLP Basics
Data Sources and Extraction
- Data Sources and Extraction
Data Processing and Modeling
- Data Preprocessing and Transformation
- Data Modeling
NLP Applications across Industry Verticals
- NLP Applications – Active Usage
- NLP Applications – Developing Usage
Implementing Advanced NLP Applications
- Information Extraction and Text Transforming Models
- Text Categorisation and Affinities
Implementing NLP Projects in the Real-World
- Chatbots
- Customer Review Analysis
- Recommendations and Predictions
- More Real-World Scenarios and Tips
Le domaine du traitement automatique des langues a vu une énorme évolution ces dernières années, en culminant avec des modèles statistiques comme GPT-4. Cependant, ces améliorations sont restées cantonnées dans des laboratoires industriels ou quelques produits phares. L'objectif de l'ouvrage est de diffuser ces techniques, des plus basiques aux plus avancées (reconnaissance d'entités, traduction, agents conversationnels, recommandations), pour qu'elles soient utilisées à plus grande échelle. L'un de ses traits principaux tient probablement dans un diptyque : la partie IV présente une série de domaines et d'applications potentielles du traitement des langues ; les parties V et VI montrent comment utiliser des bibliothèques existantes pour déployer ces fonctionnalités.
L'auteure considère que le lecteur a une certaine habitude de traiter des données, mais sans connaître les arcanes mathématiques qui sous-tendent les techniques habituelles. Ainsi, on ne voit qu'extrêmement peu de mathématiques dans tout le livre, tout au plus quelques formules quand il est impossible de faire autrement. L'essentiel contenu tourne autour de l'application de la NLP à des cas pratiques, après une introduction donnant les principes généraux. Le texte oublie régulièrement d'être précis (sur des mathématiques, des algorithmes ou de la linguistique) et préfère faire passer l'idée principale. Ainsi, l'auteure ne détaille pas la majorité des algorithmes, préférant montrer comment les utiliser dans une application.
Natural Language Processing in the Real World
Text Processing, Analytics, and Classification
Résumé de l'éditeur
AI has acquired startling new language capabilities in just the past few years. Driven by rapid advances in deep learning, language AI systems are able to write and understand text better than ever before. This trend is enabling new features, products, and entire industries. Through this book's visually educational nature, readers will learn practical tools and concepts they need to use these capabilities today.
You'll understand how to use pretrained large language models for use cases like copywriting and summarization; create semantic search systems that go beyond keyword matching; and use existing libraries and pretrained models for text classification, search, and clusterings.
This book also helps you:
- Understand the architecture of Transformer language models that excel at text generation and representation
- Build advanced LLM pipelines to cluster text documents and explore the topics they cover
- Build semantic search engines that go beyond keyword search, using methods like dense retrieval and rerankers
- Explore how generative models can be used, from prompt engineering all the way to retrieval-augmented generation
- Gain a deeper understanding of how to train LLMs and optimize them for specific applications using generative model fine-tuning, contrastive fine-tuning, and in-context learning
Édition : O'Reilly
ISBN10 : 1098150961
ISBN13 : 9781098150952
- Preface
Understanding Language Models
- An Introduction to Large Language Models
- Tokens and Embeddings
- Looking Inside Large Language Models
Using Pretrained Language Models
- Text Classification
- Text Clustering and Topic Modeling
- Prompt Engineering
- Advanced Text Generation Techniques and Tools
- Semantic Search and Retrieval-Augmented Generation
- Multimodal Large Language Models
Training and Fine-Tuning Language Models
- Creating Text Embedding Models
- Fine-Tuning Representation Models for Classification
- Fine-Tuning Generation Models
- Afterword
Il paraît qu'il s'agit de la prochaine révolution industrielle : tout le monde parle d'IA générative, de grands modèles de langue. Ce livre technique vient démystifier le domaine sans entrer dans les mathématiques. Les auteurs descendent dans les concepts derrière les LLM (la première partie), mais aussi une série d'applications, qu'elles soient à la mode ou aient une utilité directe en entreprise (comme la recherche sémantique ou la classification). En permanence, ils montrent des exemples de code Python pour utiliser les modèles existants ou les améliorer, d'ailleurs disponibles sur GitHub.
L'explication des concepts est probablement le point fort de l'ouvrage. La première partie (trois chapitres) se consacre à l'étude des briques de base dont sont formés les modèles actuels. Les auteurs, avec moult schémas d'une clarté rare (imprimés en couleur), expliquent leur fonctionnement, depuis l'ingestion de texte brut jusqu'à l'inférence, et leurs évolutions récentes. Ils visent à donner une compréhension intuitive de ces modèles, plutôt qu'en forçant sur les formules. Il n'empêche, le lecteur assidu pourra profiter des citations académiques pour approfondir ce pan. On pourra juste regretter que le mélange d'experts (MoE), composante essentielle d'une série de modèles, soit ignoré et que le lecteur soit supposé avoir quelques connaissances en NLP classique (comme TF-IDF).
Les deux autres parties du livre s'intéressent à la mise en pratique, que ce soit des applications directes de modèles existants ou le peaufinage de ces modèles. Les auteurs ne s'arrêtent d'ailleurs pas au texte, notamment avec les modèles multimodaux. Ces études de cas abordent des problématiques proches de la production, comme le temps nécessaire pour l'inférence selon l'utilisation ou la technique de réitération exponentielle.
Cet ouvrage sera donc utile à toute personne curieuse ou intéressée par les applications des LLM. Vous apprendrez rapidement à passer de l'idée à la réalisation de vos projets en comprenant ce que vous faites et avec des idées pour améliorer les résultats.