This approach makes use of several previously described heart rate variability metrics, morphological features and signal quality indices. After extracting features, two classifiers are trained,namely, an ensemble of bagged trees (50 trees) and multilayer perceptron (2-layer, 10 hidden neurons, feed-forward).
This code was tested on Matlab R2017a (Version 9.2) with the WFDB Toolbox for Matlab/Octave v0.9.8 as the only dependency. Please refer to the toolbox's website for how to install.
The following steps are necessary to perform the feature-based arrhythmia detection.
ExtractFeatures()
performs feature extraction for each record within a folder
TrainClassifier()
trains an Ensemble of Bagged Decision Trees and Multilayer Perceptron Classifier to classify segments of ECG into the defined categories. Saves resulting classifiers for future usage
PredictTestSet()
makes use of pre-trained classifiers to produce results on test set
The feature extraction procedure is divided in the following stages:
10th order bandpass Butterworth filters with cut-off frequencies 5-45Hz (narrow band) and 1-100Hz (wide band)
We used four well-known QRS detectors:
A consensus based on kernel density estimation is output as final decision.
Type | Examples | Number |
---|---|---|
Time Domain | SDNN, RMSSD, NNx | 8 |
Frequency Domain | LF power, HF power, LF/HF | 8 |
Non-linear Features | SampEn, ApEn, Poincaré plot, Recurrence Quantification Analysis | 95 |
Signal Quality | bSQI, iSQI, kSQI, rSQI | 36 |
Morphological Features | P-wave power, T-wave power, QT interval | 22 |
Total | 169 |