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

2015/10/25

Google Cloud Datalab

Google hat ein neues Service in seiner Cloud Platform am Start. Es heißt Google Cloud Datalab, ist noch im Beta-Stadium und setzt auf Jupyter und dem PyData Stack auf. Hier mein erster Eindruck bei einem kurzen Test.

PyData Stack auf Cloud Platform

Das aufsetzen des Datalabs erfolgt automatisiert, dauert aber seine Zeit (rund 10 min lt. Notification). Es wird eigenartigerweise als Google App Engine Anwendung erstellt und nicht, wie man meinen könnte, als Compute Engine Projekt. Standardmäßig läuft es aktuell auf einer n1-standard-1 Maschine (1 Kern, 3.75GB RAM) mit einem 100GB Laufwerk. Weitere Maschinen und Laufwerke können in den Verbund eingehängt werden, wenn mehr Rechenleistung bzw. Speicherkapazität nötig ist. Die Einbindung der Google-eigenen Storage Dienste ist natürlich unkompliziert möglich und auch sinnvoll - neben der Skalierbarkeit der Infrastruktur mEn. der Hauptgrund warum es sich überhaupt nachzudenken lohnt, die Analysen in die Google Cloud auszulagern. Der Preis für das Service ist aktuell (im Beta-Stadium) noch überschaubar. Man zahlt für die im Projekt verwendete Infrastruktur (Instanzen) und Services (zB. BigQuery), das Datalab ansich ist (noch) kostenlos - was sich möglicherweise nach dem Beta-Stadium ändern wird.

Jupyter Notebook: Anomaly Detection Beispiel
Das Interface für das Datalab ist ein Jupyter Notebook (siehe Bild). Die essentiellen Bibliotheken aus dem PyData Stack sind vorinstalliert und müssen nur mehr bei Bedarf importiert werden. Das Notebook kann genauso wie bei einer lokalen Installation benutzt werden. Auch die interaktiven Visualisierungsfähigkeiten, wie man es von lokalen Notebooks kennt, sind in der Cloud auf selben Wege zu realisieren.  Neben bisschen Dokumentation und Tutorials für das Verwenden des Notebooks und Einbinden von Storage Diensten, werden auch einige Beispiele standardmäßig im Home Ordner zur Verfügung gestellt. Das Bild ist beispielsweise aus dem Anomalie-Erkennungs-Beispiel. 

Grundsätzlich ist mMn. das Google Cloud Datalab ein attraktives Angebot, um Datenanalysen und -visualisierungen in der Cloud mit dem PyData Stack durchzuführen, da man sich einiges an Installations- und Netzwerkadministrationsaufwand sparen kann. Interssant wird natürlich wie die Preisgestaltung dann im Alpha-Stadium sein wird. Vor allem für Data Science Teams, die nicht an einem Standort gemeinsam arbeiten, ist das Datalab eine überlegenswerte Möglichkeit. An einem Einsatz im Unternehmen (zumindest wenn es seinen Sitz in der EU hat) ist derzeit aber noch nicht zu denken. Das liegt aber weniger an der bewährten Technologie aus dem Python Ökosystem selbst, sondern eher an der rechtlichen Situation derzeit in Europa. Die zentrale Instanz wird nämlich in der US Central Region ausgeführt, was eine Verwendung durch europäische Unternehmen im operativen Einsatz derzeit leider unmöglich macht. Auch das sollte nach dem Beta-Stadium gelöst sein und die Region frei wählbar sein.

2015/08/05

MOOC Scalable ML

Der zweite Data Science MOOC unter Verwendung von Apache Spark ist jetzt auch zu Ende gegangen. Wie schon im letzten Post erwähnt, handelt er von skalierbaren maschinellem Lernen. Obwohl die sinnvolle Vertiefung zum Kurs "Introduction to Big Data with Apache Spark", konnte dieser MOOC nicht mal annähernd an dessen Qualität anschliessen.

Theorie

