Posts mit dem Label Big Data werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Big Data werden angezeigt. Alle Posts anzeigen

2015/07/04

MOOC über Big Data & Apache Spark - Teil 3

...Fortsetzung von Teil 2...

Die letzten beiden Wochen des MOOCs sind nun vorbei. Das vorgetragene Material in der vierten Woche handelte von Exploration und Datenqualität. Zwei Themen, die mMn in einer früheren Phase des Kurses besser aufgehoben gewesen wären. Der Inhalt beschränkte sich auch sehr auf Oberflächlichkeiten der beiden Bereiche. Hätte einiges an Zeit gespart, die Videos zu überspringen. Auch das Lab in dieser Woche hätte besser aufbereitet werden können. Die Fragestellung war zwar spannend -Text Analyse auf Produkt-Datensätze von Google und Amazon anwenden -, die Anleitung war aber großteils schwer verständlich und der vorgegebene Lösungsweg mühsam nachzuvollziehen. Die vorgegebenen Hilfsfunktionen, die mit wenig Code zu ergänzen waren, kosteten im Endeffekt mehr Zeit und Nerven, als wenn die komplette Programmlogik neu geschrieben hätte werden müssen. Dieses Lab kostete mir auch die Möglichkeit, 100% der Punkte für den Kurs zu bekommen, da ich die eine Hilfsfunktion bei Frage 4f nicht vor dem Ende der Soft-Deadline lösen konnte. Als ich die Lösung dann endlich hatte, wurden wegen der verspäteten Abgabe Strafpunkte abgezogen. Ein A wird sich dennoch ausgehen ;)

Die fünfte Woche war dann wieder entspannter. Sie bestand nur mehr aus dem letzen Lab des Kurses, das als Übergang zum kommenden MOOC von BerkeleyX, Scalable Machine Learning, gesehen werden kann. Das Lehrmaterial war wieder auf gewohnt hohem didaktischen Niveau und war wirklich lehrreich & spannend. Es ging um die Möglichkeiten mit Spark Maschinelles Lernen umzusetzen, was Dank dessen MLLib Bibliothek auch kein Hexenwerk (nichtmal auf verteilten Systemen) ist. Die Aufgabe beinhaltete, basierend auf einer Teilmenge von Filmbewertungen von MovieLens, ein Vorhersagemodell für Bewertungen, auf Basis von Collaborative Filtering, zu bauen. Am Schluß konnte man ein paar Filme selbst bewerten und erhielt dann eine Vorhersage für jene 20 Filme, die das Modell vorhersagt, dass sie einem am besten gefallen werden (also, dass man sie am besten bewerten wird). Basierend auf nur 10 Filme, die ich in der Aufgabe bewertet habe, waren meine Ergebnisse verblüffend treffsicher (eingedenk der limitierten Daten und Feature Basis):
Ergebnisse von meinem Modell
Die mir bekannten Filme aus der Liste, würde ich tatsächlich alle sehr hoch bewerten. Von einigen habe ich die Story auf Wikipedia gesucht - und sollten mir eigentlich auch zusagen. Somit hatte der MOOC einen zusätzlichen Bonus, nämlich die Einsicht, dass ich mir mal Citizen Kane anschauen sollte ;)

Zusammenfassung

Da der MOOC nun beendet ist, ein kurzes Resümee. Abgesehen von kleineren Schwächen in Woche 4, war "Introduction to Big Data with Apache Spark" ein sehr gut gemachter Kurs. Ich würde sogar sagen, der beste MOOC, den ich bislang -egal auf welcher Plattform- belegt habe. Der vorgetragene Inhalt wurde verständlich aufbereitet und die praktischen Aufgaben hatten definitiv Realitätsbezug - kamen also nicht aus den typischen "Data Science"- und "Machine Learning"-Schubladen wie bei so vielen anderen Lehrmaterialien, die in der Fachliteratur zu finden sind. Im Grunde war das Durcharbeiten des Materials des Kurses sogar lehrreicher als die beiden von mir glesenen Bücher über Spark (Learning Spark: Lightning-Fast Big Data Analysis bzw. Advanced Analytics with Spark: Patterns for Learning from Data at Scale). Insofern freue ich mich jetzt schon sehr auf den kommenden Kurs von BerkeleyX auf edX über Maschinelles Lernen mit Spark, der jetzt auch schon gestartet ist. Praktisch dabei, dass Teile von "Introduction to Big Data with Apache Spark" auch wiederverwendet werden können. Man erspart sich somit eine neue virtuelle Maschine herunter zu laden und das Material der zweiten Woche ist aus dem vorhergegangen MOOC übernommen (inkl. des LABs). Über die Erfahrungen bei diesem MOOC werde ich dann auch die nächsten Wochen mal berichten. 

