Da tut sich was

Mit Sensordaten und Maschinellem Lernen Bewegungen erkennen

Albert Hein, Prof. Dr.-Ing. Thomas Kirste, Frank Krüger

© Shutterstock / lzf

Tragbare Sensoren haben längst Einzug in unseren Alltag gehalten. Wie man Bewegungssensorik und Maschinenlernverfahren nutzen kann, um in wenigen Schritten von Sensordaten zu einem System zu gelangen, dass einfache menschliche Aktivitäten erkennt, zeigen wir in diesem Artikel.

Dank des massiven Preisverfalls mikroelektromechanischer Systeme (MEMS) haben unzählige Sensoren Einzug in unseren Alltag gehalten. Vor allem die so genannte Inertialsensorik, also Beschleunigungs- und Drehratensensoren, ermöglichen durch ihre inzwischen allgegenwärtige Verfügbarkeit insbesondere in mobilen Geräten viele interessante Einsatzmöglichkeiten, etwa die Steuerung von Programmen mittels Gesten, Sturzerkennung oder auch die Navigation in Virtual- und Augmented-Reality-Umgebungen. Ein weiteres Anwendungsfeld ist das automatisierte Erkennen der aktuellen Aktivität eines Nutzers. Dazu wird aus den Bewegungsmustern, welche die Sensoren aufzeichnen, in mehreren Teilschritten auf die den Beobachtungen zugrunde liegenden Tätigkeiten geschlossen. Das ist kein Hexenwerk und lässt sich mittels frei verfügbarer Werkzeuge und Bibliotheken inzwischen leicht in Java umsetzen. Zum Einsatz kommt hier das Weka-Toolkit (Kasten), ein frei verfügbares, in Java implementiertes Datamining-Werkzeug. Ziel dieses Artikels ist es, Ihnen einen Einblick in das Forschungsfeld der Aktivitätserkennung zu vermitteln. Am Ende sollten Sie in der Lage sein, ein System zur Erkennung einfacher Aktivitäten zu implementieren – etwa zur Bereitstellung kontextsensitiver Funktionen und Services oder auch als persönlichen Fitnesstracker.

Die Aktivitätserkennungspipeline

Die allgemeine Vorgehensweise zur Erkennung menschlicher Aktivitäten stammt historisch gesehen aus einem Teilgebiet des KI-Forschungsfelds Computer Vision, bei dem Kamerabilder durch Algorithmen automatisch analysiert und interpretiert werden, um Bewegungen und Tätigkeiten zu identifizieren. Dadurch, dass Bewegungssensoren immer kleiner und billiger wurden, wurden die Verfahren an die neuen Sensormodalitäten adaptiert und nach und nach durch spezialisierte Methoden und Modelle verbessert. Während sich die Forschung inzwischen auf komplexe und abstraktere kausale Handlungsmodelle konzentriert, ist es bereits für Nichtwissenschaftler möglich, grundlegende Aktivitäten wie Gehen, Stehen oder Radfahren mithilfe von Sensoren, wie sie etwa im Mobiltelefon verbaut sind, und geeigneten Maschinenlernverfahren zu detektieren. Die Aktivitätserkennungspipeline ist im Grunde eine normale Mustererkennungspipeline und besteht aus mehreren aufeinanderfolgenden Verarbeitungsschritten (Abb. 1). Die Pipeline umfasst die Aufnahme der Rohsensordaten, deren Vorverarbeitung und Segmentierung, das Gewinnen aussagekräftiger Merkmale und das eigentliche Klassifizieren, das die aufgenommenen Daten den einzelnen Aktivitäten zuordnet.

Abb. 1: Schematische Aktivitätserkennungspipeline

Abb. 1: Schematische Aktivitätserkennungspipeline

Aufnahme von Sensordaten