Der Vortrag über die vorgestellten Methoden (im Grunde waren das nur Lineare und Logistische Regression und Faktorenanalyse) war wirklich miserabel. Die Konzepte dahinter wurden, wenn überhaupt, nur kurz erwähnt und auch die Skalierbarkeit kam viel zu kurz. Dafür wurde mit Formeln um sich geworfen und Matrix-Rechenoperationen bis zum Exzess praktiziert. Natürlich auch wichtig, aber wenn schon nur so wenige Methoden vorstellt werden, hätten die zumindest auch leichter verständlich und mit ein paar Beispielen aus der Praxis präsentiert werden können. Der einzige Lichtblick war die Woche 2 - das lag aber nur daran, dass darin in Apache Spark eingeführt wurde und nämlich mit Vorträgen aus dem Vorgängerkurs "Introduction to Big Data with Apache Spark" (für Absolventen wie mich also eine Woche zum überspringen).

Praxis

Die praktisch ausgerichteten Labs waren zwar um Welten besser als die Vorträge, aber auch diese konnten mein Frustrationslevel bezüglich diesem Kurses nicht großartig senken. Man merkte zwar, dass die Ersteller aus den Fehlern der ersten Labs im Vorgänger-MOOC gelernt haben, es schlichen sich jedoch dennoch einige didaktische Fehler ein. Es ist z.B. mühsam, wenn ein Fehler am Ende des Labs auftritt, weil eine Funktion am Anfang nicht gestimmt hat (obwohl ursprünglich damit alle Test einwandfrei liefen) - so geschehen im Lab 4. Alles in Allem ein MOOC den man sich getrost sparen kann, um Zeit und Energie für bessere Lehrmaterialien aufzuwenden.

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... 

2015/05/20

Spyre - Framework für Python Datenprojekte

Was dem Python Daten Ökosystem bislang noch fehlt, ist ein Modul um webfähige Datenprodukte, schnell und mit wenig Aufwand, zu erstellen. Adam Hajari hat einen ersten Versuch unternommen, das zu ändern und begann die Entwicklung von Spyre. Um dieses Framework zu testen, habe ich eine kleine Beispielapplikation geschrieben, das im Repo für diesen Blog unter den Python Beispielen zu finden ist.

Daten von Strava

Für das Beispiel habe ich ein paar Daten zu meinen sportlichen Aktivitäten in diesem Jahr von Strava herunter geladen. Die Strava API ist zwar nicht gerade ein Highlight in Bezug auf UX beim Datenabgreifen, aber es gibt zumindest ein (selten schlecht dokumentiertes) Python Modul, das die Verbindung managt und somit die Angelegenheit ein bisschen schmerzfreier gestaltet. Das Skript, mit dem ich die Kollektionen mit meinen Radfahr- und Schwimm-Aktivitäten erstellt habe, ist auch im Beispiel Verzeichnis zu finden. Sie enthalten die Art der Aktivität, die Startzeit, Dauer und Distanz.

Spyre Apps

Nach der Installation von Spyre (das Paket heisst dataspyre bei pip) und dem Download des master Repos des Projekts kann gleich mit dem Testen der Beispielanwendungen begonnen werden. Diese sind sehr auf Plots fixiert, es ist z.B. auch möglich Bokeh Plots zu integrieren, aber auch diverse Matplotlib Derivate können gerendert werden. Aber auch das Erzeugen von Tabellen wird durch ein Beispiel abgedeckt. Wirklich sehr nützlich um sich mit dem Modul vertraut zu machen, ist das Tutorial im Spyre Repo, im Form eines Ipython Notebooks. Darin wird anhand der Beispielanwendungen die wichtigsten Input-Elemente (div. Buttons, Slider, Dropdown etc.) und Output-Möglichkeiten (Plot, Tabelle etc.) des Frameworks erklärt.
Radfahr Daten in Browser App
Daten App im Browser

