Machine Learning in der Praxis – Teil 1 – Was ist Machine Learning?

Liebe Leser,

in dieser Serie von Artikeln will euch ein ganzheitliches Verständnis über Machine Learning vermitteln. Wir werden eine Reihe von Algorithmen kennenlernen, wir werden uns dazu verschiedene Typen von Lernverfahren anschauen. Darunter sind sog. überwachte Lernverfahren wie Regression, Klassifikation (z.B. mit Support Vector Machines) sowie unüberwachte Lernverfahren wie Clustering (hierarchische und nicht-hierarchische Verfahren wie z.B. k-Means ) und schließlich werden wir zu Deep-Learning mit neuronalen Netzwerken übergehen und uns Bilderkennung und Reinforcement-Learning anschauen. Euch sagen viele dieser Begriffe nichts oder ihr habt nur eine vage Vorstellung davon? Dann ist diese Artikelserie für euch richtig!

Wir werden uns zu jedem Verfahren die zugrunde liegende Intuition und Theorie aus der Vogelperspektive anschauen, Anwendungen mit scikit-learn in Python kennenlernen. Dafür werden wir anhand realer Daten sehen, was die Verfahren von uns als Input erwarten, was wir als Output erhalten können, und wie wir diesen interpretieren können.

Schließlich wollen wir uns aber auch die genaue Funktionalität anschauen, indem wir die zugrundeliegende Mathematik nachvollziehen und noch tiefer eintauchen. Dafür werden wir die Verfahren in einfacher Weise selbst programmieren. Das wird euch letztlich helfen, die Verfahren wirklich zu verstehen, was euch in Zukunft helfen wird, wenn ihr die Verfahren auf neue Problemstellungen anwenden werdet.

Voraussetzungen sind Grundkenntnisse in Python 3. Es schadet nicht, wenn ihr euch etwas in Wahrscheinlichkeitsrechnung und Statistik auskennt. Es ist aber keine zwingende Voraussetzung. Ich will versuchen es einfach zu halten.

Was ist Machine Learning? Ein erstes Beispiel.

Machine Learning ist nicht alt. Die Forschungsgeschichte beginnt in etwa in den 1950er Jahren. Machine Learning ist die Wissenschaft oder Kunst, Maschinen (bzw. Computer) so zu programmieren, dass diese selbstständig aus Daten lernen können.

Arthur Samuel (Quelle: Wikipedia)

Arthur Samuel definierte etwas allgemeiner im Jahre 1959: Machine Learning ist die Erforschung von Methoden, Maschinen die Fähigkeit zu geben zu lernen, ohne sie explizit zu programmieren.

Eine quantitativere Definition ist die folgende: Eine Machine lernt aus einer Menge Daten D, in einer bestimmten Aufgabe A in Bezug auf ein Leistungsmaß L besser zu werden, wenn die Leistung in Bezug auf A gemessen in L mit der Menge D zunimmt.

Letztlich geht es darum, sich das Leben einfacher zu machen und Wissen nicht explizit in Form von Regeln programmieren zu mussen, sondern einer Maschine ein Verfahren zu geben, mit dem sie selbstständig lernt. Ein Beispiel ist der Spamfilter. Er erkennt anhand von Beispielen für Spam und Nicht-Spam (“Ham”) neuen Spam und Ham. Weil er mit Beispielen arbeitet, die ihm sagen, wonach er suchen soll, spricht man dabei von einem sog. überwachten Lernverfahren. Eine sehr simple Methode, Spam zu erkennen wäre folgende: jede neue E-Mail wird mit einer Liste von Spam-E-Mails vergleichen, von denen der Spamfilter bereits weiß, dass sie Spam sind. Es muss dann aber nur ein einzelnes Wort, ja nur ein einzlener Buchstabe in einer neuen Spam-E-Mail anders sein als in einer der bereits bekannten Spam-E-Mail und der Spamfilter würde diese E-Mail nicht mehr als Spam erkennen. Ihr könnte euch vorstellen, dass durch Austauschen oder Hinzufügen von Zeichen in bereits bekannte Spam-E-Mails unbegrenzt viele neue Varianten von Spam enstehen könnten. Es ist also kein sinnvolles Verfahren, Spam-E-Mails durch “Auswendiglernen” bzw. durch von Hand programmierte Regeln zu erkennen. Besser wäre es, wir hätten ein Verfahren, dass Spam-E-Mails automatisch, möglichst zuverlässig detektiert, ohne “echte” E-Mails auszusortieren. Wir brauchen ein echtes Vorhersageverfahren.

