Rezension: Programming Collective Intelligence

Es gibt wenige Fachbücher, bei denen es schwer fällt sie wieder aus der Hand zu legen, aber dieses gehört dazu. Zu den behandelten Themen gehören K-Means und hierarchisches Clustering, Naive Bayes Classifier, Neuronale Netze, Decision Trees, Support Vector Machines, Matrix-Komponentenanalyse, simulated Annealing, genetische Algorithmen und genetische Programmierung. Statt Formeln werden alle Algorithmen als lauffähiger Python Code vorgestellt, interessante und lauffähige Projekte stehen am Ende jeden Kapitels.

Zusammenfassung

Programming Collective Intelligence richtet sich an Software Entwickler, die sich auf Praxisbezogene Art und Weise mit nützlichen Techniken aus dem Bereich Machine Learning und Adaptive Systeme vertraut machen möchten.

Das Buch verzichtet grösstenteils auf mathematische Formulierungen, sondern vermittelt kurz, prägnant und verständlich die Kernideen der Algorithmen, wie man sie umsetzt, und wozu man sie einsetzt. Am Ende des Buches fühlt man sich ohne weiteres in die Lage versetzt, sofort Projekte auf Basis der gelernten Konzepte umzusetzen.

Das Buch kann man entweder Online kaufen - z.B. bei Amazon - oder bei Oreilly's Safari Bookshelf online lesen, wenn man ein entsprechendes Abo hat (was ich nur empfehlen kann!)

Inhalt

Das Buch beinhaltet sehr viele Themen, aus diesem Grund nenne ich an dieser Stelle zunächst einmal einige wichtige Stichpunkte aus dem Buchinhalt - diese entsprechen nicht unbedingt den Kapitelüberschriften

  1. Einführung in Python
  2. Maschinelles Lernen / Überwachtes / Nicht überwachtes Lernen
  3. Grundlagen, Eigenschaftsvektoren, Metriken
  4. Recommendation Engines / Kollaboratives Filtern
  5. Clustering (K-Means, Hierarchisches Clustering)
  6. Klassifikation und Regression
  7. Naive Bayes Klassifikatoren
  8. Neuronale Netze (MLPs)
  9. Decision Trees
  10. Kernel Methoden und Support Vector Machines
  11. Optimierung
  12. Gradient Descent
  13. Simulated Annealing
  14. Genetische Algorithmen
  15. Genetische Programmierung
  16. Eigenschafts-Extraktion
  17. Komponentenanalyse (Non-Negative Matrix Factorization)
  18. Visualisierungstechniken

All diese Techniken werden jeweils an ganz konkreten Praxisbeispielen erläutert. So werden - unter anderem - ganz nebenbei eine Recommendation Engine für Filme und Musik, eine Suchmaschine die aus Klicks lernt, und eine Anwendung zur Preisvorhersage auf eBay, und ein Spam-Filter entwickelt. Zu keinem Zeitpunkt muss man sich dabei fragen wie irgendwelche Formeln gemeint sein können, denn der Beispielcode ist lauffähig, und man kann sich ggf. alles von der Webseite des Authors herunterladen.

Fazit

Ich kann dieses Buch nur jedem Entwickler und Software Architekten der Interesse an diesen Techniken hat empfehlen. Selbst wenn man die Techniken bereits aus der Theorie kennt, so hilft dieses Buch ungemein, einen Praxisbezug herzustellen.

Zwar fehlen einige wichtige weiterführende Techniken, wie z.B. Singlar Value Decomposition, Random Forest und Adaboost Klassifikatoren, sowie so einiges aus dem Bereich der Regressionstechniken - zudem kann man bei der Breite der Themen natürlich nicht erwarten, dass jedes Thema bis ins letzte Detail hin bearbeitet wird. Aber dies macht gerade den Reiz aus - Dieses Buch senkt die Einstiegsschwelle in diese Themen enorm, und selbst wenn man sie bereits beherrscht, blättert man gerne in diesem Buch wieder ein wenig zurück.

© Kai Londenberg - 2008-2010