Von den Beispielen im Spyre Repo habe ich dann auch meine Beispielanwendung abgeleitet (hier ist der Code dazu). Um die Anwendung zu starten genügt es, das Hauptskript mit Python (in einer 2er Version) zu starten und im Browser der Wahl den Port 9097 vom localhost aufzurufen. Wie in dem Foto rechts zu sehen ist, kann dann mit einem Dropdown die Sportart gewählt werden. Der Plot (der Simplizität zuliebe mit Pandas erzeugt) zeigt daraufhin die Tage, an denen die Aktivität statt fand und die Distanz, welche mit dem Rad bzw. im Schwimmbecken zurück gelegt wurde.

Ein Spyre Server basiert übrigens auf dem CherryPy Web Framework. Wer daran ein bisschen herum bastelt, kann übrigens auch Spyre Apps auf einen Raspberry Pi 2 zum Laufen bringen (siehe Foto unten). Das halte ich für insofern interessant, da es damit möglich wird, Sensordaten abzugreifen, zu verarbeiten und jetzt eben auch im Internet zu präsentieren mit einer durchgängigen Programmiersprache und auf einem Gerät.
Ein von @datadonk23 gepostetes Foto am


Zusammenfassung

Mit Spyre ist es möglich, webfähige Datenprodukte durchgehend in Python zu erstellen, ohne auf Übersetzungen in eine andere Sprache (wie zB bei plot.ly) und den damit verbundenen Einschränkungen, angewiesen zu sein. Die Funktionalität und Usability ist aber im Vergleich zum R Ökosystem mit Shiny jedoch sehr bescheiden und benötigt noch jede Menge Entwicklungsarbeit der Community. Es bleibt zu hoffen, dass das Projekt weiter an Bedeutung zunimmt und eventuell auch eine Plattform wie ShinyApps.io, nur für das Python Daten Ökosystem, entstehen lässt. Insbesonders für die adäquate Präsentation von Analyse-Ergebnisse oder Daten-Modellen ist ein Modul wie Spyre bedeutend, um datenwissenschaftliche Prozesse durchgehend in Python zu ermöglichen.

2014/10/31

visualisierung mit bokeh: beliebte vornamen in OÖ

erste versuche mit Bokeh

Bokeh ist eine python bibliothek für interaktive visualisierungen und datenplots. entwickelt wird sie von Continuum Analytics, das durch seine python distribution anaconda bekannt ist. die als open-source projekt entwickelte bibliothek erlaubt es, mit python interaktive und webfähige plots zu erzeugen - und das auf simple und schnelle art und weise. genug gründe für mich (als nicht unbedingten fan der matplotlib) einmal erste versuche damit zu starten.

die einbindung der bibliothek ist nicht schwierig zu bewerkstelligen. auch die anwendung zur erzeugung der plots erzeugt keinen syntaktischen overhead, wie der code für die beispielanwendung  zeigt (einseh- und downloadbar im visualisierungs-beispiele repo des blogs). die ergebnisse sind für den geringen aufwand visuell ansprechend und auch nützlich für die kommunikation von informationen aus den plots. bei meinen versuchen haben sich jedoch zwei problemfelder gezeigt, die dem noch jungen entwicklungsstands des projekts geschuldet sind. erstens ist die dokumentation noch sehr ausbaufähig. damit bleibt nichts anderes übrig, als bei der verwendung öfters mal im sourcecode der bibliothek nachzusehen. dieser ist zwar gut kommentiert und hilft, die korrekte anwendung von diversen methoden zu finden, kann aber eine gute dokumentation für das schnelle nachschlagen nicht ersetzen. als zweiten problembereich kamen mir dokumentierte parameter unter, die in folge jedoch nicht genutzt werden. dies ist besonders ärgerlich, wenn man die plots individuell verändern möchte. jedoch gehe ich davon aus, dass diese beiden problemgruppen in weiteren entwicklungsstadien behoben werden.

als beispielanwendung habe ich mich auf eine simple visualisierung mittels einer heatmap festgelegt. da bokeh auch eine eigene methode und ein beispiel in der gallery bereit stellt. als zusätzliches ziel setzte ich mir die einbindung eines bokeh-plots in eine statische webseite.