Es ist für den Computer nicht möglich, Bewegungen des Körpers direkt zu erfassen. Nur deren Auswirkungen auf Sensoren, die physikalische Größen messen und in Zahlen umwandeln, welche die Algorithmen verarbeiten können. Die Sensoren stellen somit gewissermaßen eine Art Fenster zur Welt dar. Ziel ist es, aus einer Menge von Aktivitäten diejenige Aktivität zu bestimmen, welche die gemessenen Sensordaten am besten erklären kann. Zwischen welchen Aktivitäten unterschieden werden soll, ist wiederum ausschlaggebend für die Art und Platzierung der Sensorik. In diesem Szenario verwenden wir Akzelerometer (Beschleunigungsmesser) und Gyroskope (Drehratenmesser), um Translation und Rotation messen zu können. Da wir nur Aktivitäten betrachten, die Bewegungen des gesamten Körpers umfassen, reicht für unser Szenario ein einzelner Sensorknoten an der Hüfte aus, wie etwa ein Mobiltelefon am Gürtel. Für feingranularere Anwendungen kann es durchaus sinnvoll sein, Sensoren an Armen, Beinen oder anderen Stellen zu platzieren. Weiterhin müssen Messbereich und Abtastrate der Sensoren sorgfältig gewählt werden. Ein falsch gewählter Wertebereich kann dafür sorgen, dass Bewegungen zu grob aufgelöst werden, im Grundrauschen untergehen oder bei starken Bewegungen bereits den Messbereich übersteigen, sodass ein gesättigtes Signal aufgezeichnet wird. Eine zu geringe Abtastrate wiederum kann nach Nyquists Abtasttheorem zu Artefakten führen. Für unsere Bewegungen haben wir uns für einen Messbereich von ±4 G und eine Abtastrate von 50 Hz entschieden, was das Erfassen von Bewegungen von bis zu 25 Hz erlaubt.

Für das spätere Training der Klassifikatoren und die Evaluation der Erkennungsgenauigkeit werden neben den Sensordaten auch Annotationen benötigt – die Ground Truth. Für unsere Anwendung reicht es, dass jeder Datenpunkt mit einem Label der tatsächlich aufgezeichneten Aktivität gekennzeichnet ist. Das Annotieren kann entweder direkt während der Aufzeichnungen oder nachträglich erfolgen, etwa anhand von Videos. Zu beachten ist, dass alle Fehler und Ungenauigkeiten in den Annotationen sich unmittelbar auf die Klassifizierung und Evaluation auswirken. Die Annotationsqualität ist also von entscheidender Bedeutung. Im Beispiel wurde die Annotation bereits vorgenommen und steht in der Spalte class. Listing 1 zeigt die ersten Zeilen eines aufgenommenen Datenfiles im Weka-eigenen ARFF-Dateiformat.

@relation s1
@attribute AccX numeric
@attribute AccY numeric
@attribute AccZ numeric
@attribute GyrX numeric
@attribute GyrY numeric
@attribute GyrZ numeric
@attribute class {'bike','downstairs','lie','run','sit','stand','upstairs','walk'}
@data
485,517,513,519,527,520,'downstairs'
483,517,513,526,517,515,'downstairs'

Ein Schritt zurück: Datenvorverarbeitung

Da die meisten heute erhältlichen Sensoren bereits digital und zu einem gewissen Grad intelligent sind, werden die meisten Vorverarbeitungsschritte direkt auf der Hardware durchgeführt (AD-Wandlung, Kalibrierung oder Temperaturkompensation). Einige Schritte müssen dennoch nachträglich vorgenommen werden, insbesondere, wenn mehrere Sensoren zum Einsatz kommen. Auch wenn wir in unserem Beispiel aus Gründen der Einfachheit darauf verzichten, ist es in der Regel sinnvoll, die gemessenen Rohdaten in standardisierte Einheiten (z. B. m/s2 oder rad/s) und Koordinatensysteme umzurechnen. Somit kann das entwickelte Programm leicht auf andere Sensoren oder Sensorparameter portiert werden. Wenn mehrere Sensoren verwendet werden, müssen die Datenströme darüber hinaus synchronisiert werden. Das betrifft nicht nur einen statischen Versatz zwischen den Signalen, sondern kann für verschiedene Abtastraten ein komplettes Resampling erforderlich machen. Im Beispiel sind Akzelerometer und Gyroskop bereits synchronisiert worden, weitere Vorverarbeitungsschritte sind vorerst nicht notwendig.