Hier kommt Machine Learning ins Spiel. Eine Möglichkeit wäre nun, dass ein Verfahren lernt, welche Worte häufiger in Spam und welche häufiger in Ham vorkommen. Ein Machine-Learning-Verfahren könnte nun die Wahrscheinlichkeit, ob eine Mail Spam oder Ham ist aus der Anzahl Worte ableiten, die eher in Spam oder eher in Ham auftreten.

Eine der ersten hierfür eingesetzten Methoden war der sogenannte Naive Bayes Filter. Es handet sich dabei um ein überwachtes Lernverfahren und genauer eine sog. Klassifizierungsmethode. Sie klassifiziert E-Mails entweder als Spam oder Ham.

Zu Anfang weiß der Naive-Bayes-Filter nichts. Er braucht zunächst Daten D. Diese bekommt er von uns, die wir E-Mails lesen und als Spam markieren. Immer wenn du oder ich eine E-Mail als Spam markieren, kann der Spamfilter lernen, dass die Worte aus der Spam-E-Mail für Spam typisch sind. Tritt nun in vielen Spam-E-Mails immer wieder das Wort “Viagra” auf, so werden diese in Zukunft herausgefiltert. Der Naive Bayes Filter wird mit den von uns gelieferten Daten D, in seiner Aufgabe A Spam zu erkennen in puncto Leistungsmaß “Anteil richtig erkannter Spam-E-Mails” L mit zunehmender Menge Daten D besser.

Wir werden in den nächsten Kapiteln weitere Aufgaben und weitere Methoden kennenlernen.

Wir leben im goldenen Zeitalter des Machine Learning!

Wir leben in einer aufregenden Zeit! Ihr könnt heute das Machine Learning Verfahren eurer Wahl auf  100.000 Euro teurer Hardware bei z.B. Amazon AWSGoogles Cloud oder Microsoft Azure oder vielen anderen Anbeitern auf Terrabytes von Daten anwenden und Modelle erhalten – zum Spaß, für eure Softwareprojekte oder eure Businessidee. Und das Ganze für wenige Euros pro Stunde. Gleichzeitig sind über Programmiersprachen wie Python und Module wie scikit-learn Machine-Learning-Verfahren auch für wenig erfahrene Entwickler verfügbar. Viele Verfahren lassen sich auch ohne Verständnis ihrer genauen Funktionsweise sofort anwenden. Wer es etwas genauer Wissen will und bessere Ergebnisse erzielen will und erfahren will, für welches Problem, welches Verfahren am besten geeignet ist, für den ist diese Aritkelserie!

Im nächsten Teil werden wir uns Machine Learning noch etwas genauer aus der Vogelperspektive anschauen und lernen, welche Arten von Verfahren es gibt. Im übernächsten Artikel werden wir bereits eine erste Aufgabe und eine praktische Lösung dafür kennenlernen.

Viel Spaß und beste Grüße

Frank Wolf

 

How to ignore *.pyc files in Atom

You are furious about all theses *.pyc files in you workfolder? I hear you. Here is how you can get rid of them.

  • Go to Atom -> Preferences -> Core Tab
  • Scroll down to “Ignored Names”
  • add -> *.pyc

 

 

  • in Packages -> type: tree-view
  • click on the card “tree view”
  • check the checkbox next to “Hide Ignored Filenames”

 

 

 

 

  • You are done! Time to be happy again 🙂

3. Platz auf dem Bertelsmann Hackathon

Anfang April war wieder der Bertelsmann Hackathon im Denkwerk in Herford. Designer, Programmierer und Softwarevisionäre entwarfen und bauten dort über die nächsten 36 Stunden an coolen Lösungen für Challenges aus den Tochterfirmen der Arvato-Unternehmensbereichs. Arvato gehört zum Bertelsmannkonzern und betreibt Servicecenter und IT-Systeme und bietet weltweit u.a. Logistik- und Finanz- und IT-Dienstleistungen.

Hier ein paar Worte einiger Teilnehmer, Teamkollegen und mir im Film zum Bertelsmann Hackathon 2018.

Zu fünft haben wir an einer Lösung gearbeitet Bluethooth Beacons (Bluethoothsender) zur Ortung im Raum einzusetzen.  Wir haben Raspberry Pis mit Bluethooth Dongle im Raum verteilt, die die Beacons empfangen können und aus den anfallenden Entfernungsdaten die räumliche Position der Beacons berechnet. Ich habe zusammen mit zwei Teamkollegen an der Software gearbeitet. Jeweils ein Teamkollege haben am Flask-Backend und einer an der Rapsberry Pi Programmierung gekümmert (Python). Ich habe mich um Berechnungsverfahren (Trilateration), Frontend (Vanilla JS + heatmap.js) gekümmert und die Kommunikation im Softwareteam moderiert. Zwei weitere Teammember haben sich um Businessmodell, Kommunikation, Marketing und Sales gekümmert. Sie sind sogar  “auf die Straße” gegangen und haben in Startup-Weekend-Tradition echte Kunde angesprochen und sie um ihr Feedback bzw. nach ihrem Interesse gefragt. Die Ergebnisse waren gut und wir waren gespannt auf das Feedback der Jury am Sonntag. Bevor wir dazu kommen ein paar Worte zur Hackathons allgemein und im besonderen des Bertelmann Hackathons.

