Sunday, December 23, 2007

Buchtipp: Programming Collective Intelligence

Meine neueste Buchanschaffung und Buchtipp ist
"Programming Collective Intelligence" von Toby Segaran.


Was der Titel elegant verschweigt (vielleicht um potenzielle Käufer nicht abzuschrecken): Das Buch ist Machine-Learning angewendet auf moderne Web-Anwendungen. Das Inhaltsverzeichnis offenbart dies sehr deutlich. In dem Buch werden behandelt:

  • Clustering (Item-based und Hierachisches)
  • Künstliche Neurale Netzwerke
  • Stochastische Optimierung (Hill-Climbing, Simulated Anneling, etc)
  • Support Vector Machines
  • Naive Bayesian Classifier
  • Decision Tree Learning
  • Genetic Programming
  • Nicht-negative Matrix Faktorisierung

Dies ist schon eine ziemlich beeindruckende Liste von Verfahren. Viel mehr steht im "Mitchell" auch nicht.

Eine Besonderheit des Buches ist die absolute Abwesenheit von Pseudocode. Jeder Algorithmus wird in lauffähigen Python-Code dargestellt. Bei einigen komplexeren Ansätzen finde ich Pseudocode immer noch lesbarer, aber so sinkt die Hürde mit den Algorithmen direkt "zu spielen" ungemein.

Hinzu kommt, dass für jeden Ansatz auch immer praktische Beispiele für das Web angegeben werden. Es werden u.a. Empfehlungen auf Basis von del.icio.us-Daten gegeben, Personen auf Facebook gematcht und Preise auf eBay geschätzt. Alles extrem aktuelle Anwendungen inkl. Input (meist: HTTP-Request and Rest-Webservice und XML parsen) und Output z.B. ein Entscheidungsbaum als Image exportieren) der Ansätze, die in Python-Code dargestellt werden.

Ein weiteres Highlight des Buches z.B. im Vergleich zur Vorlesung "Maschinelles Lernen" ist in meinen Augen die Diskussion über die Auswahl und Parametrisierung der Ansätze. Es wird dargelegt, wann welcher Ansatz möglicherweise bessere Ergebnisse liefert, aber auch welche Auswirkungen Parameter haben und z.B. auch die tendenziellen Unterschiede zwischen Gini-Koeffizienten und Entropy beim Entscheidungsbaum-Lernen. In der Vorlesungen werden die Verfahren zwar skizziert, aber es gibt keine Beispiele realistischer Größe oder andere Hilfestellungen. Dies ist in der Form auch nicht unbedingt Aufgabe der Vorlesung. Ich sehe das Buch deshalb komplementär zur Vorlesung.

Diesen Zweck erfüllt das Buch meiner Meinung nach hervorragend und es macht Lust die Beispiele sofort zu nehmen, auszuführen und weiterzuentwickeln.

Allerdings sind einige Ansätze schon ziemlich abgefahren - Wird genetische Programmierung tatsächlich irgendwo eingesetzt? Auch habe ich teilweise das Gefühl, dass mehr Hintergründe/Theorie notwendig sind, um einige Ansätze auf neue Probleme anwenden zu können. Ob für Entwickler ohne Informatik-Background eine 2-seitige Einführung in Lineare Algebra ausreicht, um nicht-negative Matrixfaktorisierung auf andere Problemen anwenden zu können, bezweifele ich.

No comments:

Post a Comment