Lesen Sie auch: Bluetooth Low Energy in JavaScript und Node.js

Segmentierung der Daten

Da die Sensoren einen kontinuierlichen Datenstrom liefern, wir jedoch daran interessiert sind, in welchem Zeitraum welche Aktivität stattgefunden hat, müssen aus dem Strom einzelne Segmente extrahiert werden. Dafür gibt es in der Literatur viele Vorschläge. Einige sind intelligenter und versuchen bereits Anfang und Ende möglicher Aktivitäten – etwa durch Bestimmung der Intensität der Bewegung – zu detektieren oder nehmen zusätzliche Sensoren oder Kontextinformationen zu Hilfe. Ein weiterer, häufig verbreiteter Ansatz ist es, ein Fenster fester Größe in bestimmter Schrittweite und meist überlappend über die Daten zu schieben (Sliding Window). Bei allen Verfahren, aber insbesondere hier, muss darauf geachtet werden, dass die Segmentgröße nicht zu klein, aber auch nicht zu groß gewählt wird. Wenn sie zu klein ist, könnten prägnante Bewegungsmuster abgeschnitten werden. Ist sie zu groß, könnten bereits Muster mehrerer aufeinanderfolgender Bewegungen verschwimmen. Insbesondere bei Echtzeitanwendungen kommt es dazu, dass eine zu große Segmentgröße die Reaktionszeit des Verfahrens stark beeinträchtigt – falls etwa ein Fenster erst nach 5 s gefüllt werden muss. Weiterhin sollte man beachten, dass Artefakte an den Segmenträndern entstehen können, insbesondere, falls im folgenden Schritt eine Fourier-Transformation durchgeführt werden soll. Dafür müssen die Messungen zusätzlich je nach Position im Segment gewichtet werden (z. B. als Hamming Window). Im Beispiel haben wir uns für ein Sliding Window der Größe von 128 Samples (bei 50 Hz ca. 2,56 s) mit Rechteckfenstern (ungewichtet) entschieden, die halb überlappend übereinander geschoben werden. In Java bietet es sich an, dafür einen Ringspeicher einzusetzen, der zunächst gefüllt wird, dann werden alle 64 Samples ausgelesen und weiterverarbeitet. Eine Beispielimplementierung der Klasse RingBuffer liegt dem Sourcecode bei.

Instances input = null;
Instances output = null;

// read data
try {
  DataSource source = new DataSource(in);
  input = source.getDataSet();
  input.setClassIndex(input.numAttributes()-1);
} catch (Exception e) { e.printStackTrace(); }

[...]

// process data
RingBuffer window = new RingBuffer(WINDOWSIZE);
for (int i = 0; i < input.numInstances(); i++) {
  window.insertItem(input.instance(i).toDoubleArray());

  if ((i >= WINDOWSIZE-1) && (((i+1) % OFFSET)==0)) {
    output.add(calcFeatures(window.getAll()));
  }
}

// write data
try {
  ArffSaver saver = new ArffSaver();
  saver.setInstances(output);
  saver.setDestination(out);
  saver.writeBatch();
} catch (IOException e) { e.printStackTrace(); }

Auswahl und Berechnung von Merkmalen

