Mobile Health Activity Monitoring
Overview
Developed three task-specific solutions for the ETH Zürich course Mobile Health Activity Monitoring using photoplethysmography (PPG), inertial measurement units (IMU), pressure, and altitude signals. The pipelines combine physiological signal processing with tabular and neural models for robust predictions on small sensor datasets.
🏆 Achievement: Placed 2nd / 47 in breathing-rate estimation, 9th / 47 in heart-rate estimation, and 3rd / 46 in multi-task activity monitoring.
Competition Tasks
🫁 PPG Breathing Rate
2nd / 47 teams. Combined multi-band respiratory features, a 1D CNN, and AutoGluon to estimate breathing rate from 120-second PPG windows.
❤️ PPG Heart Rate
9th / 47 teams. Suppressed motion artifacts with IMU spectra and trained AutoGluon on 70 engineered temporal and frequency-domain features.
⌚ Activity Monitoring
3rd / 46 teams. Built task-specific ensembles for watch location, activity labels, route classification, and step counting from watch and phone sensors.
Key Contributions
- Engineered physiology-aware peak, spectral, autocorrelation, orientation, motion, and route-shape features from multimodal wearable signals.
- Designed validation splits around complete phases and recordings to reduce leakage and better match hidden-test conditions.
- Combined AutoGluon, LightGBM, 1D CNNs, and autoencoder representations according to each target's structure.
- Documented the complete methods, feature equations, model ensembles, and reproduction caveats in public notebooks and solution reports.
Technical Approach
- Signal processing: Butterworth filtering, detrending, resampling, peak detection, Welch spectra, autocorrelation, motion suppression, and dynamic time warping
- Feature engineering: Physiological rhythm, waveform morphology, spectral energy, sensor orientation, route geometry, and vertical-motion features
- Machine learning: AutoGluon tabular ensembles, LightGBM, PyTorch 1D CNNs, and autoencoder-based representation matching
- Ensembling: Fold, seed, feature-view, and model-family averaging with task-specific post-processing