Posts mit dem Label MOOC werden angezeigt. Alle Posts anzeigen
Posts mit dem Label MOOC werden angezeigt. Alle Posts anzeigen

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

2014/07/27

Migrationsbilanz als ShinyApp

Für das Kurs-Projekt vom MOOC Developing Data Products habe ich eine simple Visualisierungs App entwickelt. Sie bereitet Migrationsdaten aus dem Zeitraum 2002 - 2012 der Bezirke von Oberösterreich in Form einer Choroplethenkarte auf und zeigt die Werte auch in Tabellenform.

Link zu shinyMig OÖ

ShinyApps.io

Umgesetzt wurde das Projekt zu Versuchszwecken in R auf der ShinyApps.io Plattform von RStudio. Das Deployment hierbei zeigte sich mehr als simpel. Sofern die Anwendung auf der eigenen Workstation einwandfrei läuft, kann es mit einem einfachen deployApp() Befehl auf die Plattform geladen werden. Die Kunst ist lediglich, die Anwendung am eigenen Rechner fehlerfrei zum Laufen zu bringen, da die debugging Möglichkeiten mit shiny leider noch sehr begrenzt sind.

Umsetzung in R

Bei der Entwicklung der App zeigte sich wieder eindeutig, dass R nur ein suboptimales Werkzeug zur Kartenerstellung ist. Mit ggplot2 ist zwar einiges möglich, der Aufwand dafür steht jedoch mMn nicht in Relation zu den mässigen Ergebnissen im Vergleich zu echter GIS-Software. Bei der Aufbereitung der Rohdaten (übrigen von data.gv.at) und der tabellarischen Darstellung in der App, konnte hingegen R natürlich seine Stärken ausspielen. Als größtes Hindernis bei der Entwicklung stellte sich die Kategorisierung der Migrationsbilanzen heraus, wobei ich mich nach etlichen Versuchen in automatischer- und einiger in manueller-Klassifizierung für einen semi-automatischen Weg entschieden habe, wobei positive und negative Salden getrennt und von diesen beiden Kategorien dann der jeweilige Median als weitere Schwelle eingeführt wurde. Damit blieb die visuelle Vergleichbarkeit der Karten noch einigermassen erhalten, bei Beibehaltung des Akzents auf die Trennung von positiven und negativen Werten. Für detaillierte Vergleiche sind ja noch die jeweiligen Schwellen in der Legende verzeichnet bzw. auch die Daten in der Tabelle ersichtlich.

Beispielcode

Der Beispielcode steht im R-Repo dieses Blogs zum download bereit.

2014/02/02

MOOC: Computing for Data Analysis

Nachdem ich beschlossen habe, dass meine Fähigkeiten, mit R zu arbeiten, erweiterungsfähig sind, habe ich mich in den Coursera-MOOC Computing for Data Analysis eingeschrieben. Im Herbst habe ich schonmal einen Coursera-MOOC zur Datenanalyse mit R belegt, aber gleichmal zu Beginn wieder abgebrochen, da mir der Inhalt dann doch zu grundlegend war. Bei diesen habe ich nun erwartet, ein paar Tipps & Tricks in der Skriptprogrammierung und Möglichkeiten zur Übung zu erhalten. Nachdem der Kurs nun abgeschlossen ist, mein Résumé:

Die Ausrichtung des Kurses finde ich nicht recht schlüssig. Einem/r EinsteigerIn ist er mMn nicht zu empfehlen, da gar nicht genügend Zeit bleibt, in einem so kompakte Zeitrahmen von 4 Wochen, die gelernten Techniken so einzuüben, um sie auch produktiv einsetzen zu können. Andererseits langweilt sich der/die Nicht-EinsteigerIn in der ersten Woche (Einführung, Installation etc.) und auch bei den Grundlagen zum Plotten.

Der Vortrag von Roger D. Peng (Assoc. Prof. an der Johns Hopkins Bloomberg School of Public Health) ist inhaltlich gut zusammengestellt und auch gut verständlich. Die Lektionen selbst sind teilweise etwas lang und könnten besser in mehrere Lektionen aufgesplittet werden. Thematisch wurde es erst gegen Ende der dritten (Reproduzierbare Forschung) und in der letzten Woche (Reguläre Ausdrücke in R bzw. S3- & S4 Klassen/-Methoden) richtig spannend.

Quizzes sind gut lösbar, aber auch nicht unterfordernd. Richtig negativ sind mir eigentlich nur die Program Assignments aufgefallen. Deren Angaben sind teilweise mangelhaft und es gibt kein nützliches Feedback (nur ob das abgegebene Dokument "korrekt" war oder eben nicht - jedoch kein Hinweis, was daran nicht korrekt war). Zudem sind die Fragen aufeinander aufgebaut. Kann also das erste Beispiel nicht korrekt gelöst werden, sind auch die übrigen Punkte verloren. Das Positive an den Assignments ist, dass sie eine gute Möglichkeit zum Training der Skriptprogrammierung mit R bieten. Die Beispiele sind mit ein bisschen Übung (und kompletter Anleitung) nicht unlösbar. Außerdem sind mMn die Domänen der jeweiligen Assignments gut gewählt, damit sie nicht allzu langweilig werden. Für diesen Blog relevant, war beispielsweise die Assignments 3 und 4, in denen im Ersten gesundheitsrelevante Datensätze (Gesundheits-Outcome- und Spitaldaten aus den USA) und im Zweiten ein Datensatz zur Kriminalität (Tötungsdelikte in Baltimore) zu bearbeiten waren. Die Datensätze waren dabei jeweils schon aufbereitet.

Alles in Allem, war es eine gute Möglichkeit zur Übung. Im Bereich von Tipps & Tricks hätte ich mir aber mehr erhofft. Vielleicht wird der Kurs in Rahmen des neuen Spezialiserungs-Programms hinsichtlich dieser Richtung ja noch verbessert. Und nun werde ich auf das Statement of Accomplishment warten ;)

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.