Im Schritt der Merkmalsberechnung und Selektion geht es darum, aus dem von den Sensoren gemessenen Ausgangssignal aussagekräftige Merkmale (Features) zu berechnen, anhand derer die gesuchten Aktivitäten möglichst gut voneinander unterschieden werden können. Merkmale werden dann für jedes Segment berechnet und als Merkmalsvektor an das Klassifizierungsverfahren weitergereicht. Der von den Merkmalsvektoren aufgespannte Raum wird Merkmalsraum genannt. Je mehr Merkmale man pro Segment berechnet, desto größer oder höherdimensionaler ist der Merkmalsraum. Man sollte annehmen, dass die anschließende Klassifizierung immer genauer ausfallen sollte, je mehr Merkmale hinzugenommen werden, doch leider ist das nicht so einfach. Das Problem wird als „Fluch der Dimensionalität“ bezeichnet. Je höherdimensionaler der Raum, desto bedeutungsloser werden Distanzmaße, d. h. alle Datenpunkte, egal welcher Klasse sie angehören, sind irgendwann annähernd äquidistant und somit je nach Verfahren nicht mehr sinnvoll trennbar. Ebenso haben einige Klassifikatoren Probleme mit korrelierten Merkmalen, d. h. die berechneten Merkmale sollten möglichst orthogonal zueinander liegen. Für Merkmalsselektion und -reduktion stehen neben händischer Auswahl auch automatische Heuristiken und Methoden wie etwa die Hauptkomponentenanalyse zur Verfügung, auf die hier nur am Rande verwiesen sein soll.
Etablierte Merkmale sind etwa statistische Momente wie Mittelwert, Varianz, Schiefe und Wölbung; Frequenzbasierte Merkmale mittels FFT, wie Peak oder Energie in Frequenzbändern, Körpermodellparameter wie Gelenkwinkel und Orientierungen oder noch abstraktere Varianten. Für unser Beispiel reichen Mittelwert und Varianz völlig aus, sodass wir uns darauf beschränken (Listing 3).

// mean
double[] mean = new double[window[0].length];
for (int col = 0; col < window[0].length; col++) {
  double sum = 0;
  for (int row = 0; row < window.length; row++) {
    sum += window[row][col];
  }
  mean[col] = sum/window.length;
}

// variance
double[] variance = new double[window[0].length];
for (int col = 0; col < window[0].length; col++) {
  double sum = 0;
  for (int row = 0; row < window.length; row++) {
    sum += Math.pow((mean[col]-window[row][col]), 2);
  }
  variance[col] = sum/window.length;
}
W-JAX
 
Ivo Wessel

QWERTZ war gestern! Interfaces von morgen

mit Ivo Wessel (IN BEST HANDS UG)

Dominik Obermaier

Securing MQTT

mit Dominik Obermaier (dc-square GmbH)

Den Klassifikator auswählen und trainieren

