“Mood optimizer” — How to boost your mood in a simple way
This project was carried out as part of the TechLabs “Digital Shaper Program” in Münster (Term 2020/01).
Abstract: Our goal was to use personal data derived from fitness trackers and longitudinal self-report questionnaires to make recommendations on how to generally optimize daily mood levels of individuals. With the selected data, we were able to visualize the relationships between the examined variables (e.g. sleep quality, physical activity, mood and stress) using Python, and to make predictions about the likely mood level with random forest models.
Datenaufbereitung
Als nächsten Schritt selektierten wir die für uns relevanten Variablen und bestimmten die unabhängigen und abhängigen Variablen (siehe Tabelle 1). Dabei fiel uns auf, dass der Datensatz weniger die Performanz der Teilnehmer erfasste und eher Wohlbefinden und Stimmung gemessen hat. Daher entschieden wir uns, unseren Projektfokus von einem „Performance Optimizer“ hin zu einem „Mood optimizer“ zu verschieben.
Der PM Datensatz besteht aus vielen einzelnen Dateien, weshalb wir uns für eine erleichterte Auswertung dazu entschieden, eine große Excel-Datei mit einzelnen Sheets für die Personen zu erstellen. Wir führten die von uns selektierten Variablen der Datensätze anhand ihrer Zeitstempel zusammen. Dazu wurden zunächst Pfade zu den unterschiedlichen Datensätzen den Variablen zugeordnet, auf welche dann innerhalb einer Schleife zugegriffen wurde. In der Schleife wurden die Datensätze zunächst einzeln bereinigt, dann zusammengefügt und schließlich gruppiert, sodass ein Datenpunkt pro Tag blieb. Anschließend wurde der resultierende Datensatz jeweils mit dem Personencode als Schlüssel in einem dictionary gespeichert, aus welchem letztendlich eine Excel-Tabelle mit mehreren Sheets erstellt wurde. Hinsichtlich fehlender Werte fiel auf, dass eine Person ausgeschlossen werden musste, da keine Datenpunkte für die von uns untersuchten abhängigen Variablen vorlag.
Datenanalyse
Um uns einen Überblick über die Daten zu verschaffen, visualisierten wir die Zusammenhänge zwischen den Variablen und erstellten eine Korrelationsmatrix (siehe Abbildung 1). Das Ergebnis verwunderte uns, da einige Korrelationen genau entgegen unseren Vermutungen ausfielen, weswegen wir die Skalierung in der Originalstudie überprüften. Glücklicherweise stellte sich heraus, dass diese Variablen anders gepolt waren (z.B. 1 = viel Stress, 5 = wenig Stress).
Random Forest Model
Als nächstes überlegten wir, wie wir nun mit den bereinigten Daten am besten unserem Ziel näherkommen konnten, Vorhersagen für die Stimmung zu treffen. Wir entschieden uns für die Machine Learning Methode „Random Forest Modell“. Bei dieser Methode wird der Datensatz in zwei Teile geteilt. Mit einem Teil des Datensatzes (dem „Trainingsdatensatz“) werden die Zusammenhänge zwischen Variablen und wie sie gewichtet werden sollten erprobt und im zweiten Schritt mit einem anderen Teil des Datensatzes (dem “Testdatensatz”) validiert. Da allgemein bei der Analyse der Daten auffiel, dass die Mischung aus interpersonellen und intrapersonellen Datenpunkten die Datenstruktur relativ komplex machte und gleichzeitig wir die praktische Überlegung anstellten, welche Variablen mit wenig Aufwand im Alltag getrackt werden können, wurden in das Random Forest Model nur die Variablen “Schlaflänge”, „Schlafqualität“, „Flüssigkeitsaufnahme“, „Tägliche Schritte“, „Sitzende Minuten pro Tag“ und „sehr aktive Minuten am Tag“ aufgenommen. Die Varianzaufklärung unseres Modells lag bei 16%.
Als kleinen Test, wie das Modell bei verschiedenen Eingabewerten funktioniert, haben wir in Python ein paar Fragen eingespeichert, die man beantworten muss, um einen vorhergesagten Stimmungswert zu erhalten. Unser bisheriger Test ergab dabei, dass es nahezu unmöglich ist, 5/5 auf der Stimmungsskala ausgegeben zu bekommen. Dies liegt vermutlich daran, dass die volle Punktzahl bei den befragten 16 Personen fast nie angegeben wurde. Ansonsten machte das Modell aber schon recht plausible Vorhersagen von unserer Stimmung.
Ausblick: Wie kann unser Modell nun praktisch angewendet werden?
Eine unserer Überlegungen war es, dass man mit den nötigen WebDev-Skills eine App entwickelt, die die Werte von Fitnessarmbändern trackt und automatisierte Hinweise gibt (Beispielsweise: „Deine Stimmung könnte sich verschlechtern, gehe doch ein paar Schritte”, oder “Schlechte Laune? Trink ein Glas Wasser!”)
Man könnte als Feature hier auch hinzufügen, dass die Nutzer das Modell mit ihren eigenen Daten weiter trainieren, um es noch besser auf sie selbst abzustimmen.
Insgesamt war unsere Untersuchung des Datensatzes schon aufschlussreich, bietet aber in jedem Fall auch Raum für weitere Ideen und Anwendungen.
Vielleicht kann etwas davon auch in einem anderen Techlabs-Projekt umgesetzt werden :).
Team:
Charlotta Jacobsen
Lena Tangelder
Leonie Meyer
Mentor:
Maximilian Maiberger