| Literature DB >> 30691148 |
Aghil Esmaeili Kelishomi1, A H S Garmabaki2, Mahdi Bahaghighat3, Jianmin Dong4.
Abstract
An automatic, fast, and accurate switching method between Global Positioning System and indoor positioning systems is crucial to achieve current user positioning, which is essential information for a variety of services installed on smart devices, e.g., location-based services (LBS), healthcare monitoring components, and seamless indoor/outdoor navigation and localization (SNAL). In this study, we proposed an approach to accurately detect the indoor/outdoor environment according to six different daily activities of users including walk, skip, jog, stay, climbing stairs up and down. We select a number of features for each activity and then apply ensemble learning methods such as Random Forest, and AdaBoost to classify the environment types. Extensive model evaluations and feature analysis indicate that the system can achieve a high detection rate with good adaptation for environment recognition. Empirical evaluation of the proposed method has been verified on the HASC-2016 public dataset, and results show 99% accuracy to detect environment types. The proposed method relies only on the daily life activities data and does not need any external facilities such as the signal cell tower or Wi-Fi access points. This implies the applicability of the proposed method for the upper layer applications.Entities:
Keywords: context awareness; human daily activity; location-based services; machine learning; sensor-based indoor-outdoor detection; smartphone motion sensors
Mesh:
Year: 2019 PMID: 30691148 PMCID: PMC6387420 DOI: 10.3390/s19030511
Source DB: PubMed Journal: Sensors (Basel) ISSN: 1424-8220 Impact factor: 3.576
The state-of-art for sensor-based indoor/outdoor detection approaches.
| References | Sensor Types | Proposed Method | Overall Accuracy |
|---|---|---|---|
| Tempio [ | Temperature | Environmental temperature measurements are classified using a threshold based on the user’s comfort zone and weather forecasts | ---- |
| IO Detector [ | Light, cell, and magnetometer | The system performance was checked based on sub-detectors including light-, cell-, magnetism- and a hybrid detector | Around 85%. |
| Semi-supervised [ | light, cell, and Sound | Individual modules on diverse phones are used in unfamiliar environments in three different scenarios, including cluster-then-label, self-training, and co-training | 92% for unfamiliar places |
| Door Events [ | Barometer | At the moment the door of a building sis opened or closed, the indoor pressure increases, and a smartphone’s barometer can measure the pressure increment. | 99% for door event detection |
| Sound [ | Microphone | A special chirp sound probe is propagated by a mobile device speaker and then collected back through device microphone to use as input dataset. | Roughly 95% accuracy at 46 different known places |
| GSM signal [ | GSM signal of cell tower | The different GSM signal intensities of four environment types (deep indoors, semi-indoors, semi-outdoors, outdoors) are classified. | 95.3% |
| WIFI Boost [ | Wi-Fi | The intensity variations of Wi-Fi signals are classified into inside/outside environments or the number of access points around the devices is measured. | Around 2.5% mean error rate for familiar places. |
| SenseIO [ | Accelerometer, gyroscope, light, cell, Wi-Fi | A multi-modal approach with a framework including four modules (activity recognition, light, Wi-Fi and GSM) is created. | 92% |
Figure 1The general schema of the proposed framework.
Figure 2The smartphone position distribution in the HASC2016 dataset [33].
Figure 3The general overview of data preprocessing.
The list of features extracted separately from accelerometers and gyroscopes [33,39].
| Label | Description | Equation | Size |
|---|---|---|---|
| Avg_ | Average of samples in each axis separately | 1 × 8 | |
| SD_ | The standard deviation of samples in each axis separately | 1 × 8 | |
| MinMax_ | The difference between “Maximum Value and “Minimum Value” of samples in each axis |
| 1 × 8 |
| Var_ | Moving variance of samples on the x-, y-, and z-axes |
| 1 × 6 |
| SMA_ | The simple moving average of data |
| 1 × 2 |
| E_ | First eigenvalue of moving covariance between samples |
| 1 × 2 |
| ME_ | Moving energy of sensor’s signal on each axis |
| 1 × 8 |
| MC_ | Moving correlation of sensor data between two axes |
| 1 × 6 |
| MMA_ | The moving mean of orientation vector of sensor’s data |
| 1 × 2 |
| MVA_ | Moving variance of orientation vector of sensor’s data |
| 1 × 2 |
| MEA_ | Moving energy of orientation vector of sensor’s data |
| 1 × 2 |
| Spec.No_ | The power spectrum is computed from the FFT result. From 0.5 Hz to 5 Hz (in 0.5 Hz intervals) for x, y, z, and n for both accelerometer and gyroscope | 1 × 80 | |
| Wavelet_STD_index.D.No._ | The standard deviation of the acceleration signal at level 2 to 5 corresponding to 0.78–18.75 Hz in three directions (i.e., AP/ML/VL) for x-, y- and z-axes | 1 × 36 | |
| Wavelet_RMS_index.D.No._ | Root mean square values of AP and VT acceleration signals for the x-, y-, and z-axes | 1 × 24 | |
The list of features that are extracted from both accelerometer and gyroscope samples [35].
| Label | Description | Equation | Size |
|---|---|---|---|
| MI_ | The difference between the movement intensity of the accelerometer and gyroscope |
| 1 × 1 |
| Var_MI_ | The moving variance of sample intensity data | 1 × 3 | |
| SMA_ | The simple moving average of the variance between acceleration and gyroscope data |
| 1 × 1 |
| E_ | First eigenvalue of moving covariance of difference between acceleration and gyroscope data |
| 1 × 1 |
| ME_ | Moving energy of acceleration and gyroscope data |
| 1 × 4 |
| MMA_ | The moving mean of the orientation vector of the variation between acceleration and gyroscope data | 1×1 | |
| MVA_ | Moving variance of the orientation vector of the variance between acceleration and gyroscope data | 1 × 1 | |
| MEA_ | Moving energy of the orientation vector of the variance between acceleration and gyroscope data |
| 1 × 1 |
| SMAMCS_ | Moving energy of orientation vector of sensor data |
| 1 × 3 |
The list of essential features for stay activity due to different scenarios.
| Scenario | List of Features | Size |
|---|---|---|
| Only accelerometer |
| 8 |
| Only gyroscope |
| 25 |
| Accelerometer and gyroscope |
| 7 |
| Balanced dataset |
| 8 |
| Unbalanced dataset |
| 5 |
| Selected-features |
| 7 |
The number of selected features according to different activity datasets and scenarios.
| Activity | Only Gyro 1 | Only Acc 2 | Acc 2 and Gyro 1 | Balanced Data | Unbalanced Data | Selected Features |
|---|---|---|---|---|---|---|
| Walk | 19 | 25 | 54 | 43 | 39 | 42 |
| Jog | 17 | 36 | 61 | 40 | 44 | 59 |
| Skip | 12 | 34 | 53 | 36 | 51 | 51 |
| Stay | 25 | 8 | 7 | 8 | 5 | 7 |
| Stairs Up | 12 | 31 | 32 | 36 | 40 | 34 |
| Stairs Down | 18 | 32 | 48 | 38 | 24 | 46 |
1 Gyroscope, 2 Accelerometer
The list of selected features due to the different activity datasets in the only gyroscope scenario.
| Feature Name | Walk | Jog | Skip | Stay | Stairs up | Stairs down |
|---|---|---|---|---|---|---|
| E_ Gyro | ✓ | ✓ | ||||
| SMA_ Gyro | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Avg_ Gyro _X | ✓ | |||||
| Avg_ Gyro _Y | ✓ | ✓ | ✓ | |||
| Avg_ Gyro _Z | ✓ | ✓ | ||||
| Avg_ Gyro _N | ✓ | ✓ | ✓ | ✓ | ✓ | |
| MinMax_ Gyro _X | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| MinMax_ Gyro _Y | ✓ | ✓ | ✓ | ✓ | ✓ | |
| MinMax_ Gyro _Z | ✓ | ✓ | ✓ | |||
| MinMax_ Gyro _N | ✓ | ✓ | ✓ | |||
| SD_ Gyro _X | ✓ | |||||
| SD_ Gyro _Y | ✓ | |||||
| SD_ Gyro _Z | ✓ | ✓ | ✓ | ✓ | ✓ | |
| SD_ Gyro _N | ✓ | |||||
| ME_ Gyro _X | ✓ | ✓ | ✓ | ✓ | ✓ | |
| ME_ Gyro _Y | ✓ | ✓ | ||||
| ME_ Gyro _Z | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Var_ Gyro _X | ✓ | ✓ | ||||
| Var_ Gyro _Y | ✓ | ✓ | ✓ | |||
| Var_ Gyro _Z | ✓ | |||||
| MC_ Gyro _XY | ✓ | ✓ | ✓ | ✓ | ✓ | |
| MC_ Gyro _XZ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| MC_ Gyro _YZ | ✓ | ✓ | ✓ | ✓ | ||
| Var_MI_Gyro | ✓ | |||||
| SMAMCS_ Gyro _X | ✓ | ✓ | ✓ | ✓ | ✓ | |
| SMAMCS_ Gyro _Y | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| SMAMCS_ Gyro _Z | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Spec2_ Gyro _Z | ✓ | |||||
| Spec3_ Gyro _Y | ✓ | |||||
| Spec3_ Gyro _X | ✓ | |||||
| Spec3_ Gyro _Z | ✓ | |||||
| Spec5_ Gyro _Z | ✓ | |||||
| Spec5_ Gyro _N | ✓ | |||||
| Spec9_ Gyro _N | ✓ |
List of selected features due to the different activity datasets in the accelerometer only scenario.
| Feature Name | Walk | Jog | Skip | Stay | Stairs up | Stairs down |
|---|---|---|---|---|---|---|
| Avg_Acc_X | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Avg_Acc_Y | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Avg_Acc_Z | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Avg_Acc_N | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| SD_Acc_X | ✓ | ✓ | ✓ | ✓ | ||
| SD_Acc_Y | ✓ | ✓ | ||||
| SD_Acc_Z | ✓ | ✓ | ||||
| SD_Acc_N | ✓ | ✓ | ✓ | ✓ | ||
| MinMax_Acc_X | ✓ | ✓ | ||||
| MinMax_Acc_Y | ✓ | ✓ | ✓ | ✓ | ||
| MinMax_Acc_Z | ✓ | ✓ | ||||
| MinMax_Acc_N | ✓ | ✓ | ✓ | ✓ | ||
| Var_Acc_X | ✓ | ✓ | ✓ | ✓ | ||
| Var_Acc_Y | ✓ | |||||
| Var_Acc_Z | ✓ | ✓ | ✓ | |||
| Var_MI_Acc | ✓ | ✓ | ✓ | |||
| SMA_Acc | ✓ | ✓ | ✓ | ✓ | ✓ | |
| E_Acc | ✓ | ✓ | ✓ | ✓ | ||
| MC_Acc_XY | ✓ | ✓ | ||||
| MC_Acc_XZ | ✓ | |||||
| MC_Acc_YZ | ✓ | ✓ | ✓ | |||
| ME_Acc_X | ✓ | ✓ | ✓ | ✓ | ✓ | |
| ME_Acc_Y | ✓ | ✓ | ✓ | ✓ | ✓ | |
| ME_Acc_Z | ✓ | ✓ | ✓ | |||
| MMA_Acc | ✓ | ✓ | ✓ | ✓ | ✓ | |
| MVA_Acc | ✓ | ✓ | ✓ | |||
| MEA_Acc | ✓ | ✓ | ✓ | |||
| ME_Acc_XY | ✓ | ✓ | ✓ | ✓ | ✓ | |
| ME_Acc_XZ | ✓ | ✓ | ✓ | |||
| ME_Acc_YZ | ✓ | ✓ | ✓ | ✓ | ✓ | |
| SMAMCS_Acc_X | ✓ | ✓ | ✓ | ✓ | ✓ | |
| SMAMCS_Acc_Y | ✓ | ✓ | ✓ | ✓ | ✓ | |
| SMAMCS_Acc_Z | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Spec9_Acc_N | ✓ | |||||
| Spec5_Acc_N | ✓ | |||||
| Spec6_Acc_N | ✓ | |||||
| Wavelet_STD_aD2_Acc_X | ✓ | ✓ | ✓ | ✓ | ||
| Wavelet_STD_aD2_Acc_Y | ✓ | |||||
| Wavelet_STD_aD2_Acc_Z | ✓ | ✓ | ||||
| Wavelet_STD_aD3_Acc_Y | ✓ | |||||
| Wavelet_STD_dA3_Acc_X | ✓ | ✓ | ✓ | |||
| Wavelet_STD_dA3_Acc_Y | ✓ | ✓ | ✓ | |||
| Wavelet_STD_dA3_Acc_Z | ✓ | ✓ | ✓ | |||
| Wavelet_STD_dD3_Acc_X | ✓ | ✓ | ✓ | |||
| Wavelet_STD_dD3_Acc_Y | ✓ | ✓ | ||||
| Wavelet_STD_dD3_Acc_Z | ✓ | ✓ | ✓ | |||
| Wavelet_RMS_aD2_Acc_X | ✓ | ✓ | ✓ | |||
| Wavelet_RMS_aD2_Acc_Z | ✓ | |||||
| Wavelet_RMS_dA3_Acc_X | ✓ | |||||
| Wavelet_RMS_dA3_Acc_Z | ✓ | ✓ | ✓ | |||
| Wavelet_RMS_dD3_Acc_X | ✓ | ✓ | ✓ | |||
| Wavelet_RMS_dD3_Acc_Z | ✓ |
List of selected features due to the different activity datasets in the accelerometer and gyroscope scenario.
| Feature Name | Walk | Jog | Skip | Stay | Stairs up | Stairs down |
|---|---|---|---|---|---|---|
| Avg_Acc_X | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Avg_Acc_Y | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Avg_Acc_Z | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Avg_Acc_N | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| SD_Acc_X | ✓ | ✓ | ✓ | ✓ | ||
| SD_Acc_Y | ✓ | ✓ | ||||
| SD_Acc_Z | ✓ | ✓ | ||||
| SD_Acc_N | ✓ | ✓ | ✓ | ✓ | ||
| MinMax_Acc_X | ✓ | ✓ | ||||
| MinMax_Acc_Y | ✓ | ✓ | ✓ | ✓ | ||
| MinMax_Acc_Z | ✓ | ✓ | ||||
| MinMax_Acc_N | ✓ | ✓ | ✓ | ✓ | ||
| Var_Acc_X | ✓ | ✓ | ✓ | ✓ | ||
| Var_Acc_Y | ✓ | |||||
| Var_Acc_Z | ✓ | ✓ | ✓ | |||
| Var_MI_Acc | ✓ | ✓ | ✓ | |||
| SMA_Acc | ✓ | ✓ | ✓ | ✓ | ✓ | |
| E_Acc | ✓ | ✓ | ✓ | ✓ | ||
| MC_Acc_XY | ✓ | ✓ | ||||
| MC_Acc_XZ | ✓ | |||||
| MC_Acc_YZ | ✓ | ✓ | ✓ | |||
| ME_Acc_X | ✓ | ✓ | ✓ | ✓ | ✓ | |
| ME_Acc_Y | ✓ | ✓ | ✓ | ✓ | ✓ | |
| ME_Acc_Z | ✓ | ✓ | ✓ | |||
| MMA_Acc | ✓ | ✓ | ✓ | ✓ | ✓ | |
| MVA_Acc | ✓ | ✓ | ✓ | |||
| MEA_Acc | ✓ | ✓ | ✓ | |||
| ME_Acc_XY | ✓ | ✓ | ✓ | ✓ | ✓ | |
| ME_Acc_XZ | ✓ | ✓ | ✓ | |||
| ME_Acc_YZ | ✓ | ✓ | ✓ | ✓ | ✓ | |
| SMAMCS_Acc_X | ✓ | ✓ | ✓ | ✓ | ✓ | |
| SMAMCS_Acc_Y | ✓ | ✓ | ✓ | ✓ | ✓ | |
| SMAMCS_Acc_Z | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Spec 6_ Acc _X | ✓ | |||||
| Spec7_ Acc _Y | ✓ | |||||
| Spec9_ Acc _N | ✓ | |||||
| Spec4_ Gyro _X | ✓ | |||||
| Spec6_ Gyro _X | ✓ | |||||
| Spec8_ Gyro _Z | ✓ | |||||
| Avg_ Gyro _X | ||||||
| Avg_ Gyro _Y | ✓ | |||||
| Avg_ Gyro _Z | ||||||
| Avg_ Gyro _N | ✓ | ✓ | ✓ | ✓ | ||
| SD_ Gyro _X | ✓ | ✓ | ✓ | ✓ | ||
| SD_ Gyro _Y | ✓ | ✓ | ||||
| SD_ Gyro _Z | ✓ | ✓ | ✓ | |||
| SD_ Gyro _N | ||||||
| MinMax_ Gyro _X | ✓ | ✓ | ||||
| MinMax_ Gyro _Y | ✓ | ✓ | ||||
| MinMax_ Gyro _Z | ||||||
| MinMax_ Gyro _N | ✓ | ✓ | ||||
| Var_ Gyro _X | ✓ | ✓ | ✓ | |||
| Var_ Gyro _Y | ✓ | ✓ | ||||
| Var_ Gyro _Z | ✓ | ✓ | ✓ | |||
| Var_MI_ Gyro | ✓ | ✓ | ||||
| SMA_ Gyro | ✓ | ✓ | ✓ | ✓ | ||
| E_ Gyro | ✓ | ✓ | ✓ | |||
| MC_ Gyro _XY | ✓ | ✓ | ✓ | ✓ | ||
| MC_ Gyro _XZ | ✓ | ✓ | ✓ | ✓ | ✓ | |
| MC_ Gyro _YZ | ✓ | ✓ | ||||
| ME_ Gyro _X | ✓ | ✓ | ✓ | ✓ | ||
| ME_ Gyro _Y | ✓ | ✓ | ✓ | |||
| ME_ Gyro _Z | ✓ | ✓ | ✓ | ✓ | ||
| SMAMCS_ Gyro _X | ✓ | |||||
| SMAMCS_ Gyro _Y | ✓ | |||||
| SMAMCS_ Gyro _Z | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Var_MI_Acc_Gyro | ✓ | |||||
| SMA_Acc_Gyro | ✓ | |||||
| E_Acc_Gyro | ✓ | ✓ | ✓ | |||
| ME_Acc_Gyro_X | ✓ | ✓ | ✓ | |||
| ME_Acc_Gyro_Y | ✓ | ✓ | ✓ | |||
| SMAMCS_Acc_Gyro_Z | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Wavelet_STD_aD2_Acc_X | ✓ | |||||
| Wavelet_STD_aD2_Acc_Y | ✓ | ✓ | ||||
| Wavelet_STD_aD2_Acc_Z | ✓ | ✓ | ||||
| Wavelet_STD_aD3_Acc_Y | ✓ | |||||
| Wavelet_STD_aD4_Acc_Y | ✓ | |||||
| Wavelet_STD_aD4_Acc_Z | ||||||
| Wavelet_STD_dA3_Acc_X | ✓ | ✓ | ✓ | |||
| Wavelet_STD_dA3_Acc_Y | ✓ | ✓ | ✓ | |||
| Wavelet_STD_dA3_Acc_Z | ✓ | ✓ | ||||
| Wavelet_STD_dD3_Acc_X | ✓ | ✓ | ✓ | |||
| Wavelet_STD_dD3_Acc_Y | ✓ | ✓ | ||||
| Wavelet_STD_dD3_Acc_Z | ✓ | ✓ | ||||
| Wavelet_RMS_aD2_Acc_X | ✓ | ✓ | ||||
| Wavelet_RMS_aD2_Acc_Z | ✓ | |||||
| Wavelet_RMS_dA3_Acc_X | ✓ | ✓ | ✓ | |||
| Wavelet_RMS_dA3_Acc_Z | ✓ | ✓ | ||||
| Wavelet_RMS_dD3_Acc_X | ✓ | ✓ | ✓ | ✓ | ||
| Wavelet_RMS_dD3_Acc_Z | ✓ | ✓ | ✓ |
List of selected features due to the different activity datasets in the balanced dataset scenario.
| Feature Name | Walk | Jog | Skip | Stay | Stairs up | Stairs down |
|---|---|---|---|---|---|---|
| Avg_Acc_X | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Avg_Acc_Y | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Avg_Acc_Z | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Avg_Acc_N | ✓ | ✓ | ✓ | ✓ | ✓ | |
| MinMax_Acc_X | ✓ | ✓ | ||||
| MinMax_Acc_Y | ✓ | ✓ | ✓ | |||
| MinMax_Acc_Z | ✓ | ✓ | ||||
| MinMax_Acc_N | ✓ | ✓ | ✓ | |||
| Var_Acc_X | ✓ | ✓ | ✓ | ✓ | ||
| Var_Acc_Y | ||||||
| Var_Acc_Z | ✓ | |||||
| Var_MI_Acc | ✓ | ✓ | ✓ | ✓ | ||
| SMA_Acc | ✓ | ✓ | ✓ | ✓ | ||
| E_Acc | ✓ | ✓ | ✓ | ✓ | ||
| MC_Acc_XY | ||||||
| MC_Acc_XZ | ||||||
| MC_Acc_YZ | ||||||
| ME_Acc_X | ✓ | ✓ | ✓ | ✓ | ✓ | |
| ME_Acc_Y | ✓ | ✓ | ✓ | ✓ | ||
| ME_Acc_Z | ✓ | ✓ | ✓ | |||
| MEA_Acc | ✓ | ✓ | ||||
| ME_Acc_XY | ✓ | ✓ | ✓ | ✓ | ✓ | |
| ME_Acc_XZ | ✓ | ✓ | ||||
| ME_Acc_YZ | ✓ | ✓ | ✓ | ✓ | ||
| SMAMCS_Acc_X | ✓ | ✓ | ✓ | ✓ | ✓ | |
| SMAMCS_Acc_Y | ✓ | ✓ | ✓ | ✓ | ✓ | |
| SMAMCS_Acc_Z | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Avg_Gyro _Y | ✓ | |||||
| Avg_Gyro _Z | ✓ | |||||
| ME_Acc_Gyro_X | ✓ | ✓ | ✓ | |||
| ME_Acc_Gyro_Y | ✓ | ✓ | ||||
| ME_Acc_Gyro_Z | ✓ | ✓ | ✓ | |||
| SMAMCS_Acc_Gyro_Y | ✓ | ✓ | ✓ | ✓ | ||
| SMAMCS_Acc_Gyro_Z | ✓ | ✓ | ✓ | ✓ | ||
| Wavelet_STD_aD2_Acc_Y | ✓ | |||||
| Wavelet_STD_aD3_Acc_Y | ✓ | |||||
| Wavelet_STD_dA3_Acc_X | ✓ | ✓ | ✓ | |||
| Wavelet_STD_dA3_Acc_Y | ✓ | ✓ | ✓ | |||
| Wavelet_STD_dA3_Acc_Z | ✓ | |||||
| SD_Acc_X | ✓ | ✓ | ||||
| SD_Acc_Y | ✓ | |||||
| SD_Acc_Z | ✓ | |||||
| SD_Acc_N | ✓ | ✓ | ✓ | ✓ | ||
| Avg_ Gyro _N | ✓ | ✓ | ✓ | ✓ | ||
| SD_ Gyro _X | ✓ | ✓ | ✓ | ✓ | ||
| SD_ Gyro _Y | ✓ | ✓ | ||||
| SD_ Gyro _Z | ✓ | |||||
| SD_ Gyro _N | ✓ | |||||
| MinMax_ Gyro _X | ✓ | |||||
| MinMax_ Gyro _Y | ✓ | |||||
| MinMax_ Gyro _N | ✓ | |||||
| Var_ Gyro _X | ✓ | ✓ | ||||
| Var_ Gyro _Y | ||||||
| Var_ Gyro _Z | ✓ | ✓ | ||||
| Var_MI_ Gyro | ✓ | |||||
| SMA_ Gyro | ✓ | ✓ | ✓ | ✓ | ✓ | |
| E_ Gyro | ✓ | ✓ | ||||
| MC_ Gyro _XY | ✓ | ✓ | ||||
| MC_ Gyro _XZ | ✓ | ✓ | ✓ | ✓ | ✓ | |
| MC_ Gyro _YZ | ✓ | |||||
| ME_ Gyro _X | ✓ | ✓ | ✓ | ✓ | ||
| ME_ Gyro _Y | ✓ | ✓ | ✓ | |||
| ME_ Gyro _Z | ✓ | ✓ | ✓ | |||
| SMAMCS_ Gyro _X | ✓ | |||||
| SMAMCS_ Gyro _Y | ✓ | |||||
| SMAMCS_ Gyro _Z | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| SMA_Acc_Gyro | ✓ | |||||
| E_Acc_Gyro | ✓ | |||||
| Wavelet_STD_dD3_Acc_X | ✓ | ✓ | ✓ | ✓ | ||
| Wavelet_STD_dD3_Acc_Y | ✓ | ✓ | ||||
| Wavelet_STD_dD3_Acc_Z | ✓ | ✓ | ||||
| Wavelet_RMS_aD2_Acc_X | ✓ | ✓ | ||||
| Wavelet_RMS_aD2_Acc_Z | ✓ | ✓ | ||||
| Wavelet_RMS_aD4_Acc_Z | ✓ | |||||
| Wavelet_RMS_dA3_Acc_X | ✓ | ✓ | ✓ | ✓ | ||
| Wavelet_RMS_dA3_Acc_Z | ✓ | |||||
| Wavelet_RMS_dD3_Acc_X | ✓ | |||||
| Wavelet_RMS_dD3_Acc_Z | ✓ |
The list of selected features due to the different activity datasets in the unbalanced scenario.
| Feature Name | Walk | Jog | Skip | Stay | Stairs up | Stairs down |
|---|---|---|---|---|---|---|
| Avg_Acc_X | ✓ | ✓ | ✓ | ✓ | ||
| Avg_Acc_Y | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Avg_Acc_Z | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Avg_Acc_N | ✓ | ✓ | ✓ | ✓ | ✓ | |
| SD_Acc_X | ✓ | ✓ | ✓ | |||
| SD_Acc_Y | ✓ | ✓ | ✓ | |||
| SD_Acc_Z | ✓ | |||||
| SD_Acc_N | ✓ | ✓ | ||||
| MinMax_Acc_X | ✓ | ✓ | ||||
| MinMax_Acc_Y | ✓ | ✓ | ✓ | |||
| MinMax_Acc_Z | ✓ | |||||
| MinMax_Acc_N | ✓ | ✓ | ✓ | |||
| MEA_Acc | ✓ | ✓ | ✓ | |||
| ME_Acc_XY | ✓ | ✓ | ✓ | |||
| ME_Acc_XZ | ✓ | ✓ | ||||
| ME_Acc_YZ | ✓ | ✓ | ✓ | ✓ | ✓ | |
| SMAMCS_Acc_X | ✓ | ✓ | ✓ | |||
| SMAMCS_Acc_Y | ✓ | ✓ | ✓ | ✓ | ||
| SMAMCS_Acc_Z | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Spec 3_ Acc _Y | ✓ | |||||
| Avg_ Gyro _X | ✓ | |||||
| Avg_ Gyro _Z | ✓ | |||||
| Avg_ Gyro _N | ✓ | ✓ | ✓ | ✓ | ||
| SD_ Gyro _X | ✓ | ✓ | ||||
| SD_ Gyro _Y | ✓ | ✓ | ||||
| SD_ Gyro _Z | ✓ | ✓ | ✓ | |||
| MinMax_ Gyro _X | ✓ | ✓ | ✓ | |||
| MinMax_ Gyro _Y | ✓ | |||||
| MinMax_ Gyro _Z | ||||||
| MinMax_ Gyro _N | ✓ | ✓ | ||||
| Var_ Gyro _X | ✓ | ✓ | ||||
| Var_ Gyro _Y | ✓ | |||||
| Var_ Gyro _Z | ✓ | ✓ | ||||
| Var_MI_ Gyro | ✓ | ✓ | ||||
| SMA_ Gyro | ✓ | ✓ | ✓ | |||
| E_ Gyro | ✓ | ✓ | ✓ | |||
| Wavelet_RMS_aD2_Acc_X | ✓ | ✓ | ✓ | |||
| Wavelet_RMS_aD2_Acc_Z | ✓ | |||||
| Wavelet_RMS_dA3_Acc_X | ✓ | ✓ | ✓ | |||
| Var_Acc_X | ✓ | ✓ | ✓ | ✓ | ||
| Var_Acc_Y | ✓ | ✓ | ||||
| Var_Acc_Z | ✓ | |||||
| Var_MI_Acc | ✓ | ✓ | ✓ | |||
| SMA_Acc | ✓ | ✓ | ✓ | ✓ | ✓ | |
| E_Acc | ✓ | ✓ | ✓ | |||
| MC_Acc_XY | ✓ | |||||
| ME_Acc_X | ✓ | ✓ | ✓ | ✓ | ||
| ME_Acc_Y | ✓ | ✓ | ✓ | ✓ | ||
| ME_Acc_Z | ✓ | ✓ | ✓ | |||
| MMA_Acc | ✓ | |||||
| MVA_Acc | ✓ | ✓ | ||||
| MC_ Gyro _XY | ✓ | ✓ | ||||
| MC_ Gyro _XZ | ✓ | ✓ | ✓ | ✓ | ✓ | |
| MC_ Gyro _YZ | ✓ | |||||
| ME_ Gyro _X | ✓ | ✓ | ✓ | ✓ | ||
| ME_ Gyro _Y | ✓ | ✓ | ✓ | |||
| ME_ Gyro _Z | ✓ | ✓ | ✓ | |||
| SMAMCS_ Gyro _X | ✓ | ✓ | ✓ | |||
| SMAMCS_ Gyro _Y | ✓ | ✓ | ||||
| SMAMCS_ Gyro _Z | ✓ | ✓ | ✓ | ✓ | ||
| SMA_Acc_Gyro | ✓ | |||||
| E_Acc_Gyro | ✓ | ✓ | ||||
| ME_Acc_Gyro_X | ✓ | ✓ | ✓ | |||
| ME_Acc_Gyro_Y | ✓ | ✓ | ||||
| ME_Acc_Gyro_Z | ✓ | ✓ | ✓ | |||
| SMAMCS_Acc_Gyro_X | ✓ | |||||
| SMAMCS_Acc_Gyro_Y | ✓ | ✓ | ||||
| SMAMCS_Acc_Gyro_Z | ✓ | ✓ | ✓ | ✓ | ||
| Wavelet_STD_aD2_Acc_Y | ✓ | |||||
| Wavelet_STD_dA3_Acc_X | ✓ | ✓ | ||||
| Wavelet_STD_dA3_Acc_Y | ✓ | ✓ | ✓ | |||
| Wavelet_STD_dA3_Acc_Z | ✓ | ✓ | ||||
| Wavelet_STD_dD3_Acc_X | ✓ | ✓ | ✓ | ✓ | ||
| Wavelet_STD_dD3_Acc_Y | ✓ | ✓ | ✓ | |||
| Wavelet_STD_dD3_Acc_Z | ✓ | |||||
| Wavelet_RMS_dA3_Acc_Z | ✓ | |||||
| Wavelet_RMS_dD3_Acc_X | ✓ | ✓ | ✓ | ✓ | ||
| Wavelet_RMS_dD3_Acc_Z | ✓ | ✓ |
The list of selected features due to the different activity dataset in the feature-selected scenario.
| Feature Name | Walk | Jog | Skip | Stay | Stairs up | Stairs down |
|---|---|---|---|---|---|---|
| Avg_Acc_X | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Avg_Acc_Y | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Avg_Acc_Z | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Avg_Acc_N | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| SD_Acc_X | ✓ | ✓ | ✓ | ✓ | ||
| SD_Acc_Y | ✓ | |||||
| SD_Acc_Z | ✓ | ✓ | ||||
| SD_Acc_N | ✓ | ✓ | ✓ | ✓ | ||
| MinMax_Acc_X | ✓ | ✓ | ||||
| MinMax_Acc_Y | ✓ | ✓ | ✓ | |||
| MinMax_Acc_Z | ✓ | ✓ | ||||
| MinMax_Acc_N | ✓ | ✓ | ✓ | |||
| Var_Acc_X | ✓ | ✓ | ✓ | |||
| Var_Acc_Y | ✓ | ✓ | ||||
| Var_Acc_Z | ✓ | |||||
| Var_MI_Acc | ✓ | ✓ | ✓ | |||
| SMA_Acc | ✓ | ✓ | ✓ | ✓ | ||
| E_Acc | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Avg_ Gyro _N | ✓ | ✓ | ✓ | ✓ | ||
| SD_ Gyro _X | ✓ | ✓ | ||||
| SD_ Gyro _Y | ✓ | |||||
| SD_ Gyro _Z | ✓ | ✓ | ✓ | |||
| SD_Gyro_N | ✓ | |||||
| MinMax_ Gyro _X | ✓ | |||||
| MinMax_ Gyro _Y | ✓ | |||||
| MinMax_ Gyro _Z | ✓ | |||||
| MinMax_ Gyro _N | ✓ | ✓ | ||||
| Var_ Gyro _X | ✓ | ✓ | ✓ | ✓ | ||
| Var_ Gyro _Y | ✓ | ✓ | ||||
| Var_ Gyro _Z | ✓ | |||||
| Var_MI_ Gyro | ✓ | |||||
| SMA_ Gyro | ✓ | ✓ | ✓ | ✓ | ||
| E_ Gyro | ✓ | ✓ | ✓ | |||
| MC_ Gyro _XY | ✓ | ✓ | ||||
| MC_Acc_XY | ✓ | |||||
| MC_Acc_YZ | ✓ | ✓ | ||||
| ME_Acc_X | ✓ | ✓ | ✓ | ✓ | ✓ | |
| ME_Acc_Y | ✓ | ✓ | ✓ | ✓ | ||
| ME_Acc_Z | ✓ | ✓ | ✓ | |||
| MMA_Acc | ✓ | ✓ | ✓ | ✓ | ||
| MVA_Acc | ✓ | ✓ | ||||
| MEA_Acc | ✓ | ✓ | ✓ | ✓ | ||
| ME_Acc_XY | ✓ | ✓ | ✓ | ✓ | ||
| ME_Acc_XZ | ✓ | ✓ | ✓ | ✓ | ||
| ME_Acc_YZ | ✓ | ✓ | ✓ | ✓ | ||
| SMAMCS_Acc_X | ✓ | ✓ | ✓ | ✓ | ✓ | |
| SMAMCS_Acc_Y | ✓ | ✓ | ✓ | ✓ | ||
| SMAMCS_Acc_Z | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Spec3_Acc_N | ✓ | |||||
| Spec5_Acc_Y | ✓ | |||||
| Spec9_Gyro_Z | ✓ | |||||
| Avg_ Gyro _Y | ✓ | |||||
| SMA_Acc_Gyro | ✓ | ✓ | ||||
| E_Acc_Gyro | ✓ | |||||
| ME_Acc_Gyro_X | ✓ | ✓ | ✓ | ✓ | ✓ | |
| ME_Acc_Gyro_Y | ✓ | ✓ | ✓ | |||
| ME_Acc_Gyro_Z | ✓ | ✓ | ✓ | ✓ | ||
| SMAMCS_Acc_Gyro_Y | ✓ | ✓ | ✓ | ✓ | ✓ | |
| SMAMCS_Acc_Gyro_Z | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Wavelet_E_Acc_Z | ✓ | |||||
| Wavelet_STD_aD2_Acc_X | ✓ | ✓ | ||||
| Wavelet_STD_aD2_Acc_Y | ✓ | ✓ | ||||
| Wavelet_STD_aD2_Acc_Z | ✓ | |||||
| Wavelet_STD_dA3_Acc_X | ✓ | ✓ | ||||
| Wavelet_STD_dA3_Acc_Y | ✓ | ✓ | ✓ | |||
| Wavelet_STD_dA3_Acc_Z | ✓ | ✓ | ✓ | |||
| Wavelet_STD_dD3_Acc_X | ✓ | ✓ | ✓ | ✓ | ||
| Wavelet_STD_dD3_Acc_Y | ✓ | ✓ | ||||
| MC_ Gyro _XZ | ✓ | ✓ | ✓ | ✓ | ✓ | |
| MC_ Gyro _YZ | ✓ | ✓ | ||||
| ME_ Gyro _X | ✓ | ✓ | ✓ | ✓ | ||
| ME_ Gyro _Y | ✓ | ✓ | ✓ | ✓ | ✓ | |
| ME_ Gyro _Z | ✓ | ✓ | ✓ | ✓ | ✓ | |
| SMAMCS_ Gyro _X | ✓ | |||||
| SMAMCS_ Gyro _Y | ✓ | |||||
| SMAMCS_ Gyro _Z | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Var_MI_Acc_Gyro | ✓ | ✓ | ||||
| Wavelet_STD_dD3_Acc_Z | ✓ | ✓ | ||||
| Wavelet_RMS_aD2_Acc_X | ✓ | ✓ | ||||
| Wavelet_RMS_dA3_Acc_X | ✓ | |||||
| Wavelet_RMS_aD4_Acc_Z | ✓ | |||||
| Wavelet_RMS_dA3_Acc_X | ✓ | ✓ | ||||
| Wavelet_RMS_dA3_Acc_Z | ✓ | ✓ | ||||
| Wavelet_RMS_dD3_Acc_X | ✓ | ✓ | ||||
| Wavelet_RMS_dD3_Acc_Y | ||||||
| Wavelet_RMS_dD3_Acc_Z | ✓ | ✓ |
The Overall F-score rates of user IO status due to different types of daily activity.
|
| ||||||
|
|
|
|
| |||
|
|
|
|
|
|
| |
| Walk | 98.75% | 92.33% | 97.71% | 84.95% | 99.06% | 94.32% |
| Jog | 98.90% | 92.86% | 97.52% | 83.03% | 99.29% | 95.55% |
| Skip | 98.90% | 92.35% | 96.96% | 76.01% | 99.03% | 93.38% |
| Stay | 97.61% | 99.07% | 79.73% | 92.66% | 97.23% | 98.92% |
| Stairs Up | 81.56% | 97.89% | 61.39% | 96.43% | 88.79% | 98.69% |
| Stairs Down | 82.95% | 97.95% | 59.52% | 96.17% | 87.40% | 98.48% |
|
| ||||||
|
|
|
|
| |||
|
|
|
|
|
|
| |
| Walk | 99.38% | 96.32% | 98.26% | 88.94% | 99.51% | 97.10% |
| Jog | 99.59% | 97.43% | 98.37% | 89.15% | 99.76% | 98.49% |
| Skip | 99.36% | 95.72% | 97.69% | 82.44% | 99.72% | 98.15% |
| Stay | 98.18% | 99.29% | 80.51% | 92.89% | 98.18% | 99.29% |
| Stairs Up | 88.64% | 98.67% | 72.09% | 97.21% | 95.81% | 99.49% |
| Stairs Down | 89.06% | 98.66% | 69.75% | 96.92% | 94.86% | 99.34% |
Figure 4(a) F-score of the AdaBoost model’s performance (b) F-score of the Random Forest model’s performance.
Figure 5(a) The precision-recall performance and (b) the ROC graph of walk activity dataset for the Random Forest model in the combined accelerometer and gyroscope datasets scenario.
Figure 6The impact of degree of unbalance on classification performance: (a) Random Forest classifier performance (b) AdaBoost classifier performance.
The impact of the unbalanced dataset on the user IO status detection.
| Random Forest | AdaBoost | |||||||
|---|---|---|---|---|---|---|---|---|
| Activities | Balanced Data | Unbalanced Data | Balanced Data | Unbalanced Data | ||||
| Outdoor | Indoor | Outdoor | Indoor | Outdoor | Indoor | Outdoor | Indoor | |
| Walk | 99.03% | 94.15% | 99.19% | 96.10% | 99.48% | 96.94% | 99.63% | 98.25% |
| Jog | 99.40% | 96.18% | 99.09% | 95.11% | 99.77% | 98.57% | 99.70% | 98.41% |
| Skip | 99.15% | 94.26% | 98.99% | 94.78% | 99.76% | 98.40% | 99.62% | 98.12% |
| Stay | 98.11% | 99.26% | 96.28% | 99.35% | 98.79% | 99.53% | 97.55% | 99.57% |
| Stairs up | 88.04% | 98.59% | 83.18% | 99.03% | 94.27% | 99.30% | 93.13% | 99.58% |
| Stairs down | 87.33% | 98.47% | 81.00% | 98.87% | 94.96% | 99.35% | 91.85% | 99.48% |
Figure 7(a) The precision-recall graph and (b) the ROC graph of the Random Forest model in a balanced going down stairs dataset scenario.
Figure 8F-Score comparison for different activities. (a) The RF classifier model performance; (b) the AdaBoost classifier model performance.
The sensitivity of detectors to the size of features and activity.
| Random Forest | AdaBoost | |||||||
|---|---|---|---|---|---|---|---|---|
| Activities | Selected Features | All Features | Selected Features | All Features | ||||
| Outdoor | Indoor | Outdoor | Indoor | Outdoor | Indoor | Outdoor | Indoor | |
| Walk | 99.05% | 94.24% | 98.79% | 92.61% | 99.55% | 97.34% | 99.43% | 96.62% |
| Jog | 99.32% | 95.69% | 99.08% | 94.05% | 99.76% | 98.49% | 99.74% | 98.40% |
| Skip | 99.05% | 93.46% | 98.89% | 92.40% | 99.77% | 98.49% | 99.55% | 97.02% |
| Stay | 97.87% | 99.17% | 94.62% | 97.96% | 98.68% | 99.48% | 98.07% | 99.25% |
| Stairs up | 88.12% | 98.59% | 82.98% | 98.09% | 95.17% | 99.41% | 92.17% | 99.07% |
| Stairs down | 88.03% | 98.52% | 83.02% | 98.01% | 95.30% | 99.39% | 93.55% | 99.19% |
Figure 9(a) The precision-recall graph and (b) the ROC graph of the RF model for the climbing stairs dataset in the selected-features scenario.
The overall accuracy comparison.
| IODetector [ | SenseIO [ | Proposed | Proposed | |||||
|---|---|---|---|---|---|---|---|---|
| Acc & Gyro | Acc & Gyro | |||||||
| Outdoor | Indoor | Outdoor | Indoor | Outdoor | Indoor | Outdoor | Indoor | |
| Overall Accuracy | 88% | 90% | 91.9% | 94.4% | 92.94% | 98.27% | 99.03% | 99.23% |