Startseite
> Programmierung
> Technologie
> Informatik
> Programmieren von Collective Intelligence: Erstellen von Smart Web 2.0-Anwendungen Bewertung
Programmieren von Collective Intelligence: Erstellen von Smart Web 2.0-Anwendungen
Programming Collective Intelligence: Building Smart Web 2.0 ApplicationsVon Toby Segaran
Rezensionen: 29 | Gesamtbewertung: Durchschnitt
Ausgezeichnet | |
Gut | |
Durchschnitt | |
Schlecht | |
Schrecklich |
Möchten Sie die Kraft hinter Suchrankings, Produktempfehlungen, Social Bookmarking und Online-Matchmaking nutzen? Dieses faszinierende Buch zeigt, wie Sie Web 2.0-Anwendungen erstellen können, um die enorme Datenmenge abzubauen, die von Menschen im Internet erstellt wurde. Mit den ausgeklügelten Algorithmen in diesem Buch können Sie intelligente Programme schreiben, um auf interessante Datensätze zuzugreifen
Rezensionen
Es gibt kein Kapitel über Support Vector Machines, nur einen Abschnitt über die Verwendung von libsvm, einer Bibliothek, die SVM implementiert. Sie sagten, eine eingehende Diskussion über SVM würde den Rahmen des Buches sprengen. Ich bin absolut anderer Meinung; Sie diskutieren neuronale Netze etwas ausführlicher, und meiner Erfahrung nach wurden NNs für SVMs aufgegeben. Warum also nicht ernsthaft über SVMs diskutieren?
Ich hätte mir gewünscht, dass der Abschnitt über Neuronale Netze und genetische Programmierung vollständig entfernt und Kapitel über Eingabe- und Ausgabemöglichkeiten hinzugefügt würden, da sie wirklich im Mittelpunkt Ihrer täglichen Arbeit mit maschinellem Lernen stehen: für die meisten Anwendungen des maschinellen Lernens Es sind 90% Datenmunging, 5% Algorithmen.
Insgesamt denke ich, dass dieses Buch ein guter Ausgangspunkt für Anfänger ohne Erfahrung im maschinellen Lernen ist, aber sie sollten damit rechnen, schnell zu fortgeschritteneren Büchern überzugehen, um die in diesem Buch angesprochenen Techniken tatsächlich anzuwenden. Was einen letzten Punkt aufwirft: Für ein Anfängerbuch gab es keine Bibliographie. Das war sehr überraschend.
Kapitel 12 (die Zusammenfassung) sollte gelesen werden Vor den Rest des Buches lesen. Das meiste davon macht beim ersten Betrachten keinen Sinn, aber das ist der Punkt: Sie haben ein besseres Gefühl dafür, worauf Sie in den anderen Kapiteln achten sollten.
Empfohlen für alle, die gerne in Python programmieren.
Segarans Buch ist momentan und aus gutem Grund sehr beliebt. Es ist eine großartige Übersicht über einige gängige Klassifizierungs- und Erkennungstechniken, die für die Bereitstellung kritischer Dienste im Zusammenhang mit "Web 2.0" nützlich sind. Die Erklärungen und der Code sind leicht zu verstehen, was für ein Buch mit diesem Thema viel aussagt. Was ist das Thema? Ich denke, man kann mit Sicherheit sagen, dass es sich nicht um KI handelt, sondern um Statistiken. Es gibt sicherlich Berührungen mit klassischen KI-Techniken, aber sie werden auf praktische Weise durchgeführt (was mich fragt, ob sie aufgrund dieser Tatsache als KI klassifiziert werden können). Kurz gesagt, es ist eine großartige Lektüre, die so präsentiert wird, dass sie Hacker, Mathematiker oder Ihre gewöhnlichen Programmierer anspricht.
-m
Jeder Algorithmus und jede Idee wird von Python-Quellen begleitet. Ich persönlich mag Python als Sprache nicht, aber der Autor bestätigt, dass er es absichtlich gewählt hat, weil die Algorithmen klar aussehen und die Quelle klein ist und ihr Zweck durch viele Sprachartefakte nicht behindert wird. Das Buch war jedoch so interessant, dass ich vorhabe (wenn ich jemals die Zeit finde :(), alle Beispiele zu nehmen und sie in C # zu machen, und sie dann auf Github zu platzieren.
Das Buch behandelt Klassifizierung und Merkmalsextraktion, überwachte und unbeaufsichtigte Algorithmen, Filterung und Ermittlung sowie Übungen am Ende jedes Kapitels. Hier ist eine kurze Liste:
- Empfehlungen abgeben - Informationen darüber, wie Daten aus Benutzereinstellungen verwendet werden können, um Empfehlungen zu erstellen. Entfernungsmetriken und Finden ähnlicher Gegenstände wie die, die wir mögen, oder Menschen mit ähnlichem Geschmack.
- Erkennen von Gruppen - Informationen zum Klassifizieren von Daten in verschiedene Gruppen. Es werden überwachte und unbeaufsichtigte Methoden beschrieben, hierarchisches Clustering, Dendogramme, Spaltenclustering, K-Means-Clustering und verschiedene Visualisierungsmethoden.
- Suchen und Ranking - Grundsätzlich wird Schritt für Schritt erklärt, wie eine Suchmaschine erstellt wird. Die Worthäufigkeit, die Wortentfernung, die Position eines Dokuments, Zählmethoden, künstliche neuronale Netze, der Google PageRank-Algorithmus, das Extrahieren von Informationen aus Linktext und das Lernen aus Benutzerklicks finden Sie in diesem Kapitel.
- Optimierung - simuliertes Tempern, Bergsteigen, genetische Algorithmen werden hier beschrieben und beispielhaft dargestellt. Das Kapitel befasst sich mit der Optimierung von Problemen wie Reiseplänen und das Beispiel verwendet Daten von Kayak.
- Dokumentfilterung - Ein Kapitel zum Filtern von Dokumenten nach Einstellungen oder zum Entfernen von Spam. Hier finden Sie die Bayes'sche Filterung und die Fisher-Methode.
- Entscheidungsbäume - eine sehr interessante Methode zum Aufteilen von Informationselementen in Gruppen, zwischen denen eine hierarchische Verbindung besteht. Die Beispiele verwenden die Zillow-API
- Bulding-Preismodelle - k-Nächste Nachbarn, gewichtete Nachbarn, Skalierung.
- Erweiterte Klassifizierung - Kernel-Methoden und Support-Vektor-Maschinen. Dies ist ein großartiges Kapitel, das einige ziemlich coole Anwendungen des Data Mining mithilfe der Facebook-API zeigt
- Finden unabhängiger Merkmale - Überprüft die Bayes'sche Klassifizierung und Clusterbildung und schlägt dann die nicht negative Matrixfaktorisierung vor, eine Methode, die Ende der 90er Jahre erfunden wurde, einen leistungsstarken Algorithmus, der Matrixalgebra verwendet, um Merkmale in einem Datensatz zu finden
- Evolving Intelligence - Bingo! Genetische Programmierung leicht gemacht. Wirklich cool.
- Algorithmusübersicht, Bibliotheken von Drittanbietern und mathematische Formeln - Wenn Sie Zweifel hatten, können Sie dieses Buch als Data Mining-Nachschlagewerk verwenden. In den letzten drei Kapiteln werden diese beseitigt. Eine noch präzisere Zusammenfassung der im Buch erläuterten Methoden, in der alle im Buch verwendeten mathematischen Formeln und undurchsichtigen Bibliotheken aufgelistet sind
Fazit: Ich habe das Buch wirklich geliebt und kann es kaum erwarten, es mit einem Computer in der Hand auseinander zu nehmen.
Das Problem war zweifach.
1.) Das Buch enthielt viele Fehler. O'reillys inoffizielle Errata sind mit Beispielen gefüllt, bei denen der Code falsch ist oder die Ausgabe im Buch nicht mit der tatsächlichen Ausgabe übereinstimmt, die Sie erhalten sollten.
2.) Die statistischen Konzepte werden irgendwie überstrichen. Wenn dieses Buch für Programmierer gedacht ist, die etwas über kollektive Intelligenz lernen möchten, hat es bei der Vermittlung der Algorithmen schlechte Arbeit geleistet. Ein Algorithmus / eine Methode wurde eingeführt, ohne viel zu erklären, wie sie funktioniert, sodass Sie am Ende nur den Code kopieren müssen, ohne wirklich zu wissen, wie Sie ihn für Ihre Zwecke erweitern / ändern können.
Das Buch behandelt eine breite Palette von Themen im Zusammenhang mit der Datenanalyse. Es beginnt mit einem einfachen Algorithmus, der Filme empfiehlt, die auf Ihren vorherigen Filmkritiken und den Filmkritiken anderer basieren. Obwohl dies die einfachste Aufgabe innerhalb des Buches war, hielt ich dies für eines der mächtigsten Beispiele. Das Besondere an diesem Kapitel ist, dass die Mathematik hinter der Programmierung sehr einfach war. Ich denke, dies zeigt die Leistungsfähigkeit des Internet und der Web2.0-Systeme. Manchmal ist die Analyse der Daten sehr einfach.
Ich denke auch, dass dieses Kapitel, das sich auf Filmempfehlungen bezieht, auch auf einige der Schwächen des Data Mining hinweist. Die Ergebnisse sind nur so gut wie die gesammelten und analysierten Daten. Wenn ich an meine persönlichen Erfahrungen mit Film- und Musikwebsites denke, die Empfehlungen aussprechen, weiß ich, dass wir noch einen langen Weg vor uns haben, um die Genauigkeit dieser Systeme zu verbessern. Ich denke, die Algorithmen hinter der Programmierung sind solide, aber ich denke, wir vermissen einige kritische Komponenten in der Sammlung der Daten. Bestimmte Datensätze haben etwas sehr Persönliches, von dem ich glaube, dass sie noch fehlen. Ich bezweifle nicht, dass wir irgendwann genauer werden, aber ich denke, wir müssen noch mehr Indikatoren finden, die in die Datensätze aufgenommen werden können.
Ich denke auch, dass in Kapitel 9 eine aussagekräftige Aussage gemacht wurde, als der Autor erklärte: „Eine wichtige Sache, die aus diesem Kapitel entfernt werden sollte, ist, dass es selten möglich ist, einen komplexen Datensatz auf einen Algorithmus zu werfen und zu erwarten, dass er lernt, wie man Dinge genau klassifiziert . Die Wahl des richtigen Algorithmus und die entsprechende Vorverarbeitung der Daten ist häufig erforderlich, um gute Ergebnisse zu erzielen “(S. 197). Dies ist ein Vorläufer des Kapitels „Matchmaking“ mit erweiterten Klassifizierungsstrategien. Während des gesamten Kapitels spricht Segaran über die Rohdaten und erläutert Möglichkeiten zur Umstrukturierung und Normalisierung der Daten. Ich denke das ist wichtig. Beispiel: Konvertieren von Straßenadressdaten, um den tatsächlichen Kilometerstand zwischen zwei Punkten zu erkennen, und Gruppieren von Interessen in Kategorien (z. B. Snowboarden und Skifahren). Ohne diese Art der Vorverarbeitung sind die Vergleiche begrenzt.
Die meisten Rezensionen dieses Buches konzentrieren sich auf die Tatsache, dass es ein Gleichgewicht zwischen Programmierung und mathematischen Berechnungen darstellt. Auf fast jeder Seite gibt es viel Code, aber es gibt wenig mathematische Erklärungen in Bezug auf Formeln. Für fortgeschrittene Mathematiker ist der größte Teil der im Buch verwendeten Mathematik wahrscheinlich bereits bekannt, sodass die Formeln möglicherweise nicht benötigt werden. Im Allgemeinen hätte ich mir mehr theoretische Diskussionen zu den Themen und möglicherweise die Aufnahme detaillierterer Informationen zu den mathematischen Formeln gewünscht. Ich glaube, dass dies das Anwenden von Beispielen im Buch auf andere Datensätze etwas erleichtern würde.
Aufgrund meiner minimalen Programmiererfahrung und meiner minimalen mathematischen Erfahrung stellte ich fest, dass der Python-Code das Buch manchmal verwirrend machte. Ich war nicht daran interessiert, die Programme auszuführen, als ich das Buch las, und bemühte mich daher zu sehr, den Code zu entschlüsseln. Wenn ich mich auf den Text konzentrierte, ging es mir gut. Ich fand die Erklärungen, Tabellen und Diagramme äußerst interessant. Ich habe nie über den Prozess nachgedacht, der hinter Suchmaschinen-Rankings, Spam-Filtern oder Optimierungen steckt, die bei der Empfehlung des besten Reiseverlaufs verwendet werden. Das Buch hat diese Konzepte jedoch hervorragend erklärt.
Ich denke, dass die Aussichten, Datensätze mit Minendaten zu verbinden und „intelligente“ Ergebnisse zu erzielen, besonders groß sind. In meinem Beruf (K-12-Ausbildung) konnte ich sehen, dass diese Konzepte verwendet wurden, um Bewertungsdaten zu analysieren und Unterrichtsentscheidungen für einzelne Schüler zu treffen. Ich habe bereits bestimmte Produkte gesehen, die dies versuchen, aber ich habe nichts gesehen, was eine gründliche Arbeit leistet. Viele Schulen weisen den Schülern derzeit Förderklassen oder Aktivitäten zu, um die Schülerleistung zu steigern. Wenn eine Webanwendung mithilfe der in Kapitel 7 beschriebenen Entscheidungsbaumlogik modellieren könnte, könnten die Schulen die Schülergruppen identifizieren, die in bestimmten Bereichen besondere Hilfe benötigen. Ich denke, diese Art von Lehrlehrer wäre sehr vorteilhaft. All dies hängt natürlich von der Genauigkeit, Spezifität und Gültigkeit der Bewertungsinstrumente ab. Die Bildung hat lange mit diesem Konzept gerungen.
Meine Gesamtbewertung dieses Buches ist 4.5 von 5 Punkten. Obwohl einige der Konzepte und Programmierungen über meinem Kopf lagen, veranlasste es mich, meine Fußgänger-VBA-Projekte zu überdenken und herauszufinden, wie ich Konzepte in diesem Buch für zukünftige Projekte verwenden könnte. Für mich muss ich viel mehr Forschung betreiben, um diese Konzepte zu lernen und umzusetzen, aber ich glaube nicht, dass ich das Zielpublikum für dieses Buch war. Ich denke, das beste Publikum für dieses Buch wäre ein Programmierer, der nur minimale Erfahrung mit der Arbeit mit Live-Web 2.0-Daten hat. Für eine Person mit bereits vorhandenen Programmierkenntnissen und einem soliden Hintergrund in fortgeschrittener Mathematik glaube ich, dass dieses Buch wirklich die Türen für die Erstellung interaktiver Websites oder Anwendungen öffnen würde, die Scraped-Daten verwenden, um die Erfahrung eines Endbenutzers zu verbessern.
Ich werde es noch einmal lesen, um es vollständig zu verstehen.
Ich habe mit diesem Buch einen Umweg gemacht. Nachdem ich es bestellt habe, als es zum ersten Mal erscheint, bemühe ich mich, das gesamte Codebeispiel durchzuarbeiten, anstatt passiv zu lesen, wie ich es mit einem normalen Buch tun würde. Dies ist zwar eine hervorragende Idee, um so praktisch wie möglich zu sein, hat aber auch das Lesen zu einem Projekt gemacht. Leider bin ich zum Scheitern verurteilt, weil es eines der vielen Projekte wurde, die ich immer machen möchte, die aber größtenteils eingestellt wurden. Erst 2012 habe ich endlich das ganze Buch gelesen.
In der Zwischenzeit habe ich viele Themen des maschinellen Lernens separat gelernt, wobei ich mich oft auf viel theoretischere Materialien beziehe. Wenn ich zur Programmierung kollektiver Intelligenz zurückkehre, finde ich sie nicht mehr so aufregend wie früher. Das Lesen von Quellcode ist eigentlich keine gute Möglichkeit, das zugrunde liegende mathematische Modell zu lernen. Und ohne das mathematische Modell kann man die Erkenntnisse aus der Methode nicht vollständig einschätzen.
Das heißt, dieses Buch unterscheidet sich in einer sehr wichtigen Hinsicht von anderen formalen Arbeiten - es hat laufenden Code. Der Code funktioniert nicht nur bei einigen Spielzeugmodellen, sondern soll Ihnen auch zeigen, wie Sie Daten aus verfügbaren Webdiensten abrufen oder den Bildschirm verschrotten. Dies ist eine großartige Ergänzung zum theoretischen Buch, da es Ihnen ein Experimentierkit gibt, das Sie so einfach ausprobieren und basteln können.
Ich war bestürzt, als der Autor sagte, dass man einen dieser Algorithmen nicht einfach auf ein Problem werfen kann; Sie werden viel Zeit damit verbringen, den Algorithmus für Ihren Datensatz zu optimieren. Und Sie müssen es weiter optimieren, wenn sich Ihr Datensatz im Laufe der Zeit ändert. Das ist Scheiße! Ich hatte gehofft, einige schlüsselfertige Lösungen zu finden.
Hier ist eine Beobachtung: Obwohl die besprochenen Algorithmen elegant sind, ist der Code, um sie zu implementieren, nicht! Obwohl die Beispielimplementierungen in einer ausdrucksstarken Sprache (Python) waren, gab es immer noch viel bösen Klebercode, der Sonderzeichen entfernte oder Netzwerkprobleme behandelte. Ich fand das seltsam aussagekräftig. So sehr Informatiker der Idee von "sauberem" Code nachjagen, scheint es, als würde die launische fehlbare reale Welt immer im Weg stehen.
Es gibt ein paar Dinge, die mir daran gefallen haben. Das wichtigste Merkmal des Buches ist seine Breite. Es deckt eine Vielzahl nützlicher Algorithmen ab, von bekannteren Techniken (Baysian-Filter) bis hin zu jüngsten Entwicklungen (Support Vector Machines).
Eine andere Sache, die mir an diesem Buch gefallen hat, waren die Beispielprobleme, bei denen alle reale Datensätze verwenden. RSS-Feeds, die Facebook-API und Live-Flugsuchen werden an verschiedenen Orten verwendet.
Ein hervorragendes Merkmal des Buches ist der Beispielcode, der bei jedem Schritt erstellt wird. In früheren Kapiteln geschriebene generische Algorithmen werden in späteren Kapiteln wiederverwendet oder erweitert. Dies ist nicht nur ein gutes Software-Design, sondern lässt den Leser auch sehen, wie ein Konzept (z. B. Optimierung) in verschiedenen Kontexten angewendet werden kann.
Das Buch nutzt den interaktiven Interpreter großzügig, um die Algorithmen zu untersuchen, und der Code selbst ist ziemlich lesbar (wenn auch nicht fantastisch).
Dieses Buch muss nicht in der richtigen Reihenfolge gelesen werden. Tatsächlich ist meine bescheidene Empfehlung, die Einführung in Kapitel 1 zu lesen und dann mit Kapitel 12, Algorithmuszusammenfassung, fortzufahren. IMO Kapitel 12 ist das Juwel des Buches - es leistet hervorragende Arbeit, indem es die in den Kapiteln 2 bis 11 diskutierten überwachten und unbeaufsichtigten Lerntechniken zusammenfasst und die Stärken und Schwächen für jeden Ansatz aufzeigt. Nach Abschluss von Kapitel 12 würde ich Kapitel 2 lesen, da die Methoden zur Entfernungsberechnung im gesamten Buch verwendet werden, und danach alle anderen Kapitel, die Ihr Interesse wecken.
Aber was auch immer Sie tun, lesen Sie dieses Buch! Wenn Sie als Softwareentwickler im Web arbeiten und die Grundlagen der Webprogrammierung beherrschen, ist dies ein Muss.
Bisher habe ich gesehen, wie man Filmempfehlungen aus einer Liste von Kritikerbewertungen berechnet. Dies ist etwas, worüber ich noch nie nachgedacht habe, und es ist überraschend einfach - im Grunde kommt es darauf an, die verschiedenen Bewertungen als Punkte in einem Diagramm darzustellen.
Eine Sache, die ich bereits schätze, sind die Beispiele für die Manipulation von "Wörterbüchern". Ein Wörterbuch ist eine Python-Datenstruktur (der gesamte Beispielcode ist Python), ähnlich einem Hash. Es ähnelt auch den Hash-ähnlichen JSON-Objekten, die ich normalerweise beim Schreiben von JavaScript-UI-Widgets verwende. Segaran zeigt, wie Wörterbücher erstellt und anschließend transformiert werden, um eine andere Perspektive auf die Ergebnismenge zu erhalten.
Zusammenfassend lässt sich sagen, dass Sie dieses Buch lesen, wenn Sie Programmierer sind, keine Vorkenntnisse zu Themen des maschinellen Lernens haben und eine mathematikfreie Einführung in das Thema wünschen.
Empfehlungen aussprechen:
Er sagt im Grunde, dass die Pearson-Korrelation für Artikel- / Benutzervektoren für Artikel-Artikel- / Benutzer-Benutzer-Simalirität verwendet werden soll ...
Gruppen entdecken:
Hierarchisches Clustering, k-bedeutet Clustering und mehrdimensionale Skalierung. Wieder mit Korrelation.
Suche und Ranking:
Crawlen, Indizieren, Ranking (Häufigkeit, Entfernung, PageRank). Neuronale Netze zum Bestellen von Ergebnissen basierend auf Benutzerklicks.
Optimierung:
Bergsteigen, simuliertes Tempern, genetische Algorithmen.
Dokumentenfilterung:
Naive Bayes, Fisher-Methode.
Vielleicht etwas veraltet, ich bin mir fast sicher, dass Sie 2015 etwas Neues finden können. Aber Sie brauchen trotzdem die Grundlagen. Wenn Sie also einige der oben aufgeführten Themen nicht kennen oder mehr Vertrauen in sie gewinnen möchten, dann Vielleicht ist dieses Buch für Sie nützlich.
- Personen bestimmen, deren Geschmack in Filmen Ihrem eigenen am ähnlichsten ist
- Erraten Sie anhand eines Dokuments, zu welcher Kategorie es gehört
- Finde heraus, an welchen Bands du interessiert sein könntest
Grundsätzlich maschinelles Lernen, Kategorisierung, Inferenz usw.
Die Beispiele sind alle in Python und sie sind klar geschrieben und leicht zu befolgen.
Wenn Sie etwas Zeit zum Herumhacken haben, ist dies ein großartiges Buch, mit dem Sie sich hinsetzen können. Ein Großteil des Inhalts wird täglich von all Ihren Lieblingswebdiensten verwendet. Es ist nicht besonders tiefgreifend oder akademisch, aber ich mag die praktische Natur und Sie können sicherlich detailliertere Literatur finden, wenn Ihr Interesse geweckt ist.
Es wird empfohlen, das zu tun, was Sie lernen, aber der größte Teil des Buches ist verständlich, ohne den Code selbst zu schreiben. Einige Teile, wie die nicht negative Matrixfaktorisierung, wären jedoch wahrscheinlich am besten zu verstehen, wenn der eigentliche Code geschrieben würde getan werden.
Fazit - eine echte lustige Lektüre, obwohl sie sehr technisch ist. Alles in allem eine gute Einführung in das maschinelle Lernen für alle Interessierten.