Revue: Programming Collective intelligence

Les mêmes algorithmes
Le cours et le livre couvrent grosso modo la même gamme d'algorithmes qui inclue pèle mêle:- Classifieur Bayésien
- Régression linéaire multi-dimensionelle
- Régression logistique
- Réseaux de neurones
- Arbre de décision
- Méthodes à noyau
- SVM
- k-NN
- k-Means
- Clustering hiérarchique
Des méthodes différentes
Le cours et le livre ont cependant des façons très différentes de présenter les algorithmes abordés. Le cours en ligne Machine Learning, même s'il requiert peu de connaissances mathématiques pour être suivi, s'attarde toutefois autour de l'aspect mathématique des algorithmes qui sont globalement introduits de la façon suivante:- un nouveau problème est défini et expliqué par sa représentation géométrique
- la mise en équation est ensuite rapidement expliquée de façon très intuitive
- les grandes étapes de l'algorithme correspondant sont expliquées encore une fois de façon très simple
- les participants sont ensuite invités à expérimenter l'algorithme en l'implémentant avec octave
- en guise de conclusion, les applications pratiques dans divers domaines (médecine, web etc) sont listées rapidement
- définition d'un problème typique du web social
- discutions sur les possibilités d'utiliser un des algorithmes vus précédemment et bien entendu sur leurs limites
- introduction d'un nouvel algorithme avec quelques schémas explicatifs
- présentation du code Python implémentant le nouvel algorithme
- résumé des autres cas typiques d'utilisation de cet algorithme
Des points forts complémentaires ?
Au final j'ai trouvé le livre aussi bien que le cours en ligne très réussis sur le plan didactique: leurs lecteurs et spectateurs sont amenés en douceur à connaître les algorithmes importants du domaine et jusqu'à savoir les implémenter. Cependant il me semble que chacun d'eux a des points forts qui manquent à l'autre. La force du livre Programming Collective Intelligence est tout simplement qu'il propose des programmes entiers écrit avec le langage Python qui est lui-même largement utilisé dans les applications web2.0 ((Je dois quand même préciser que plusieurs revues trouvées sur le web soulignent que le code serait assez buggé mais comme je n'ai lu le code que comme du pseudo-code sans trop aller dans les détails je ne peux laisser les lecteurs attentifs juger par eux-même)) et aussi de montrer comment intégrer les APIs de web-services très connus. A souligner aussi que les deux derniers chapitres ont la bonne idée de résumer l'ensemble des algorithmes présentés dans le livre ainsi que les formules mathématiques importantes.Le point fort du cours en ligne de machine learning c'est de donner des conseils pratiques sur la meilleur façon d'utiliser chacun des algorithmes présentés en allant ainsi bien au-delà de leur simple implémentation. A titre d'exemple (et aussi comme un mémo personnel) voici un résumé très grossier des techniques proposées pour contrôler la qualité d'un apprentissage:
- les courbes d'apprentissages peuvent être calculées en traçant l'évolution de la fonction de coût en fonction d'un paramètre donné (nombre d'itérations, nombre d'exemples etc) en séparant les données en 3 ensembles: 60% pour l'apprentissage (train), 20% pour la validation croisée (cross-validation) et en gardant les 20% restant pour obtenir une mesure fiable de la performance du système.
- Analyser ces courbes permet de détecter les problèmes de biais et de variance
- La qualité de l'apprentissage peut être améliorée en suivant les recettes suivantes:
- contre le biais, utiliser un modèle plus flexible et des contraintes plus souples: plus de caractéristiques, construire des polynômes à partir des caractéristiques, diminuer les paramètres de régularisation, utiliser un modèle plus complexe (polynômes de plus haut degrés, réseaux avec plus de neurones etc)
- contre la variance, utiliser un modèle plus restrictif et des contraintes plus strictes: utiliser plus de données, moins de caractéristiques, augmenter la valeur des paramètres de régularisation et utiliser des modèles plus simples (polynômes de plus petits degrés, réseaux avec moins de neurones...)