Für die Erkennung menschlicher Aktivitäten auf Basis von tragbaren Sensoren findet sich in der Literatur eine Vielzahl verschiedener Klassifizierungsverfahren: angefangen bei einfachen ad hoc zusammengestellten Regelsystemen über String Matching und Dynamic-Time-Warping-Verfahren (DTW) aus der Spracherkennung, Conditional Random Fields (CRF) bis hin zu zeitbehafteten probabilistischen Modellen wie Hidden Markov Models (HMM), dynamischen Bayesschen Netzen (DBN) oder Computational State Space Models (CSSM). Für die Erkennung einfacher Aktivitäten wie in unserem Szenario haben sich diskriminative statistische Maschinenlernverfahren als erfolgreich erwiesen, insbesondere Support Vector Machines (SVM) und C4.5-Entscheidungsbäume. Aber warum die lange Rede, es muss doch ein bestes Verfahren geben. So einfach ist es leider nicht. Das so genannte No-Free-Lunch-Theorem besagt, dass es kein allgemein bestes Klassifizierungsverfahren geben kann, wenn man die Gesamtmenge aller möglichen Probleme oder Datensätze betrachtet. Glücklicherweise gilt das nicht für einzelne Teilmengen, sodass es zumindest möglich ist, für ausgewählte Datensätze das optimale Verfahren zu bestimmen. Dies muss jedoch für jeden Anwendungsfall neu evaluiert werden. Folgende Verfahren wollen wir im Beispiel einsetzen:

  • Naiver Bayes-Klassifikator (NB): Dieses einfache, auf dem Bayesschen Satz basierende Verfahren modelliert die Klassenzugehörigkeit in Abhängigkeit von den Merkmalen als Wahrscheinlichkeitsverteilung. Dabei trifft es der Einfachheit halber die naive Annahme, dass alle Merkmale nur von der Klasse, nicht aber untereinander abhängen, also unkorreliert sind. Trotz dieser in den meisten Fällen nicht zutreffenden Annahme liefert der naive Bayes-Klassifikator in der Praxis häufig überraschend gute Ergebnisse und wird gern zu Vergleichszwecken eingesetzt.
  • Support Vector Machine (SVM): Die SVM überführt die Merkmale mithilfe verschiedener Funktionen in einen höherdimensionalen Raum (wie der so genannte Kernel-Trick), in dem die Klassen möglichst linear voneinander trennbar sind. Um die bestmöglichen Klassengrenzen zu bestimmen, werden Supportvektoren unter den Trainingssamples ausgewählt. Die SVM zeigt häufig sehr gute Erkennungsraten.
  • 5-Entscheidungsbaum: Der Entscheidungsbaum wird schrittweise aufgebaut, indem iterativ das Merkmal ausgewählt wird, das die Klassen am besten trennt, der Information Gain maximiert wird. Dort wird ein Schwellwert als Trennkriterium gesetzt und in beiden Zweigen das nächste Merkmal auf gleiche Weise ausgewählt. Nachdem der Vorgang einige Male wiederholt wurde, wird der Baum gestutzt (Pruning). Er wird also gewissenmaßen verkleinert und optimiert. Auch der C4.5 erzielt häufig sehr gute Ergebnisse.
  • k-Nearest Neigbour (k-NN): Dieser Lazy-Klassifikator macht prinzipiell nichts anderes, als alle Trainingsdaten zu speichern. Wenn ein neuer Datenpunkt klassifiziert werden soll, wird der Abstand zu allen anderen Trainingsdatenpunkten bestimmt, die k-dichtesten ausgewählt und anhand derer die Klassenzugehörigkeit geschätzt. Auch der k-Nearest Neighbour erzielt häufig gute Resultate, benötigt jedoch viel Speicher und ist je nach Umfang der Traingsmenge entsprechend langsam bei der Klassifizierung.

Selbstverständlich müssen all diese Verfahren nicht von Hand implementiert werden. Speziell für Java haben wir für unser Beispiel auf Weka, ein weit verbreitetes Datamining-Werkzeug zurückgegriffen (Kasten: „Weka 3: Waikato Environment for Knowledge Analysis“). Somit steht für alle Verfahren das gleiche Interface zur Verfügung, sodass sie leicht untereinander ausgetauscht werden können.

Lesen Sie auch: Maschinelle Bilderkennung mit Big Data und Deep Learning

Weka 3: Waikato Environment for Knowledge Analysis

Das Waikato Environment for Knowledge Analysis, kurz Weka, ist ein populäres Werkzeug für Data Mining und Machine Learning. Es wurde an der Universität Waikato in Neuseeland entwickelt. Es ist unter der GNU General Public License veröffentlicht und inzwischen in Version 3.8 erhältlich. Weka besteht aus mehreren Stand-alone-Applikationen, wie dem Explorer-Interface, dem Knowledge-Flow-Interface oder der Kommandozeilenumgebung. Darüber hinaus steht ein gut dokumentiertes Java-Interface zur Verfügung, durch das alle in Weka vorhandenen Verfahren auch direkt in eigene Programme eingebunden werden können. Das Paket umfasst wesentlich mehr Funktionen, etwa zur Datenmanipulation oder dem Clustering, als im Beispiel genutzt. Für Weka ist ein umfangreiches Lehrbuch erhältlich [1].

// read an combine data sources
DataSource source = new DataSource(in[0]);
Instances trainingset = source.getDataSet();

for (int index = 1; index < in.length; index++) {
  source = new DataSource(in[index]);
  Instances temp = source.getDataSet();
  for (int k = 0; k < temp.numInstances(); k++) {
    trainingset.add(temp.instance(k));
  }
}
trainingset.setClassIndex(trainingset.numAttributes()-1);