2015/06/18

MOOC über Big Data & Apache Spark - Teil 2

...Fortsetzung von Teil 1...

3. Woche - Datenstrukturen

In dieser Woche ging es um Datenmanagement. Die beiden Lektionen handelten von strukturierten bzw. semi-strukturierten Daten. Auch die Performance beim IO unterschiedlicher Dateiarten wurde angesprochen.
Lektion 5, über semi-strukturierte Daten, handelte vor allem um tabellarische Strukturen und dem Zusammenspiel von Pandas Dataframes mit Spark. Als Beispiel wurden Server-Log-File Analysen angesprochen und an einer solchen, konnte man sich dann auch im Lab gleich selbst versuchen - konkret an den monatlichen HTTP Requests an einem Server der NASA. Der Schwierigkeitsgrad der Aufgaben wurde schon deutlich erhöht, dafür waren die Aufgabenstellungen auch ganz interessant, weil realitätsnah. 
Die zweite Lektion der Woche handelte von strukturierten Daten. Das war dann natürlich sehr SQL-lastig und alle möglichen joins mit Spark RDD's wurden vorgestellt.

...to be continued...

2015/06/08

MOOC über Big Data & Apache Spark - Teil 1

In diesem Monat war es endlich so weit und der erste von zwei angekündigten MOOCs über Apache Spark wurde auf edX veröffentlicht. Ersterer hat den Titel "Introduction to Big Data with Apache Spark" und meine Erfahrungen dabei werde ich hier teilen. Der Zweite handelt von Maschinellem Lernen mit Spark und wird Ende des Monats starten. Da ich mich in letzter Zeit öfter mal nebenbei mit Spark zu Weiterbildungszwecken beschäftigt habe (Learning Spark: Lightning-Fast Big Data Analysis gelesen und Advanced Analytics with Spark: Patterns for Learning from Data at Scale gerade durcharbeite), passen die MOOCs da auch gerade gut dazu.

1. Woche - Introduction 

Der Einführungskurs in Big Data Analyse und Spark ist letzte Woche gestartet und soll 5 Wochen lange dauern. In Beispielen der Lektionen und Programmieraufgaben wird PySpark (die Python-API von Spark) anstatt Scala verwendet.
In den beiden ersten Lektionen ging es darum, Verständnis zu schaffen, was Big Data ist und welche datenwissenschaftliche Methoden es gibt. Der Inhalt in den Lektionen ist klar strukturiert und wird von Anthony D. Joseph verständlich präsentiert. Da es sich um eine Einführung handelt und die Themen generell komplex und unklar abgegrenzt sind, bleibt es verständlicherweise bei Oberflächlichem.
Die Beurteilung von TeilnehmerInnen erfolgt zu einem kleinen Teil über kurze MC Fragen in den Lektionen und vor allem über die wöchentlichen Labs, in denen programmiert wird. Besonders positiv hervor zu heben ist dabei das Design der Labs. Um die verteilte Ausführung zu simulieren, wird eine bereitgestellte virtuelle Maschine, welche die relevanten Programme ausführt, als Worker installiert und als Treiberprogramm laufen die Labs als IPython Notebooks im lokalen Browser. Der bearbeitete Programmcode wird als Python Skript gepeichert und dann auf edX hochgeladen, um den Code durch einen Autograder überprüfen zu lassen. Die Einrichtung des beschriebenen Setups für die Labs und das Durchführen einer Test Benotung ist dann auch die zu erledigende Aufgabe in der ersten Woche.

2. Woche - Getting started

