2025-11-24 20:47:04 +01:00

219 lines
13 KiB
TeX

% !TEX encoding = UTF-8 Unicode
% !!! THIS FILE IS UTF-8 !!!
% !!! MAKE SURE YOUR LaTeX Editor IS CONFIGURED TO USE UTF-8 !!!
% Computational and Data Science Course Paper LaTeX Template
% University of Applied Sciences of the Grisons
% ---------------------------------------------------------------
% Author: Corsin Capol corsin.capol@fhgr.ch
% ---------------------------------------------------------------
%-------------------------
% header
% ------------------------
\documentclass[a4paper,12pt]{scrartcl}
\linespread{1.25}
%-------------------------
% packages and config
% ------------------------
\input{packages_and_configuration}
%-------------------------
% document begin
%-------------------------
\begin{document}
%-------------------------
% title
%-------------------------
\thispagestyle{empty}
\input{title}
\newpage
\pagenumbering{Roman}
\tableofcontents
\listoffigures
\listoftables
\newpage
\pagenumbering{arabic}
\section{Einleitung}
Aufgrund des zuletzt verfassten Berichts (\cite{toth_zusammenhang_2025}), der das Ergebnis zeigte, dass keine weiterführenden Erkenntnisse zur Abhängigkeit zwischen spätem Training und schlechtem Schlaf gewonnen werden konnten, konnte keine weiterführende Studie aufgebaut werden.
Aus diesem Grund wird in dieser Arbeit die Vorhersage des Kalorienverbrauchs anhand von Trainingsdaten mit Machine-Learning-Algorithmen untersucht.
\section{Beschreibung zum Datensatz}
Damit ein möglichst optimales Ergebnis eines Machine-Learning-Algorithmus erzielt werden kann, gilt der Grundsatz: Je grösser das Datengerüst mit optimalen und relevanten Daten, desto besser ist das trainierte Modell \cite[55]{geron_praxiseinstieg_ml_2023}.
Daher wurden alle vorhandenen Aktivitäten bei Garmin exportiert und somit das bestehende Datenset erweitert.
Insgesamt beinhaltet der Datensatz 500 Aktivitäten mit unterschiedlichen Sportarten, darunter Laufen, Radfahren, Mixed Martial Arts, Gehen, Wandern, Schwimmen, Krafttraining, Skifahren, Seilspringen und Boxen.
Die Garmin-Uhr zeichnet über 20 Merkmale (Features) einer Aktivität auf.
Für diese Analyse wurden die relevanten Features Aktivitätstyp, Distanz (km), Kalorienverbrauch, Trainingsdauer, Herzfrequenz und Höhenmeter berücksichtigt.
Für das überwachte Lernen mit Machine-Learning-Algorithmen wird der von der Garmin-Uhr berechnete Kalorienverbrauch als Zielwert genutzt.
Garmin berechnet den Kalorienverbrauch primär auf Basis der Herzfrequenzdaten in Kombination mit Benutzerdaten wie Alter, Geschlecht und Gewicht \cite{WasWirdZur}.
\section{Stand der Forschung}
Die zuvor aufgelisteten Merkmale wurden auf basieren aus wissenschaftlichen Erkentnissen zum Kalorienverbrauch.
Die Herzfrequenz ist ein wichtiger Indikator der Anstrengung und verbessert die Präzision der Berechnung des Energieverbrauchs \cite[2]{brage_estimation_2015}.
Der Aktivitätstyp wird vorallem für die Unterscheidung der Aktivitäten benötigt.
Je nach Sportart, körperliche Veranlagung und Training kann der Kalorienverbrauch dahingehend variieren.
Des Weiteren wurde auch die Distanz in Kombination mit der Trainingsdauer berücksichtigt.
%Abhängig von der Tagesverfassung kann die zurückgelegte Distanz mit der Trainingsdauer variieren - Beispiele dafür sind eine bessere Tagesform, Wetterabhängigkeiten (\cite{edwards_evidence_2025}). Auch die Anzahl zurückgelegten Höhenmeter spielen eine Rolle für die optimale Berechnung des Kalorienbedarfs (\cite{noauthor_using_2015}).
%\subsection{Verbesserungspotenzial von Wearables und mögliche Ungenauigkeit von Aktivitäten}
%Die Studie (\cite{odriscoll_how_2020}) belegt, dass auf Basis von einer Meta-Analyse die Aufzeichnungsgeräte der Aktivität in der Genauigkeit auf Basis von unterschiedlichen Faktoren abweichen.
\section{Methodik}
Für die Datenanalyse wurde ein Jupyter Notebook\footnote{\url{https://gitea.fhgr.ch/hollbacdario/cds-1011-health-data-machine-learning}} in Python verwendet.
Die Rohdaten wurden aus der Garmin Webapplikation im CSV-Format exportiert und anschliessend in Python mit dem Modul \texttt{pandas} eingelesen.
Seltene Aktivitäten wurden entfernt, gleichartige zusammengelegt und die Daten für die Analyse aufbereitet.
Für das Feature Höhenmeter weisen mehr als 200 Aktivitäten keine Daten auf.
Da das Löschen dieser Aktivitäten zu einem sehr kleinen Datensatz führen würde, wurden die fehlenden Werte durch 0 ersetzt.
Dies ist fachlich begründet, da fehlende Höheninformationen häufig auf Indoor-Aktivitäten (wie Boxen, Schwimmen oder Krafttraining) hindeuten, bei denen keine Höhenmeter überwunden werden.
Für die Berücksichtigung des Aktivitätstyps kam der OneHotEncoder zum Einsatz.
Der Datensatz umfasst nach dieser Bereinigung 478 aufgezeichnete Aktivitäten.
Mithilfe des Python-Moduls \texttt{seaborn} wurde anschliessend eine Pearson Korrelationsmatrix für alle aufgezeichneten Aktivitäten erstellt.
Basierend auf den bereinigten Daten wurden verschiedene Machine-Learning-Algorithmen mit dem Modul \texttt{scikit-learn} trainiert und ausgewertet. Folgende Regressions-Algorithmen wurden für die Analyse verglichen: Linear Regression, Decision Tree, Gradient Boosting und XGBoost.
Mit Hilfe von Grid Search wurden die besten Hyperparameter für ein bestmögliches Ergebnis gesucht.
%Für den vergleich der Algorithmen werden folgende Metriken verwendet:
% \begin{enumerate}
% \item Der $R^2$-Score (Bestimmtheitsmass) wird verwendet, um die Güte der Anpassung des Modells an die Daten zu bewerten.
% %\[R^2 = 1 - \frac{\sum_{i=1}^{n} (y_i - \hat{y}_i)^2}{\sum_{i=1}^{n} (y_i - \bar{y})^2}\]
% \item Der Mean Absolute Error (MAE) gibt die durchschnittliche absolute Abweichung der Vorhersagen von den tatsächlichen Werten an.
% %\[\text{MAE} = \frac{1}{n} \sum_{i=1}^{n} \left| y_i - \hat{y}_i \right|\]
% \item Der Mean Squared Error (MSE) gewichtet grosse Abweichungen stärker und eignet sich daher zur Identifikation von Ausreissern.
% %\[\text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2\]
% \item Der Root Mean Squared Error (RMSE) stellt den Fehler in der ursprünglichen Einheit der Zielvariablen dar und erleichtert so die Interpretation.
% %\[\text{RMSE} = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2}\]
% \end{enumerate}
\section{Resultate}
Die Analyse der Korrelationsmatrix aller Aktivitäten (siehe \cref{fig:Korrelationsmatrix_features_ml}) zeigt signifikante Abhängigkeiten zwischen den Features Kalorienverbrauch und Aktivitätsdauer.
Dies bedeutet: Je länger eine Aktivität dauert, desto mehr Kalorien werden verbraucht. Auch die Korrelation zwischen Höhenmetern und Kalorienverbrauch ist hoch - in anderen Worten: Mehr Höhenmeter bedeuten einen grösseren Energieaufwand und meist eine längere Trainingseinheit.
Die Korrelation zur Distanz fällt überraschenderweise schwach aus. Die Herzfrequenz ist zwar ein wichtiger Indikator, für sich allein jedoch nicht aussagekräftig. Es wird vermutet, dass Garmin die Herzfrequenz über die gesamte Trainingsdauer integriert und somit präzisere Ergebnisse erzielen kann.
%Es wurden insgesamt drei verschiedene Machine-Learning-Modelle evaluiert:
%Lineare Regression, Decision Tree Regression (mit und ohne Grid-Search) sowie Gradient Boosting Regression (mit und ohne Grid-Search).
Die Performance der unterschiedlichen Algorithmen ist in der \cref{tab:model_performance} \nameref{tab:model_performance} ersichtlich.
Der Algorithmus Gradient Boosting ergab die besten Ergebnisse.
Der Versuch, die Performance mittels XGBoost (Xtreme Gradient Boosting) weiter zu optimieren, blieb jedoch erfolglos.
Bei allen Modellen wurde ein hoher MSE-Wert festgestellt, weshalb eine Outlier-Analyse für das leistungsstärkste Modell (Gradient Boosting) durchgeführt wurde (siehe \cref{fig:rmse_vergleich} \nameref{fig:rmse_vergleich}).
\begin{figure}[H]
\centering
\includegraphics[width=0.5\linewidth]{rmse_comparison.png}
\caption{MSE-Vergleich}
\label{fig:rmse_vergleich}
\end{figure}
Dabei ergaben sich folgende Erkenntnisse: Der Plot der Residuals vs. Predicted Values (siehe \cref{fig:residuals_vs_predicted_values} \nameref{fig:residuals_vs_predicted_values}) zeigt ein um den Nullpunkt gestreutes Muster.
Allerdings liegen diverse Punkte weit entfernt von der Nulllinie, was auf signifikante Ausreisser hindeutet.
Die Verteilung der Residuals ist glockenförmig, weist jedoch lange Ausläufer auf.
Dies bedeutet, dass viele Vorhersagen präzise sind, aber auch grosse Fehler in beide Richtungen auftreten (siehe \cref{fig:distribution_residuals} \nameref{fig:distribution_residuals}).
\begin{figure}[h]
\centering
\begin{subfigure}[t]{0.32\textwidth}
\centering
\includegraphics[width=1\linewidth]{residuals_vs_predicted_values.png}
\caption{Residuals vs. vorhergesagte Werte}
\label{fig:residuals_vs_predicted_values}
\end{subfigure}
\hfill
\begin{subfigure}[t]{0.32\textwidth}
\centering
\includegraphics[width=1\linewidth]{distribution_residuals.png}
\caption{Verteilung der Residuals}
\label{fig:distribution_residuals}
\end{subfigure}
\hfill
\begin{subfigure}[t]{0.32\textwidth}
\centering
\includegraphics[width=1\linewidth]{actual_residuals_vs_predicted_values.png}
\caption{Residual-Analyse}
\label{fig:actual_residuals_vs_predicted_values}
\end{subfigure}
\caption{Residuals}
\end{figure}
Die Analyse der tatsächlichen vs. vorhergesagten Werte (siehe \cref{fig:actual_residuals_vs_predicted_values} \nameref{fig:actual_residuals_vs_predicted_values}) zeigt einen starken linearen Zusammenhang.
Vor allem bei hohem Kalorienverbrauch treten jedoch grosse Abweichungen auf.
Aufgrund der grossen Fehler wurden anschliessend die 10 grössten Ausreisser weitergehend untersucht.
Da das Gradient-Boosting-Modell aufgrund exotischer Ausreisser (extreme Aktivitäten) eine starke Verzerrung aufwies, wurden diese aus dem Datensatz entfernt und das Modell erneut trainiert.
Die Bereinigung der Ausreisser führte bei mehreren Modellen, insbesondere bei XGBoost und Decision Trees, zu deutlich besseren Ergebnissen und einer wesentlich höheren Vorhersagequalität.
%Robuste Modelle wie Gradient Boosting zeigten hingegen kaum Verbesserungen, da sie bereits mit den ursprünglichen Daten sehr stabile Ergebnisse lieferten.
%Insgesamt bestätigt die Analyse, dass die Behandlung von Ausreissern die Generalisierbarkeit und Verlässlichkeit vieler Modelle erheblich steigert, während Gradient Boosting weiterhin die beste Gesamtperformance erzielt.
% \begin{figure}[H]
% \centering
% \includegraphics[width=0.2\linewidth]{actual_residuals_vs_predicted_values.png}
% \caption{Residual-Analyse aktuelle vs. vorhergesagte Werte}
% \label{fig:actual_residuals_vs_predicted_values}
% \end{figure}
% HIER beginnt direkt dein Text, der links neben dem Bild stehen soll:
%Die Analyse der tatsächlichen vs. vorhergesagten Werte zeigt einen starken linearen Zusammenhang.
\begin{table}[H]
\centering
\begin{tabular}{lrrrr}
\hline
\textbf{Modell} & \textbf{MSE} & \boldmath{$R^2$} & \textbf{MAE} & \textbf{RMSE} \\
\hline
Gradient Boosting & 8464.809061 & 0.956683 & 43.902078 & 92.004397 \\
XGBoost (Cleaned) & 8524.848633 & 0.955494 & 46.737837 & 92.330107 \\
Gradient Boosting (Cleaned) & 8556.449590 & 0.955329 & 47.982366 & 92.501079 \\
Tuned Gradient Boosting & 8965.069257 & 0.954123 & 44.806858 & 94.684050 \\
Tuned XGBoost & 11515.125000 & 0.941074 & 47.307045 & 107.308550 \\
Linear Regression (Cleaned) & 14479.907618 & 0.924404 & 74.758745 & 120.332488 \\
Linear Regression & 14922.827346 & 0.923636 & 75.119990 & 122.159025 \\
Tuned Gradient Boosting (Cleaned) & 15201.654713 & 0.920636 & 54.665726 & 123.294991 \\
Tuned Decision Tree (Cleaned) & 15765.286458 & 0.917694 & 61.218750 & 125.559892 \\
Tuned Decision Tree & 27388.197917 & 0.859847 & 69.916667 & 165.493800 \\
Decision Tree (Cleaned) & 33776.677083 & 0.823661 & 84.322917 & 183.784322 \\
Decision Tree & 342554.958333 & -0.752949 & 128.333333 & 585.281948 \\
\hline
\end{tabular}
\caption{Modellvergleich der Regressionsmodellen}
\label{tab:model_performance}
\end{table}
\section{Diskussion}
Die Bearbeitung des Themengebietes zeigt, dass Gradient Boosting im Vergleich zu den anderen Modellen besonders robust gegenüber Ausreissern ist und bereits mit den ursprünglichen Daten eine sehr hohe Vorhersagegenauigkeit erzielt.
Trotz Optimierung durch Hyperparameter-Tuning konnten einige Modelle keine besseren Werte erzielen.
XGBoost und Decision Trees profitieren hingegen stark von der Bereinigung der Ausreisser, was auf ihre höhere Sensitivität gegenüber extremen Werten hinweist.
Hervorzuheben ist die Residualanalyse, welche trotz guter Gesamtmetriken einzelne Aktivitäten mit besonders hohem Kalorienverbrauch identifizierte, bei denen grosse Abweichungen festgestellt wurden.
Dieser Befund unterstreicht die Bedeutung einer gezielten Ausreisserbehandlung für die Modellstabilität und Generalisierbarkeit.
Für eine verlässliche Vorhersage werden eine sorgfältige Datenaufbereitung sowie die Identifikation und Behandlung von Ausreissern als essenziell erachtet.
%-------------------------
% literature
%-------------------------
\newpage
\renewcommand{\refname}{Literaturverzeichnis} % For article
\bibliography{library}
%-------------------------
% appendix
%-------------------------
\newpage
\section{Anhang}
\begin{figure}[H]
\centering
\includegraphics[width=0.9\linewidth]{Korrelationsmatrix_features_ml.png}
\caption{Korrelationsmatrix Features}
\label{fig:Korrelationsmatrix_features_ml}
\end{figure}
\end{document}