// make classifier (SMO == Support Vector Machine)
Classifier classifier = new SMO();

// build and train classifier
classifier.buildClassifier(trainingset);

Evaluation

Prinzipiell ist die Aktivitätserkennungspipeline an diesem Punkt bereits vollständig, und nach dem Training können sofort neue Daten klassifiziert werden. Wenn man jedoch wissen möchte, wie hoch die Erkennungsrate des Systems ist oder man verschiedene Klassifikatoren miteinander vergleichen möchte, müssen die Verfahren zunächst evaluiert werden. Und hierbei begehen selbst Wissenschaftler immer wieder einige gravierende Fehler. Das Hauptproblem ist, dass die meisten Verfahren je nach Parametrisierung zur Überanpassung neigen und, einfach gesagt, die Trainingsdaten mehr oder weniger auswendig lernen können (insbesondere k-NN, C4.5). Das liefert in der Evaluation zwar hervorragende Erkennungsraten, die mit der Praxis jedoch nichts zu tun haben. Daher ist es zwingend nötig, Training- und Testdatenmenge strikt voneinander zu trennen und die Evaluation mehrfach zu wiederholen. Etabliert ist hier die n-Fold-Kreuzvalidierung. Dabei zerlegt man die Trainingsmenge in n disjunkte, gleich große Teilmengen – meist n=10. Auf allen bis auf einer Teilmenge trainiert und auf der verbliebenen testet man, und das wird n-mal wiederholt. Bei der Leave-one-out-Kreuzvalidierung oder Leave-one-Person-out, wird auf allen bis auf einer Person trainiert und auf der verbliebenen Person getestet. Das wird für jede Person wiederholt. Im Falle eines Aktivitätserkennungssystems, das für mehrere Personen geeignet sein soll, liefert Leave-one-Person-out die realistischsten Einschätzungen, da es am ehesten dem tatsächlichen Einsatzzweck entsprechen würde.

Für die Evaluation selbst gibt es verschiedene Performancekriterien, die wiederum von der geplanten Anwendung oder Fragestellung abhängen. Der Einfachheit halber beschränken wir uns im Beispiel auf Konfusionsmatrizen und davon abgeleitete Maße. Angenommen, wir haben einen binären Klassifikator, der unterscheidet, ob ein Datenpunkt in einer Klasse liegt oder nicht. Dann kann man die Ergebnisse in einer 2×2-Tabelle zählen (Tabelle 1).

Klasse Wirklichkeit Vorhersage
True Positive wahr wahr
False Positive unwahr wahr
True Negative unwahr unwahr
False Negative wahr unwahr

Tabelle 1: Binärer Klassifikator: Liegt der Datenpunkt in einer Klasse oder nicht?

Für Mehr-Klassen-Probleme wird die Tabelle entsprechend vergrößert. Je nach Anwendung wiegen die verschiedenen Fehler unterschiedlich schwer. Ein False Positive eines Spamfilters ist etwa wesentlich problematischer als ein False Negative – landet so doch eine möglicherweise wichtige Mail im Spam. Bei einem Test auf eine schwere Krankheit wäre das aber genau umgekehrt, denn bei False Negative bliebe die Krankheit unentdeckt und könnte den Patienten und eventuell weitere Personen gefährden. Daher gibt es viele abgeleiteter Maße wie Precision, Recall, Specificity, f-Measure etc. In unserem Beispiel ist das alles natürlich weitaus weniger kritisch, wir können uns auf die Accuracy (TP+TN)/(TP+FP+TN+FN) beschränken. Tabelle 2 zeigt die aufsummierte Konfusionsmatrix für alle 22 Personen nach dem Leave-one-Person-out-Validierungsschema mit dem C4.5-Entscheidungsbaum. Das sehr gute Erkennungsergebnis mit einer Accuracy von 99,4 Prozent lässt auf eine gute Robustheit des gewählten Ansatzes im praktischen Einsatz hoffen. Ihrer Anwendung und Experimenten mit eigenen Daten steht nun nichts mehr im Wege. Der Fairness halber muss erwähnt werden, dass die im Beispiel verwendeten Trainingsdaten unter Laborbedingungen und ohne überlagernde Bewegungen aufgezeichnet wurden. Natürlichere Bewegungsabläufe sollten entsprechend schwieriger zu detektieren sein.