Die zweite Woche startet mit einer eher theoretischen Lektion über die Voraussetzungen für Computersysteme, um mit Big Data umgehen zu können und wie diese in Spark umgesetzt sind. In der vierten Lektion wird dann endlich in die Logik von Spark eingeführt. RDDs, Transformations, Actions, das Daten Caching, Key-Value RDDs und besondere Variable (Broadcast V und Accumulatoren) werden erklärt.
Im Lab für die zweite Woche kann zuerst ein (unbenotetes) Tutorium absolviert werden. In der eigentlichen Aufgabe werden die Anforderungen graduell gesteigert und es muss ein WordCount Skript zum zählen von Wörtern in einem Textdokument (Texte von Shakespear) erstellt werden. Das Lab versucht praxisnah zu sein, was auch überwiegend gelingt. Die große Herausforderung, an geeignete Daten zu kommen, wird nicht umgesetzt, dafür muss der vorhandene Datensatz aber (zumindest rudimentär) bereinigt und effizient weiterverarbeitet werden. Überhaupt wird bislang in diesem MOOC ein Fokus auf die effiziente Verteilung, Analyse und Verarbeitung der Daten gelegt, was sehr zu begrüßen ist. Sind alle Aufgaben gelöst, bekommt man die 15 häufigst verwendeten Wörtern in Shakespear-Texten präsentiert - da stop words vorher nicht entfernt werden mussten, sind es dann auch die üblichen Verdächtigen ;)

...to be continued... 

2014/05/22

Buchbesprechung: Neo4j 2.0 - Eine Graphdatenbank für alle

Das Buch "Neo4j 2.0 - Eine Graphdatenbank für alle " von Michael Hunger führt in die Benutzung von Neo4j ein. Graphendatenbanken sind besonders bei sozialen Fragestellungen ein geeignetes Instrument, Daten zu prozessieren. Des weiteren gibt es aber eine Vielzahl von anderen Anwendungsfälle dieser relativ neuen Technologie, die auch in dem Buch kurz vorgestellt werden. Dabei liegt der Fokus eher auf Anwendungen im Business Bereich.

Kurz und prägnant

Wie schon der Hinweis "schnell + kompakt" auf der Umschlagseite und das Format (16 * 10 cm) erkennen lässt, ist das Ziel des Buches, einen kurzen und prägnanten Einstieg in die Verwendung der Graphendatenbank, und dessen Standard-Abfragesprache Cypher, bereit zu stellen. Meiner Meinung nach, kann es als durchaus gelungen bezeichnet werden, wie der Autor Michael Hunger es meistert, Einführung, Benutzung, Anwendungsmöglichkeiten und sogar spezielle Problemstellungen auf so wenig Textraum unterzubringen. Der Schreibstil ist dementsprechend auch schnörkellos und gut verständlich. Natürlich wird hier viel auf Codebeispiele gesetzt, die meist auch für sich allein stehend gut nachvollziehbar sind. Durch die Vielzahl an Verbindungsmöglichkeiten mit Neo4j, werden für die hauptsächlichen eingesetzten Kommunikationswege (Datenbankabfragen, API´s, Treiber) jeweils Beispiele geliefert. Diese sind leider sehr auf Java ausgerichtet, was nicht verwundert, da Neo4j ja auch in der Sprache entwickelt wurde. Dennoch werden auch Anbindungen mit anderen Programmiersprachen zumindest erwähnt und auf vertiefende Informationsmöglichkeiten verwiesen.

Die Welt der Graphendatenbanken