Warum solltest auch du an einem Hackathon teilnehmen?

Hackathons sind eine großartige Gelegenheit dazuzulernen. Sie sind meist kostenlos, es gibt meist Verpflegung und Unterkunft und oft auch eine Reisekostenerstattung – was insbesondere für Stundenten und junge Professionals interessant sein kann. Alle diese Bedingungen waren beim Bertelsmann Hackathon erfüllt.

Ich kann jedem – egal wie fit ihr im Coden seid. Der Erfolg von Softwareprojekten liegt in der Zusammenarbeit der Teammitglieder und/oder von Kunden und Auftraggebern. Es kommt darauf an mit Menschen unterschiedlicher Hintergründe und unterschiedlichen Fähigkeiten gut zusammenzuarbeiten. Ich denke es gibt keinen besseren Weg als das auf einem Hackathon zu lernen. Man lernt definitiv viel neues kennen: übers Entwernfen, Coden, Teambildung und Zusammenarbeit. Und natürlich nette Leute – unter den Teilnehmern und Veranstaltern. Man gewinnt zudem  hautnahe Einblicke in die Arbeit eines interessanten Unternehmens und Konakte zu Mitarbeitern und Personalern.

Trotzdem ich bereits seit vielen Jahren arbeite, macht mir das Format immer noch großen Spaß und es gibt immer wieder vieles neues zu lernen – so sind Hackathons unabhängig von der Erfahrungsstufe ein tolles Event.

Warum sich die Teilnahme am Bertelsmann Hackathon lohnt

Den Bertelsmann Hackathon fand ich insbesondere gut, da es viele unterschiedliche Challenges gab, bei denen viele aktuell Technologie zum Einsatz kam: Roboter, verteilte Systeme, Blockchain, Bilderkennung und Bots.  In der Vorstellung der Challanges hat man zudem gute Einblicke in vier verschiedene Unternehmen von Arvato erhalten. Auch ist das Denkwerk als Location absolut genial. Nicht nur war das Essen gut, sondern es gab auch Möglichkeiten zum Trainieren, Schlafmöglichkeiten sowie angenehm eingerichtete Arbeits- und Gruppenräume sowie Rückzugsräume, um auch tagsüber mal 30min Ruhe tanken zu können. Das Arvato-Team hat zudem erfolgreich für eine angenehme Atmosphäre gesorgt und interessante Einblicke in ihren Arbeitsalltag gegeben. Ansprechpartner waren praktsch 24/7 anwesend und ansprechbar.

3. Platz!

Für uns hat sich die Teilnahme gleich doppelt gelohnt. Nicht nur hatten wir großen Spaß, sondern konnten als eines von drei Teams am Sonntag die Jury mit unserer Lösung überzeugen und haben so den 3. Platz gemacht und jeder einen Raspberry Pi gewonnen. Nicht schlecht für eine kostenlose Veranstaltung.

Also, ich kann euch Hackathons speziell und den von Bertelsmann im bersonderen empfehlen. Schaut doch nächstes Jahr einmal vorbei! Vielleicht lernen wir uns dann dort kennen!

Hackathons nach Ort findet ihr übrigens hier:

Ich werde als nächstes wahrscheinlich zum Healthcare Hackathon im September nach Kiel gehen.

Mit Rambox Ordnung ins Messenger-Chaos bringen

Liebe Leser,

ich bin vor einigen Tagen auf Rambox gestoßen und habe es mir nach und nach eingerichtet. Rambox ist eine Anwendung für Windows, Mac und Linux, in der ihr (fast) alle gängigen Messenger in einer Anwendung zusammenfassen könnt.

Ich verwende es u.a. mit Mattermost, Telegram, Whatsapp, Skype und Google Hangouts.

Die Einrichtung ist einfach und wird über leicht nachvollziebare Dialoge begleitet.

Rambox macht das Schreiben von Nachrichten sehr viel angenehmer mit individuellen Messenger-Apps auf dem Telefon, Laptop oder im Browser.

Schaut’s auch mal an!

Euch eine gute Zeit!

Frank Wolf