thema: beliebte vornamen

als datenquelle für dieses projekt hat sich der vornamen datensatz des landes oö (über daten.gv.at) angeboten. dieser enthält die 60 beliebtesten vornamen je geschlecht für die letzten 10 jahre. daraus wurden die 25 beliebtesten (nach summe der werte über die gesamtjahre) bestimmt und deren werte dann in einem pandas data frame in eine entsprechende form gebracht, um als input für die CategoricalHeatMap methode von Bokeh zu dienen. im endeffekt stellte sich heraus, dass die größte herausforderung des projekts -wie so oft bei datenanalysen und- visualisierungen- darin bestand, die daten in die gewünschte form zu bringen. die erstellung der eigentlichen plots mittels bokeh ging dann recht zügig.

sobald die visualisierungen erstellt waren, wurden die plots in ein bootstrap template importiert. das vorgehen (im web-beispiele repo des blogs dokumentiert), hätte ich zwar eleganter gestalten können, für eine schnelle präsentationsmöglichkeit ist die einbindung des html-outputs von bokeh aber geeignet. eine bedeutende verbesserung wäre natürlich eine interaktive einbindung, was auch eine effektive verwendung in dynamischen seiten erlauben würde. dies scheint mit bokeh auch möglich zu sein - aber auch hier fehlt noch eine bessere dokumentation. für den anspruch, ein einfaches beispiel zu gestalten, hat mir aber die einbindung des kompletten outputs gereicht. die ergebnisse über die 25 beliebtesten vornamen für männliche und weibliche neugeborene kann somit unter folgendem link betrachtet werden:


zusammenfassung

einbindung und verwendung der python visualisierung-bibliothek Bokeh sind einfach. das potential des projekts ist gross, aktuell gibt es jedoch noch einige mängel, va bezüglich der dokumentation.
und zum ergebnis des beispiels: Lukas bzw. Anna sind die beliebtesten vornamen für neugeborene in den letzten 10 jahren in oberösterreich. die plots zeigen darüber hinaus, dass es besonders bei weiblichen neugeborenen eine konzentration von besonders häufig verwendeten vornamen gibt. ein trend zu mehr individualität bei der benennung von neugeborenen ist zumindest mit diesen vorliegenden daten für die letzten 10 jahre nicht erkennbar.

2014/08/22

reporting mit flask

um die möglichkeiten von flask zum erstellen eines reports zu testen, habe ich ein einfaches beispiel über wohnbautätigkeiten zusammen gestellt. zum ausprobieren der anwendung steht der code im python repo von diesem blog unter FlaskReporting zur verfügung.
image home screen
home screen

thema: wohnbautätigkeit in österreich

da es in dem beispiel eigentlich um die anwendung gehen sollte, habe ich datenzusammenstellung, -analyse und -visualisierung simpel gehalten. die daten stammen von statistik austria [ironiemodus an] DEM ansprechpartnerfür historische daten von österreich [ironiemodus aus] und bestehen aus 2 datensätze über die anzahl von fertiggestellten gebäuden mit wohnungen pro jahr. der insgesamte zeitraum der beobachtung ist somit zwischen 1970 und 2002. die datenwerte sind auch relativ unspektakulär mit nur einem ausreisser (in 1980), der eventuell mit mehr historischem wissen erklärbar wäre oder auch nur ein aggregation fehler ist.
für den report habe ich die daten dann so aufbereitet, dass eine zusammenfassende statistik der anzahl der gebäuden und ein einfaches diagramm über die selbe variable zu sehen ist. dazu noch ein bisschen erklärender text und fertig ist die simplifizierte version eines datenanalyse reports.

flask 