Kurz dargestellt, bestehen Graphendatenmodelle aus Knoten und Verbindungen. Aus der Geoinformatik sind solche Konzepte vor allem von Routenberechnungen bekannt. In den letzten Jahren entwickeln sich Graphendatenbanken im Zuge der Verbreitung von NoSQL immer mehr zu funktionalen Lösungen, um komplexe Zusammenhänge zu modellieren. Einerseits ist dafür die Notwendigkeit gegeben, da in einer stark vernetzten Welt, auch modellhafte Abbilder der Struktur von Verbindungen entsprechen sollte, andererseits sind besonders soziale Netzwerke im Web und andere webbasierten Dienste günstige Lieferanten von Datenstrukturen, die sich intuitiv als Netzwerk abbilden lassen - Stichwort Big Data
Für sozialwissenschaftliche Analysen, aber auch für jeglich Anwendungen, welche soziale Zusammenhänge darstellen (vom Marketing, über Einkauf und Verkauf, bis hin zur Kundendatenbank), sind Lösungen mit Graphendatenbanken überaus geeignet. Die dafür erstellten Modelle sind skalierbar und performant. Der bedeutendste Vorteil liegt meiner Meinung nach aber in der intuitiven Abbildung der sozialen Realitäten. Momentan arbeite ich an einem Beispiel, welches die Möglichkeiten zur Analyse von sozialen Daten demonstrieren  soll. Es wird auf diesem Blog dann vorgestellt werden, natürlich inklusive eines Beispielcodes (Anbindung an Neo4j mit Python).

2014/04/19

Buchbesprechung: Agile Data Science - Building Data Analytics Applications with Hadoop

Russel Jurney versucht Methoden der agilen Entwicklung auf Datenwissenschaften umzulegen. Sein Buch Agile Data Science ist klar für Praktiker mit Vorkenntnissen in Informatik und Statistik ausgelegt. Es beschreibt agile Entwicklungsprinzipien und Toolsets anhand eines Beispiels, das sich durch den gesamten Text zieht.

Agilität in der Datenwissenschaft

Datenanalyse und -visualisierung ist bislang ein eher statisches Feld - Spezialisten arbeiten abgeschlossen mit komplexen Tools an noch komplexeren Modellen. Ein bisschen Agilität könnte diesem Bereich gut tun und den eigenen Workflow ergänzen - war mein Gedanke, um dieses Buch anzuschaffen. Mit den Prinzipien der Agilen Entwicklung hatte ich mich zuvor nur oberflächlich beschäftigt, aber Slogans wie Iterationen, Leichtgewichtigkeit, Interaktivität oder Skalierbarkeit würden doch auch gut zu Datenforschung passen.

Jurney (eventuell bekannt von dem Blog datasysndrome) beginnt sein Buch auch mit einer kurzen Einführung in agile Prinzipien und wie diese in einem Datenanalyseteam umgesetzt werden können. Besonders geht er auf Rahmenbedingungen für produktives Arbeiten ein und beschreibt prozessuale Veränderungen, welche durch die Verbreitung von Big Data nötig werden. Danach werden Tools vorgestellt, um agiles Entwickeln in einem Datenanalyseteam zu ermöglichen. Sein Toolset umfasst u.a. Avro, Pig, MongoDB zur Datenverarbeitung und -analyse bzw. Flask, Bootstrap oder d3 zur Datenvisualisierung.

Wie ein roter Faden zieht sich das Beispiel der Analyse und Visualisierung der Daten des eigenen Email-Kontos durch das Buch. Um diesen Anwendungsfall auch nachzubilden, sind drei Voraussetzungen nötig:
  • Verstehen von Python-Code
  • rudimentäre Kenntnisse von JavaScript, und
  • ein GMail-Konto.

Damit (und möglicherweise einer virtuellen Maschine, die -mit den Anleitungen in den Dokumenten zum Buch- einfach zu installieren ist) wird das Beispiel relativ einfach nachvollziehbar. Aus didaktischer Sicht ist das Beispiel gut geeignet, da wie im Buch vorexerziert wird, alle Schritte der Datenanalyse und -visualisierung daran angewendet werden können. Negativ zu erwähnen dabei ist jedoch, dass es sich in die lange Liste der Beispiele in Tutorials oder Bücher zu Themen der Datenforschung einreiht, die wenig bis gar keine Relevanz für den nützlichen Gebrauch in der Realität aufweisen. Außerdem ist es mehr als fragwürdig, dass vor allem die letzten Kapitel des Buches großteils aus Code-Snippets bestehen und die Beschreibung des Vorgehens den Dokumentationen der Tools im Netz überlassen wird.

Zusammenfassung

