Abstract:
Parkinson’s Disease (PD) is reported to be the second most common neurodegenerative disease. Some information indicates that PD may be on the rise in the next decade, which will lead to an increase in the costs of treatments.
The information leans on the development to address the need with a Decision Support System (DSS) for PD. In this research, it is proposed that methods based on utilizing Deep Learning Neural Networks (DLNN) it is possible to design a DSS for the diagnosis of PD.
The researchers recorded details of the examinations carried out on the following patients, accessed from the UCI Amchine Learning Repository:
## 'data.frame': 195 obs. of 24 variables:
## $ name : Factor w/ 195 levels "phon_R01_S01_1",..: 1 2 3 4 5 6 7 8 9 10 ...
## $ MDVP.Fo.Hz. : num 120 122 117 117 116 ...
## $ MDVP.Fhi.Hz. : num 157 149 131 138 142 ...
## $ MDVP.Flo.Hz. : num 75 114 112 111 111 ...
## $ MDVP.Jitter... : num 0.00784 0.00968 0.0105 0.00997 0.01284 ...
## $ MDVP.Jitter.Abs.: num 0.00007 0.00008 0.00009 0.00009 0.00011 0.00008 0.00003 0.00003 0.00006 0.00006 ...
## $ MDVP.RAP : num 0.0037 0.00465 0.00544 0.00502 0.00655 0.00463 0.00155 0.00144 0.00293 0.00268 ...
## $ MDVP.PPQ : num 0.00554 0.00696 0.00781 0.00698 0.00908 0.0075 0.00202 0.00182 0.00332 0.00332 ...
## $ Jitter.DDP : num 0.0111 0.0139 0.0163 0.015 0.0197 ...
## $ MDVP.Shimmer : num 0.0437 0.0613 0.0523 0.0549 0.0643 ...
## $ MDVP.Shimmer.dB.: num 0.426 0.626 0.482 0.517 0.584 0.456 0.14 0.134 0.191 0.255 ...
## $ Shimmer.APQ3 : num 0.0218 0.0313 0.0276 0.0292 0.0349 ...
## $ Shimmer.APQ5 : num 0.0313 0.0452 0.0386 0.0401 0.0483 ...
## $ MDVP.APQ : num 0.0297 0.0437 0.0359 0.0377 0.0447 ...
## $ Shimmer.DDA : num 0.0654 0.094 0.0827 0.0877 0.1047 ...
## $ NHR : num 0.0221 0.0193 0.0131 0.0135 0.0177 ...
## $ HNR : num 21 19.1 20.7 20.6 19.6 ...
## $ status : int 1 1 1 1 1 1 1 1 1 1 ...
## $ RPDE : num 0.415 0.458 0.43 0.435 0.417 ...
## $ DFA : num 0.815 0.82 0.825 0.819 0.823 ...
## $ spread1 : num -4.81 -4.08 -4.44 -4.12 -3.75 ...
## $ spread2 : num 0.266 0.336 0.311 0.334 0.235 ...
## $ D2 : num 2.3 2.49 2.34 2.41 2.33 ...
## $ PPE : num 0.285 0.369 0.333 0.369 0.41 ...
This dataset will be used to train the model and validate the capacity of the DSS. The following results were generated from initial testing:
Pre-process the Dataset.
## 'data.frame': 195 obs. of 25 variables:
## $ name. : num 1 2 3 4 5 6 7 8 9 10 ...
## $ MDVP.Fo.Hz. : num 120 122 117 117 116 ...
## $ MDVP.Fhi.Hz. : num 157 149 131 138 142 ...
## $ MDVP.Flo.Hz. : num 75 114 112 111 111 ...
## $ MDVP.Jitter... : num 0.00784 0.00968 0.0105 0.00997 0.01284 ...
## $ MDVP.Jitter.Abs.: num 0.00007 0.00008 0.00009 0.00009 0.00011 0.00008 0.00003 0.00003 0.00006 0.00006 ...
## $ MDVP.RAP : num 0.0037 0.00465 0.00544 0.00502 0.00655 0.00463 0.00155 0.00144 0.00293 0.00268 ...
## $ MDVP.PPQ : num 0.00554 0.00696 0.00781 0.00698 0.00908 0.0075 0.00202 0.00182 0.00332 0.00332 ...
## $ Jitter.DDP : num 0.0111 0.0139 0.0163 0.015 0.0197 ...
## $ MDVP.Shimmer : num 0.0437 0.0613 0.0523 0.0549 0.0643 ...
## $ MDVP.Shimmer.dB.: num 0.426 0.626 0.482 0.517 0.584 0.456 0.14 0.134 0.191 0.255 ...
## $ Shimmer.APQ3 : num 0.0218 0.0313 0.0276 0.0292 0.0349 ...
## $ Shimmer.APQ5 : num 0.0313 0.0452 0.0386 0.0401 0.0483 ...
## $ MDVP.APQ : num 0.0297 0.0437 0.0359 0.0377 0.0447 ...
## $ Shimmer.DDA : num 0.0654 0.094 0.0827 0.0877 0.1047 ...
## $ NHR : num 0.0221 0.0193 0.0131 0.0135 0.0177 ...
## $ HNR : num 21 19.1 20.7 20.6 19.6 ...
## $ RPDE : num 0.415 0.458 0.43 0.435 0.417 ...
## $ DFA : num 0.815 0.82 0.825 0.819 0.823 ...
## $ spread1 : num -4.81 -4.08 -4.44 -4.12 -3.75 ...
## $ spread2 : num 0.266 0.336 0.311 0.334 0.235 ...
## $ D2 : num 2.3 2.49 2.34 2.41 2.33 ...
## $ PPE : num 0.285 0.369 0.333 0.369 0.41 ...
## $ 1 : num 0 0 0 0 0 0 0 0 0 0 ...
## $ 2 : num 1 1 1 1 1 1 1 1 1 1 ...
The data has been prepared in numerical form and the decision variable ($status) is converted to a binary response for training.
Scale, Partition, and Reshape the Dataset (80/20 Split)
Training Arrays:
## num [1:156, 1:23] 0.222 0.335 0.433 0.366 0.572 ...
## - attr(*, "dimnames")=List of 2
## ..$ : chr [1:156] "44" "66" "85" "72" ...
## ..$ : chr [1:23] "name." "MDVP.Fo.Hz." "MDVP.Fhi.Hz." "MDVP.Flo.Hz." ...
## num [1:156, 1:2] 1 1 0 0 0 0 0 0 0 0 ...
## - attr(*, "dimnames")=List of 2
## ..$ : chr [1:156] "44" "66" "85" "72" ...
## ..$ : chr [1:2] "1" "2"
## Y_train
## 0 1
## 156 156
Testing Arrays:
## num [1:39, 1:23] 0 0.0217 0.0326 0.0761 0.0815 ...
## - attr(*, "dimnames")=List of 2
## ..$ : chr [1:39] "5" "9" "11" "19" ...
## ..$ : chr [1:23] "name." "MDVP.Fo.Hz." "MDVP.Fhi.Hz." "MDVP.Flo.Hz." ...
## num [1:39, 1:2] 0 0 0 0 0 1 1 0 1 1 ...
## - attr(*, "dimnames")=List of 2
## ..$ : chr [1:39] "5" "9" "11" "19" ...
## ..$ : chr [1:2] "1" "2"
## Y_test
## 0 1
## 39 39
Create the Neural Network Model:
## ___________________________________________________________________________
## Layer (type) Output Shape Param #
## ===========================================================================
## dense_1 (Dense) (None, 128) 3072
## ___________________________________________________________________________
## dropout_1 (Dropout) (None, 128) 0
## ___________________________________________________________________________
## dense_2 (Dense) (None, 64) 8256
## ___________________________________________________________________________
## dropout_2 (Dropout) (None, 64) 0
## ___________________________________________________________________________
## dense_3 (Dense) (None, 32) 2080
## ___________________________________________________________________________
## dropout_3 (Dropout) (None, 32) 0
## ___________________________________________________________________________
## dense_4 (Dense) (None, 2) 66
## ===========================================================================
## Total params: 13,474
## Trainable params: 13,474
## Non-trainable params: 0
## ___________________________________________________________________________
Train the Model:
Plot Performance:
Summary of Models Performance:
## Trained on 124 samples, validated on 32 samples (batch_size=2, epochs=32)
## Final epoch (plot to see history):
## val_loss: 0.2767
## val_acc: 0.9375
## loss: 0.1182
## acc: 0.9516
Create a Prediction with the Testing Dataset to Evaluate the Models Performance:
## Y_pred
## Y_test 0 1
## 0 36 3
## 1 3 36
## [1] 92.30769