mit ein wenig kenntnissen in python und einigen tutorials war es überaus einfach, mit geringem aufwand, eine einfache reporting app zu entwickeln. der code der anwendung ist mehr oder weniger selbsterklärend. grundsätzlich gibt es ein main script mit dem code für flask und ein analyse script, das die datenanalyse und -visualisierung (überwiegend mit hilfe von pandas und der matplotlib) zur verfügung stellt. als layout wurde die basis version von bootstrap verwendet, das über eine erweiterung auch flott in flask integriert werden konnte. dadurch genügten ein paar zeilen code in den html templates, um so einen simplen report zusammen zu stellen.

report

zusammenfassung

flask ist mmn überaus geeignet, einfache reports oder andere datenprodukte ins web zu bringen. die verwendung des frameworks zeigt sich recht einfach, setzt jedoch etwas an wissen über html und css voraus.

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/04/08

MOOC: The Data Scientist's Toolbox

Diese Woche habe ich wiedermal einen MOOC zum Thema Data Science begonnen. Dies ist der Einstiegskurs zu den, in einem früheren Post erwähnten, Data Science Specialization Kursen von Coursera.

Leider war aus der Kursbeschreibung nicht ersichtlich, dass es sich dabei um eine reine Einführung in (und Werbung für) diese neue Specialization-Schiene handelt und nicht etwa um eine umfassende Beschreibung von relevanten Werkzeugen, wie der Titel vermuten lassen könnte.
Thematisch handeln die Lektionen von der Installation nötiger Software (va. R für die Analyse und Git zur Versionskontrolle) und ein wenig einführender Worte zur Arbeit mit Daten. Der Arbeitsaufwand ist entsprechend gering - aktuell, habe ich alle Erfordernisse, abgesehen von der Benotung der Peers, mit einem Zeitaufwand von ca. 4h hinter mich gebracht. Etwas dürftig für einen 4 wöchigen Kurs ;)
Der Kurs ist für Datenwissenschaften-Interessierte als Zeitverschwendung anzusehen. Immerhin sollte davon ausgegangen werden können, dass jemand, der/die sich datenanalytisch betätigen möchte, gut dokumentierte Programme installieren kann.

2014/03/01

Sozialwissenschaften und Data Science

Michael Malak stellt auf dem Blog der Data Science Association eine Weiterentwicklung des bekannten -und oft zur Beschreibung der Datenwissenschaften verwendeten- Bubble-Models von Conway vor. Als vierte Blase werden die Sozialwissenschaften ins Modell aufgenommen:
von: http://www.datascienceassn.org/content/fourth-bubble-data-science-venn-diagram-social-sciences,
dl 29.02.2014

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. 

2014/01/28

Umstieg auf Fedora Scientific

Nachdem ich mein Notebook doch noch dazu bringen konnte, mit einem Dualboot-System klar zu kommen, ist es mir endlich möglich ein Linux Betriebssystem auch im Produktivbetrieb zu benutzen. Meine Wahl fiel auf Fedora, genau genommen dessen KDE-basierten Scientific Spin, der schon von Grund auf viele Tools zur Datenanalyse mitbringt (R, Root, Octave, SciPy, Spyder, IPython, ...).

Desktop Heisenbug
Abgesehen von kleinen Schwierigkeiten bei der Druckerinstallation (das durch die Installation eines neuen Druckertreibers von OpenPrinting schnell behoben war) und der doch etwas mühevollen Installation von Chromium (aufgrund des fehlenden offiziellen Repositoriums), gab es bislang bei der Einrichtung des neuen OS keine nennenswerte Probleme. Auch das Einbinden von Windows Partitionen ist mit Hilfe des nachinstallierten gnome-disk-utility Programms (um mir das manuelle umkonfigurieren zu ersparen) einfach eingerichtet gewesen.