Für Einsteiger in die Welt der Datenanalyse ist Russel Jurney´s Buch Agile Data Science ungeeignet. Für erfahrene Datenwissenschafter kann es (aber muss es nicht) neue Einsichten bereitstellen, die den Umgang mit Daten erleichtern oder verbessern. Im Großen und Ganzen hinterlässt das Buch bei mir ein großes Fragezeichen hinsichtlich der Nützlichkeit des Buches. Einerseits hätte ich mir mehr Erklärung (bzgl. Prozessgestaltung, oder auch Anwendung der Tools) gewünscht. Andererseits liefert es aber sehr gute Ansatzpunkte, um den eigenen Workflow agiler zu gestalten.

2014/03/07

Erste Experimente mit ViziCities

Ein interessantes neues Projekt, mit großem Potential für die Datenvisualisierung ist ViziCities. Es setzt auf aktuellen Webtechnologien auf und hat den Anspruch, Arten und Möglichkeiten von Visualisierungen von Big Data auf städtischem Darstellungsniveau zu erweitern.

3D Datenvisualisierung auf Stadtniveau

Eine erste Vorveröffentlichung kann auf Github gefunden werden und umfasst, trotz des frühen Entwicklungsstadiums, schon einige nützliche Features. Grundsätzlich erzeugt ViziCities eine 3-dimensionale Stadtlandschaft im Web-Browser, auf der Daten visualisiert werden können. Das Stadtmodell setzt auf vereinfachte Daten von OSM auf, wobei die Gebäudehöhen derzeit noch halb-zufällig geschätzt werden. Ziel ist es, die steigende Anzahl an offenen Daten zu nutzen und diese im 3D-Raum darzustellen. Auch mit Echtzeit-Daten soll experimentiert werden.
In einem Video stellen Peter Smart und Rob Hawkes ihr Projekt vor und geben einen interessanten Einblick über mögliche Verwendungszwecke

Erster eigener Versuch

Die Installation verlief problemlos - auch Dank der guten Anleitung in der README Datei. Um einen ersten Eindruck zu bekommen, habe ich die Beispielanwendung so abgeändert (im Grunde waren nur die Koordinatenwerte zu ändern), dass eine 3D-Ansicht meiner Heimatstadt im Browser angezeigt wird.

Screenshot: ViziCities - Steyr
Die Qualität des Modells hat mich grundsätzlich positiv überrascht, auch wenn einige Details fehlerhaft sind. So wird beispielsweise ein Kanal auf dem Screenshot nicht gerendert, was auf diesem Level of Detail verkraftbar ist. In einem anderen Bereich des Modells werden jedoch die OSM-Ways soweit vereinfacht, dass anstatt des Hauptflusses durch die Stadt, ein weiterer Stadtplatz dargestellt wird. Die oft in OSM fehlenden Höheninformationen wirken sich auf die Wirkung des Modells auch negativ aus, was vor allem bei Städten mit hoher Höhenvarianz ein Problem darstellt. Nichtsdestotrotz stellt die erste Vorveröffentlichung schon eine gute Basis dar, um Daten auf städtischem Darstellungsniveau im 3D-Raum zu visualisieren. Weitere Experimente mit ViziCities (dann auch mit Analysedaten) werden meinerseits definitiv folgen - und auf diesem Blog dokumentiert.

2014/02/17

Buchbesprechung: Doing Data Science

Mit hohen Erwartungen begann ich vor einigen Wochen das Buch Doing Data Science - Straight Talk from the Frontline von Rachel Schutt und Cathy O´Neil zu lesen und diese wurden dabei auch noch übertroffen.

Konzept

Das Konzept des Buches kam mir anfangs etwas grenzwertig vor, denn der Inhalt entstand aus einer Vorlesung, die Rachel Schutt an der Columbia Universität über Data Science hielt und an dem Cathy O´Neil -bekannt durch ihren Blog mathbabe- teilnahm und mitprotokollierte. Ob ein Uni-Kurs einen umfassenden Einblick in die Welt der praktischen Datenwissenschaften (wie das Doing im Titel und generell der Untertitel suggeriert) vermitteln kann? Ich war skeptisch.

Von der Front

