| Literature DB >> 32751374 |
Christina Neuwirth1, Cory Snyder2,3, Wolfgang Kremser1, Richard Brunauer1, Helmut Holzer4, Thomas Stöggl2,3.
Abstract
In alpine skiing, four commonly used turning styles are snowplow, snowplow-steering, drifting and carving. They differ significantly in speed, directional control and difficulty to execute. While they are visually distinguishable, data-driven classification is underexplored. The aim of this work is to classify alpine skiing styles based on a global navigation satellite system (GNSS) and inertial measurement units (IMU). Data of 2000 turns of 20 advanced or expert skiers were collected with two IMU sensors on the upper cuff of each ski boot and a mobile phone with GNSS. After feature extraction and feature selection, turn style classification was applied separately for parallel (drifted or carved) and non-parallel (snowplow or snowplow-steering) turns. The most important features for style classification were identified via recursive feature elimination. Three different classification methods were then tested and compared: Decision trees, random forests and gradient boosted decision trees. Classification accuracies were lowest for the decision tree and similar for the random forests and gradient boosted classification trees, which both achieved accuracies of more than 93% in the parallel classification task and 88% in the non-parallel case. While the accuracy might be improved by considering slope and weather conditions, these first results suggest that IMU data can classify alpine skiing styles reasonably well.Entities:
Keywords: accelerometer; decision trees; gradient boosted trees; gyroscope; random forests; sensors; ski; sports analytics
Mesh:
Year: 2020 PMID: 32751374 PMCID: PMC7435691 DOI: 10.3390/s20154232
Source DB: PubMed Journal: Sensors (Basel) ISSN: 1424-8220 Impact factor: 3.576
Figure 1Inertial measurement unit (IMU) axes (accelerometer and gyroscope).
Gives an overview of the snow conditions during data collection.
| ID | Snow Conditions |
|---|---|
| S01 | hard groomed |
| S03 | hard groomed |
| S04 | soft (5 cm new snow) |
| S05 | hardpack |
| S06 | hardpack |
| S07 | soft groomed |
| S08 | soft groomed |
| S09 | soft groomed |
| S10 | hard groomed |
| S11 | hard groomed |
| S12 | hard groomed |
| S14 | hardpack |
| S15 | hardpack |
| S16 | soft (6 cm new snow) |
| S17 | hardpack |
| S19 | hardpack |
| S20 | hardpack |
| S21 | hardpack groomed |
| S23 | ice |
| S24 | refrozen spring snow |
Figure 2Accelerometer data for each style.
Figure 3Gyroscope data for each style.
Figure 4Flowchart from raw data to classification.
Figure 5Training and testing data set.
Figure 6Features for the parallel/non-parallel distinction. The features are visualized via boxplots which show the summary statistics. The box represents the interquartile range (IQR = third quartile–first quartile), the thick line the median. The whiskers show the minimum and maximum values without outliers (1.5*IQR), the black dots the outliers which lie outside 1.5*IQR.
Figure 7Decision tree for pre-classification (max_TD_AbsRate_Roll = maximum absolute roll axis angular velocity, max_TD_Symmetry_Roll = maximum symmetry of the roll axis angular velocity).
List of features for drifted and carved turn prediction.
| Feature | Description |
|---|---|
| sd_TD_Gyro_Yaw | Standard deviation of gyroscope roll axis angular velocity of turn (mean of left and right boot) (rad/s) |
| max_Speed | Maximum speed of turn (m/s) |
| mean_Speed | Mean speed of turn (m/s) |
| max_TD_Gyro_Roll | Max gyroscope roll axis angular velocity of turn (mean of left and right boot) (rad/s) |
| min_Speed | Minimum speed of turn (m/s) |
| mean_EA_Edge_Angle | Mean estimated inclination angle of turn (mean of left and right boot) (rad/s) |
| Turn_DurationSec | Duration of turn (s) |
| sd_TD_Gyro_Roll | Standard deviation of gyroscope roll axis angular velocity of turn (mean of left and right boot) (rad/s) |
| sd_TD_Decision_Yaw | Standard deviation of filtered (using a fourth-order, zero-lag, low-pass Butterworth filter with cut-off frequency of 0.5 Hz) yaw axis angular velocity of turn (mean of left and right boot) (rad/s) |
| max_TD_Gyro_Yaw | Maximum yaw axis angular velocity of turn (mean of left and right boot) (rad/s) |
| mean_GYRO_Z_filt | Mean of the maximum of the gyroscope of the |
| max_TD_AbsRRate_Roll | Maximum absolute roll axis angular velocity of turn (mean of left and right boot) (rad/s) |
| max_TD_Decision_Roll | Maximum filtered (using a fourth-order, zero-lag, low-pass Butterworth filter with cut-off frequency of 0.5 Hz) roll axis angular velocity of turn (mean of left and right boot) (rad/s) |
| Turn_Size | Size of turn |
| sd_TD_AbsRRate_Roll | Standard deviation of absolute roll axis angular velocity of turn (mean of left and right boot) (rad/s) |
| sd_TD_Decision_Roll | Standard deviation of filtered (using a fourth-order, zero-lag, low-pass Butterworth filter with cut-off frequency of 0.5 Hz) roll axis angular velocity of turn (mean of left and right boot) (rad/s) |
| mean_TD_Gyro_Roll_filt | Mean gyroscope roll axis angular velocity of turn (mean of left and right boot) (rad/s) |
| max_TD_Decision_Yaw | Maximum filtered (using a fourth-order, zero-lag, low-pass Butterworth filter with cut-off frequency of 0.5 Hz) yaw axis angular velocity of turn (mean of left and right boot) (rad/s) |
| max_TD_Symmetry_Roll | Maximum symmetry of the roll axis angular velocity of turn between left and right boot (rad/s) |
| mean_GYRO_Y_filt | Mean of the maximum of the gyroscope |
| mean_TD_Gyro_Yaw | Mean gyroscope yaw axis angular velocity of turn (mean of left and right boot) (rad/s) |
| sd_TD_Symmetry_Roll | Standard deviation of the symmetry of the roll axis angular velocity of turn between left and right boot (rad/s) |
| mean_TD_Gyro_Roll | Mean gyroscope roll axis angular velocity of turn (mean of left and right boot) (rad/s) |
| max_EA_Edge_Angle | Maximum estimated inclination angle of turn (mean of left and right boot) (degree) |
| EADiff_Left_Right | Mean difference of the absolute estimated inclination angle of left and estimated inclination angle of right foot of turn (degree) |
List of features for snowplow and snowplow-steered turn prediction.
| Feature | Description |
|---|---|
| Turn_DurationSec | Duration of Turn (s) |
| mean_TD_Gyro_Roll_filt | Mean gyroscope roll axis angular velocity of turn (mean of left and right boot) (rad/s) |
| max_TD_Symmetry_Roll | Maximum symmetry of the roll axis angular velocity of turn between left and right boot (rad/s) |
| max_EA_Edge_Angle | Maximum estimated inclination angle of turn (mean of left and right boot) (degree) |
| locEA_Edge_Angle | Position (1–100) of the max estimated inclination angle of the turn |
| mean_EA_Edge_Angle | Mean estimated inclination angle of turn (mean of left and right boot) (degree) |
| mean_EA_Edge_AngleLeftRight | Mean of the maximum estimated inclination angle of the left and right foot of turn (degree) |
| mean_ACC_Z_filt | Mean of the maximum of the acceleration of the |
| mean_ACC_Y_filt | Mean of the maximum of the acceleration of the |
| mean_ACC_X_filt | Mean of the maximum of the acceleration of the |
| mean_GF_GForce_PitchYaw | Mean resultant frontal plane acceleration of turn (mean of left and right boot) (m/s2) |
| max_GF_GForce_PitchYaw | Maximum resultant frontal plane of turn (mean of left and right boot) (m/s2) |
| mean_GF_GForce_PitchYaw_LeftRight | Mean of the maximum resultant frontal plane acceleration of the left and right foot of turn (m/s2) |
| Left_Right_Acc_filt | Mean of the maximal acceleration of the left and right foot of each turn (m/s2) |
| mean_TD_AbsRRate_Roll | Mean absolute roll axis angular velocity (mean of left and right boot) (rad/s) |
| mean_TD_Decision_Roll | Filtered (using a fourth-order, zero-lag, low-pass Butterworth filter with cut-off frequency of 0.5 Hz) roll axis angular velocity (mean of left and right boot) (rad/s) |
| mean_TD_Gyro_Roll | Mean gyroscope roll axis angular velocity of turn (mean of left and right boot) (rad/s) |
| mean_TD_Symmetry_Roll | Mean symmetry roll axis angular velocity of turn between left and right boot (rad/s) |
| sd_TD_Symmetry_Roll | Standard deviation of symmetry of the roll axis angular velocity of turn between left and right boot (rad/s) |
| sd_TD_Symmetry_Yaw | Standard deviation of symmetry of the yaw axis angular velocity of turn between left and right boot (rad/s) |
List of parameters used in models.
| Model | Parameters | |
|---|---|---|
| Parallel Turns | Non-Parallel Turns | |
| Decision tree (package: rpart [ | cp = 0.05076923. | cp = 0 |
| Random Forest (package: randomForest [ | mtry= 2, ntree = 1000 | mtry= 13, ntree = 1000 |
| Gradient boosted decision tree (package: xgboost [ | max.depth = 3 | max.depth = 3 |
Confusion matrix for parallel turns.
| Parallel Turns | Actual | ||
|---|---|---|---|
| Drifting | Carving | ||
|
| Drifting | True drifting turns (tp) | False carving turns (fn) |
| Carving | False drifting turns (fp) | True carving turns (tn) | |
Confusion matrix for non-parallel turns.
| Non-Parallel Turns | Actual | ||
|---|---|---|---|
| Snowplow | Snowplow-Steering | ||
|
| Snowplow | True snowplow turns (tp) | False snowplow-steering turns (fn) |
| Snowplow-Steering | False snowplow turns (fp) | True snowplow-steering turns (tn) | |
Performance metrics for model comparison (for the abbreviations, please see Table 1 or Table 2).
| Metrics | Formula |
|---|---|
| Accuracy (acc) |
|
| Sensitivity (sn) |
|
| Specificity (sp) |
|
| Geometric mean |
|
R packages.
| R Package Name | Version |
|---|---|
| caret [ | 6.0–84 |
| data.table [ | 1.12.2 |
| tidyr [ | 1.0.0 |
| dplyr [ | 0.8.3 |
| packrat [ | 0.5.0 |
| randomForest [ | 4.6–14 |
| xgboost [ | 0.90.0.2 |
| rpart [ | 4.1–15 |
| rpart.plot [ | 3.0.8 |
| ggplot2 [ | 3.2.1 |
Figure A1Optimal number of features for the parallel and non-parallel model.
Figure A2Decision tree for the classification of the parallel turns (max_Speed = maximum speed of turn, sd_TD_AbsRRate_Roll = standard deviation of absolute roll axis angular velocity of turn, sd_TD_Gyro_Yaw = standard deviation of gyroscope roll axis angular velocity of the turn).
Figure A3Decision tree for the classification of the non-parallel turns (mean_EA_Edge_AngleLeftRight = mean of the maximum estimated inclination angle of the left and right foot of turn, mean_ACC_X_filt = mean of the maximum of the acceleration of the X-axis of left and right foot of turn, Turn_DurationSec = duration of turn (in seconds)).
Figure 8Variable importance plot of the 10 most important variables of the gradient boosted tree.
Figure 9Variable importance plot of the 10 most important variables of the random forest.
Performance measures for classification of parallel turns on test data set.
| Accuracy | Sensitivity | Specificity | Geometric Mean | |
|---|---|---|---|---|
| Decision Tree | 0.885 | 0.901 | 0.866 | 0.883 |
| Random Forest | 0.948 | 0.938 | 0.960 | 0.949 |
| Boosted Tree | 0.953 | 0.959 | 0.945 | 0.951 |
Performance measures for classification of non-parallel turns on test data set.
| Accuracy | Sensitivity | Specificity | Geometric Mean | |
|---|---|---|---|---|
| Decision Tree | 0.822 | 0.688 | 0.860 | 0.769 |
| Random Forest | 0.890 | 0.688 | 0.947 | 0.807 |
| Boosted Tree | 0.877 | 0.688 | 0.930 | 0.800 |
Confusion matrix for parallel turns—Decision tree.
| Parallel Turns | Actual | ||
|---|---|---|---|
| Carving | Drifting | ||
|
| Carving | 218 (90.1%) | 27 (13.4%) |
| Drifting | 24 (9.9%) | 174 (86.6%) | |
Confusion matrix for parallel turns—Random forest.
| Parallel Turns | Actual | ||
|---|---|---|---|
| Carving | Drifting | ||
|
| Carving | 227 (93.8%) | 8 (4.0%) |
| Drifting | 15 (6.2%) | 193 (96.0%) | |
Confusion matrix for parallel turns—Gradient boosted tree.
| Parallel Turns | Actual | ||
|---|---|---|---|
| Carving | Drifting | ||
|
| Carving | 232 (95.6%) | 11 (5.5%) |
| Drifting | 10 (4.1%) | 190 (94.5%) | |
Confusion matrix for non-parallel turns—Decision tree.
| Non-Parallel Turns | Actual | ||
|---|---|---|---|
| Snowplow-Steering | Snowplow | ||
|
| Snowplow-Steering | 11 (68.8%) | 8 (14.0%) |
| Snowplow | 5 (31.2%) | 49 (86.0%) | |
Confusion matrix for non-parallel turns—Random forest.
| Non-Parallel Turns | Actual | ||
|---|---|---|---|
| Snowplow-Steering | Snowplow | ||
|
| Snowplow-Steering | 11 (68.5%) | 3 (5.3%) |
| Snowplow | 5 (31.2%) | 54 (94.7%) | |
Confusion matrix for non-parallel turns—Gradient boosted tree.
| Non-Parallel Turns | Actual | ||
|---|---|---|---|
| Snowplow-Steering | Snowplow | ||
|
| Snowplow-Steering | 11 (68.5%) | 4 (7.0%) |
| Snowplow | 5 (31.2%) | 53 (93.0%) | |