Aufgrund der umfassenden Ausstattung von Fedora Scientific, habe ich bislang nur folgende Tools für den produktiven Einsatz zur Datenanalyse nachinstalliert:
  • kate - Geschmacksfrage, liegt mir mehr als der vorhandene KWriter; aus den Fedora Repositorien
  • QGIS - für die Geoinformation; aus den Fedora Repositorien
  • JOSM - OpenStreetMap Editor; aus den Fedora Repositorien
  • Beautiful Soup 4 - Python Bibliothek; aus den Fedora Repositorien
  • LibreOffice - Geschmacksfrage, da Calligra Suite vorhanden; nach der Anleitung auf LibreOffice-Page
  • RStudio - Geschmacksfrage, liegt mir zur Skriptprogrammierung besser als vorhandenes RKWard; RPM Paket von RStudio

Fedora Desktop
Die ersten R-Skripte sind schon gelaufen und die Einrichtung des Desktops (eigentlich der Desktops, da 4 Arbeitsflächen pro Aktivität) ist fast fertig. Die Python Integration ist in diesem Spin hervorragend. Bis auf die oben erwähnte Bibliothek zum Markup-Language-Parsen ist eigentlich alles vorhanden um out-of-the-box mit der Analyse von sozialen Daten in Python (bzw. IPython) los zu legen. Visualisierungs-Hilfswerkzeuge (wie Inkscape) sind auch schon standardmäßig enthalten, sowie Mittel zur Dokumentation (besonders umfassende LaTex-Integration), ein Projektplanungs-Werkzeug und ein Personal-Information-Manager (Kontact, von dem ich wegen seiner Systemintegration besonders begeistert bin).

Der KDE-Desktop ist individuell gut anpassbar. Generell ist mir hinsichtlich der Benutzbarkeit noch kein Bug unter gekommen. Sobald die ersten Projekte in Fedora gemacht wurden aber mehr dazu...

2014/01/22

Coursera´s Data Science Specialization

Nachdem Ende letzten Jahres der MOOC Anbieter Udacity eine Serie von neuen MOOC´s zum Thema Data Science angekündigt hat (die jedoch noch immer nicht Online sind), zog Heute Coursera nach und veröffentlichte eine neue Angebotsschiene. Dabei werden verschiedene Kurse zu einem Thema gebündelt. Werden diese positiv absolviert, wird ein spezielles Zertifikat ausgestellt. Eine dieser Specializations ist Data Science, die in Zusammenarbeit mit der Johns Hopkins Universität realisiert wurde.

Ab April werden die ersten Kurse starten, die alle in Englisch gehalten werden. Neun davon sind zu absolvieren und ein sogenanntes Capstone Project muss am Ende auch noch als Abschlussarbeit erstellt werden. Die Themen der jeweils vierwöchigen Kurse decken das breite Spektrum an Fähigkeiten, die DatenwissenschafterInnen haben sollten, ganz gut ab. Es wird ein Kurs zur Sammlung und Aufbereitung von Daten angeboten, eine Reihe von Kursen zu diversen Analysmethoden, ein Kurs über Machine Learning und einer über die Herstellung von Datenprodukte. Wie aus den Beschreibungen heraus zu lesen ist, sind alle Kurse sehr auf R als Analysewerkzeug ausgerichtet. Die Auswahl der Kursleiter Roger D. PengJeff Leek und Brian Caffo, die alle schon in letzter Zeit Kurse über (oder mit) R auf Coursera gehalten haben, ist wohl auch als Indiz dafür zu werten.

Für jene, die ein solches Specialization Certificate erhalten möchten, beträgt die Kursgebühr jeweils 49$ pro Kurs - was also insgesamt 441$ macht. Ist einem ein solches Zertifikat das nicht wert oder gefällt die Kurszusammenstellung nicht, können die Kurse jedoch auch einzeln und kostenlos absolviert werden.

Da meine Erfahrung von früheren Coursera Kursen ist, dass sie ganz gut geeignet sind, um Wissen aufzufrischen und sich mit aktuellen Entwicklungen vertraut zu machen, habe ich vor, das freie Angebot von The Data Scientist´s Toolbox, Practical Machine Learning und Developing Data Products zu absolvieren und falls es die Zeit (bzw. die Anforderungen der Kurse) zu lässt, eventuell auch noch ein, zwei Kurse über die Analysemethoden.