Prediction
bike downstairs lie run sit stand upstairs walk
Truth bike 1866 2 0 0 0 1 0 0
downstairs 0 531 2 0 1 0 0 0
lie 0 2 656 0 4 0 0 2
run 0 0 0 728 0 0 0 0
sit 0 0 0 0 597 2 0 13
stand 4 1 1 0 3 655 0 1
upstairs 0 0 0 0 0 0 513 0
walk 0 0 0 0 3 0 1 1692

Tabelle 2: Aufsummierte Konfusionsmatrix des C4.5-Entscheidungsbaums für alle 22 Personen nach dem Leave-one-Person-out-Validierungsschema; in der Diagonalen sind alle korrekten Vorhersagen eingetragen

Fazit

Mithilfe weit verfügbarer Sensoren und frei erhältlicher Bibliotheken und Werkzeuge ist es inzwischen auch ohne wissenschaftlichen Hintergrund möglich, einfache Systeme zur Erkennung menschlicher Aktivitäten auf Basis von tragbarer Sensorik von der Datenaufzeichnung bis zur Evaluation umzusetzen. Sämtliche im Artikel auszugsweise abgedruckten Quelltexte und für das Training und die Evaluation genutzte Sensordaten sind Online abrufbar. Einen etwas tiefer gehenden Einblick in das Thema bieten z. B. das Paper von Andreas Bulling et. al. zu Mustererkennung und Maschinenlernverfahren im Allgemeinen [2], neben dem Buch zu Weka [1] und dem Buch „Pattern Recognition and Machine Learning“ von Christopher Bishop [3] sowie „The Elements of Statistical Learning: Data Mining, Inference, and Prediction“ von Trevor Hastie, Robert Tibshirani und Jerome Friedman [4].

Geschrieben von
Albert Hein
Albert Hein
Albert Hein hat sein Diplom in Informatik an der Universität Rostock im Jahr 2007 zum Thema Aktivitätserkennung mit Beschleunigungssensoren erlangt. Seitdem arbeitet er als wissenschaftlicher Mitarbeiter am Lehrstuhl Mobile Multimediale Informationssysteme. Seine Forschung beinhaltet die Erkennung komplexer Aktivitäten des täglichen Lebens mittels tragbarer Sensorik unter Verwendung von unüberwachten Lernverfahren und kausaler Modellierung. Anwendungen umfassen die Unterstützung von Menschen mit kognitiven Einschränkungen und dem Therapiemonitoring. Albert Hein ist Projektmitarbeiter beim vom BMBF geförderten Projekt INSIDE-DEM.
Prof. Dr.-Ing. Thomas Kirste
Prof. Dr.-Ing. Thomas Kirste
Prof. Dr.-Ing. Thomas Kirste ist Inhaber des Lehrstuhls für Mobile Multimediale Informationssysteme am Institut für Informatik an der Universität Rostock. Forschungsschwerpunkt der Arbeitsgruppe sind intelligente Assistenzsysteme, intelligente Umgebungen, Aktivitätserkennung und Ubiquitous Computing.
Frank Krüger
Frank Krüger
Frank Krüger studierte bis 2006 Informatik an der Universität Rostock. Anschließend arbeitete er als Softwareentwickler und begann im Jahr 2009 als wissenschaftlicher Mitarbeiter des Lehrstuhls Mobile Multimediale Informationssysteme an der Universität Rostock. Im Rahmen seiner Arbeit beschäftigt er sich vor allem mit modellgetriebener Aktitvitäts- und Intentionserkennung.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.