Und wurde eines besseren belehrt. Denn die zahlreichen Anekdoten aus dem beruflichen Erfahrungsschatz von Rachel Schutt sind schon mal ein gutes Fundament für ein praxisbezogenes Buch. Jedoch wurde das durch die Beiträge über Gastreferenten aus der Datenindustrie und deren beruflichen Background noch übertroffen. So wurde das weiter und interdisziplinäre Feld der Datenwissenschaften anhand übergreifenden Themen wie Visualisierung, Algorithmen oder das MapReduce-Paradigma anhand der Tätigkeitsbereiche der Gäste (u.a. Prof. Mark Hansen oder William Cukierski von Kaggle, sowie einige ehemalige Kollegen von Google von Racehel Schutt) erläutert, was dem Buch zwar zu einer unüblichen, aber zu einer -hinsichtlich des Durcharbeitens des Inhalts- sehr angenehmen Gliederung verhalf.

Selbst an der Front

Die am Ende der Kapitel befindlichen praktischen Übungen sind thematisch ebenfalls an die jeweiligen Gastreferenten ausgerichtet. Die zu lösenden Fragen sind realitätsnah und mit unterschiedlichen Tools zu lösen. Die Beispiele zu Beginn sind zwar sehr auf R fixiert, im weiteren Verlauf sind jedoch auch Übungen mit Python oder sogar ein Übungsbeispiel zu finden, das mit einem bash-Skript zu lösen war. Pro Übungen wird zwar Beispiel-Code zu Verfügung gestellt, die endgültige Lösung bleibt aber gänzlich dem/r Leser/in überlassen. Der mMn einzige negative Punkt an dem Buch sind dann eben die fehlenden Lösungen zur Kontrolle, was den Eindruck vermittelt, allein an der Front zurück gelassen worden zu sein - was vermutlich auch so intentioniert ist.

Inhalt - umfassend und kritisch

Der Inhalt des Buches erstreckt sich über alle Facetten der Datenwissenschaften. Methoden und Probleme hinsichtlich der Datenbeschaffung werden ebenso thematisiert wie die Datenqualität, Prozessierungsmethoden oder exploarative Datenanalyse. Die eigentlichen Auswertungsmethoden werden verständlich und prägnant erklärt. Besonders wird auf die Funktionalität unterschiedlicher Algorithmen aus dem Bereich des maschinellen Lernen eingegangen. Nötige Grundkonzepte wie beispielsweise die Statistik nach Bayes werden ebenso kurz erklärt, wie auch unterschiedliche Software die zur Analyse eingesetzt werden können. Auch die Präsentation und Visualisierung der Ergebnisse wird ausreichend genau thematisiert und die Auswirkungen kritisch hinterfragt. Mein persönliches Highlight ist jedoch nicht der umfassende und prägnant dargestellte Inhalt, sondern die -im positiven, wie auch negativen Sinn- kritische Grundhaltung der beiden Autorinnen gegenüber ihrer Disziplin. So werden ethische Fragen, insbesondere im Umgang mit sozialen Daten, nicht in Nebensätzen abgehandelt, sondern sind immer wiederkehrende Aspekte in den einzelnen Kapitel. Generell ist eine besondere, ethische Grundhaltung der beiden Autorinnen hinsichtlich des notwendigen Feingefühls im Umgang mit Daten und den Auswirkungen der Analysen zu erkennen. Dem folgend fällt auch der Rat der beiden für angehende Datenwissenschafter aus:
"We´d like to encourage the next-gen data scientists to become problem solver and question askers, to think deeply about appropriate design and process, and to use data responsibly and make the world better, not worse." (Schutt/O´Neil (2013): S. 350)

Zusammenfassung

Das Buch  Doing Data Science - Straight Talk from the Frontline von Rachel Schutt und Cathy O´Neil sollte jede/r gelesen haben der/die mit Daten arbeitet und dies erlernen möchte. Ein wenig technisches Grundwissen vorausgesetzt, zeichnet der Inhalt die aktuelle Welt der Datenwissenschaft nach und erweitert die individuellen Fähigkeiten im Umgang mit Daten. Gerade in Zeiten eines Big Data-Hypes sind die Geschichten von der Datenfront der beiden Autorinnen ein wieder erdendes Mittel. Die dargebotene kritische Hinterfragung aktueller Daten-Technologien und immer wieder kehrende ethische Fragen sind darüber hinaus ein besonderes Merkmal das zum Lesen dieses Buches motivieren sollte.