PB: Halbmarathon, 1h 34min 50sec

Am vergangenen Sonntag fand in der Stuttgarter Innenstadt, der 17. Stuttgarter Zeitungslauf statt. Ich selbst war dieses Jahr erst zum zweiten mal dabei, aber wesentlich besser vorbereitet als noch im Juli 2009. Da außerdem das Wetter dieses Jahr nahezu optimal war, standen einer guten Zeit nur noch meine eigenen Beine im Weg. 1h 34min und 50sec sind das Ergebnis, mit dem ich persönlich mehr als zufrieden bin. Es war mein bisher zweiter Halbmarathon und ich konnte meine Zeit gegenüber dem Vorjahr deutlich verbessern. An dieser Stelle auch danke an die Pacemaker, ohne die konstante Tempoarbeit wäre es sicher nicht so gut gelaufen.




Mehr Fotos gibt es unter Marathon-Photos.com, Runnersworld.de, Laufreport.de oder direkt auf Stuttgarter-Zeitung.de.

Beste Grüße, Thomas Uhrig.

Media-Night am 1. Juli 2010

Am Ende eines jeden Semesters, findet in der HdM Stuttgart die sogenannte Media-Night statt. Dort werden studentische Projekte aus dem vergangenen halben Jahr präsentiert, wie etwa Computeranimation, Data-Mining Projekte oder Softwareentwicklungen. Und da auch ich in diesem Semester an einem kleinen Softwareprojekt auf der Android-Plattform gearbeitet habe, werde ich ebenfalls dort zusehen sein. Mein Projekt heißt Nepomuk und ist ein digitales Metronom mit Sprachausgabe für die Android-Plattform – bzw. soll es sein, denn das Projekt hat vor allem aufgezeigt, welche Schwächen die Android-Plattform im Bezug auf Audio und Real-Time momentan noch hat.

Mehr Informationen zur Media-Night findet ihr unter http://www.hdm-stuttgart.de/medianight.

Das Projekt selbst, sowie Code, Präsentation und Dokumentation werde ich in einigen Wochen hier online stellen, es fehlt noch der letzte Schliff.

Beste Grüße, Thomas Uhrig.

Naiver Bayes Klassifizierer (Präsentation & Python-Code)

Data-Mining, also die Extraktion von Wissen aus sehr großen Datenmengen, ist ein Teilgebiet der künstlichen Intelligenz welches zunehmend an Bedeutung gewinnt. Es findet sich im Umfeld von Softwareentwicklung und Datenbanken wieder, in Erhebungen und Statistiken, in Marketing und Management. Dokumente wie Webseiten, E-Mails oder RSS-Feeds, werden geclustered und klassifiziert.

Der naive Bayes Klassifizierer erlaubt es, Dokumente relativ einfach nach gelernten Regeln zu klassifizieren, also in Gruppen einzuteilen. Anhand vorklassifizierter Dokumente lernt er welche Wörter, mit welcher Wahrscheinlichkeit in welcher Gruppe auftreten. Ein neues Dokument, wird dann anhand der Wahrscheinlichkeiten der einzelnen Wörter, sowie der Wahrscheinlichkeit, dass diese Klasse überhaupt auftritt eingeordnet.

Der naive Bayes Klassifizierer kann zwar keine semantische Aussage über ein Dokument treffen (eine Aussage “das Dokument A ist zu 56,743% Werbung” wäre also weder möglich noch sinnvoll, da sie mehr als subjektiv ist), jedoch kann er relativ sicher die Klasse angeben in die das Dokument am wahrscheinlichsten fällt und es dieser zuordnen. So ist der naive Bayes Klassifizierer etwa das Mittel der Wahl für Spam-Filter in E-Mail-Programmen geworden. Der Nutzer kann den Klassifizierer anlernen und an einigen Stellschrauben drehen. Hat er genügend “Wissen gelernt”, so erfolgt die Einteilung in Spam und Nicht-Spam überzeugend und performant.

Anbei findet ihr eine Präsentation (*.pdf) zum naiven Bayes Klassifizierer, sowie eine kommentierte Implementierung in Python. Die Präsentation stellt das Verfahren noch einmal im Detail vor und gibt auch Einblicke in die Mathematik – nämlich das Bayes-Theorem – hinter der Idee. Die Python-Implementierung setzt einen Bayes Klassifizierer für Dokumente (also allgemein Strings) um. Diese Implementierung lernt anhand einer Reihe von vorgegebenen Dokumenten und teilt ein neues Dokument dann in einer von zwei Klassen ein (siehe Screen-Shot).

Präsentation: naiver_bayes_klassifizierer_präsentation.pdf

Python-Implementierung: naiver_bayes_klassifizierer.zip

Beste Grüße, Thomas Uhrig.

Klassifizierer

Gelesen: Patterns kompakt

Design Patterns sind in der aktuellen Softwareentwicklung kaum noch wegzudenken. Sie bilden die Grundlage für Kommunikation, Dokumentation und einen übersichtlichen Code. Und selbst wer Entwurfsmuster nicht bewusst einsetzt, wird schon das ein oder andere Struktur- oder Verhaltensmuster unbemerkt verwendet haben. Denn immer mehr Frameworks und Technologien erzwingen und verwendet diese Muster.

Seit dem Erscheinen des Buchs “Design Patterns” der Gang of Four im Jahre 1994 sind viele Werke und Papers über dieses Thema veröffentlicht worden – endlich hatte die “Sache” einen Namen. Auch das Buch “Patterns kompakt” von Karl Eilbrecht und Gernot Starke beschäftigt sich mit diesem Thema. In einem handlichen Format, bringt es auf knapp 200 Seiten eine Katalog der bekanntesten und häufigsten Patterns mit. Diese werden kurz und knapp in klassicher Form präsentiert: Zweck, Szenario, Problem, Lösung, Vor- und Nachteile, Verwendung und Verweise. Auf jeweils drei bis zehn Seiten finden sich so alle populären Patterns Abstract Factory bis Visitor wieder.

Das Buch ist angenehm und leicht zu lesen und dank der Katalogform auch einmal Pattern-weise in der Bahn. Zwar macht “Patterns kompakt” keine großen Sprünge oder erzählt etwas “wirklich neues”, aber es ist als Einstieg- bzw. Nachschlagewerk mehr als gut geeignet. Zwar finden sich gegen Ende auch einige unnötige Ausflüge, wie etwa das Money-Pattern, aber insgesamt eine gute Wahl für knapp 15 €. Erschienen ist Patterns kompakt im Spektrum Verlag (ISBN 978-3-8274-2525-6).

Beste Grüße, Thomas Uhrig.