1D-CNN을 이용하여 PTB-XL Dataset(심전도 데이터)로부터 심근경색류 질환을 진단하는 모델 제안
ECG는 심장의 전기적 활동을 시간에 따라 기록한 그림이다.
일반적으로 각 심장 박동 주기 내에서 P파, QRS 복합파, T파와 같은 주요 파형이 나타난다. 개념 공부한 것
정상적인 심전도 신호는 일정한 주기와 반복적인 패턴을 가지지만, 그러나 비정상적인 심장 활동(예: 심근경색) 시에는 이러한 패턴에 변형이 발견 된다.
ECG는 심장 상태를 평가하고, 부정맥, 심근경색, 전도 장애 등의 다양한 심장 질환을 진단하는 데 널리 사용된다.
심근경색은 심장으로 가는 혈류가 차단되어 심장 근육이 손상하여 죽음을 유발하는 위험한 질환이다.
가슴 통증, 호흡 곤란, 땀 흘림, 메스꺼움 등의 증상이 나타날 수 있다. 그러나 일부 환자는 무증상이기도 하기 때문에 정기적인 ECG 검사가 중요하다.
심근경색은 즉각적인 치료가 이루어져야만 추가적인 심장 근육 손상을 막을 수 있기에, 조기 진단과 신속한 치료가 매우 중요하다.
ECG는 이러한 상태를 빠르게 진단하는 데 중요한 역할을 한다. 심근경색 시 ECG에서 ST 분절 상승(STEMI), 비정상적인 Q파, T파 변화 등의 특징적인 변형이 발견되기 때문이다.
1D-CNN은 1차원 시계열 데이터를 처리하는 데 특화된 구조로, ECG와 같은 신호 데이터 특징 추출에 적합한 구조이다.
복잡한 시계열 패턴을 효과적으로 학습할 수 있어, 시간적 특징을 추출하는데 용이한 구조를 가지며,
정상 심장 박동과 비정상 심장 박동(예: 부정맥)을 높은 정확도로 분류할 수 있다.
1D-CNN은 비교적 적은 계산 비용을 요구하기 때문에 학습 및 추론 속도가 빠르다. 이는 실시간 ECG 모니터링 시스템에 적합하다.
또한 상대적으로 적은 양의 데이터로도 좋은 성능을 발휘할 수 있다고 알려져 있기에, 의료 데이터에 적용하기 특히 유용하다.
본 연구에서는 1D-CNN을 이용하여 심전도 데이터로부터 심근경색을 감지하는 모델을 제안한다.
데이터셋 출처: https://physionet.org/content/ptb-xl/1.0.1/
데이터 상세 설명: https://www.nature.com/articles/s41597-020-0495-6
-
공공 이용 가능한 데이터
-
1989 년부터 1996 년까지 Schiller AG라는 ECG data 기록기를 통해 얻은 데이터
-
18885명의 환자로부터 21837 개 데이터 수집
-
10초간 측정 기록
-
12-lead ECG-waveform dataset
-
2명의 심장병 전문의가 레이블링함
-
500Hz (5000) / 100Hz (1000) 2가지 데이터 포함되어 있기 때문에 선택적으로 사용 가능
ptbxl
├── ptbxl_database.csv
├── scp_statements.csv
└── records100
├── 00000
│ ├── 00001_lr.dat
│ ├── 00001_lr.hea
│ ├── ...
│ ├── 00999_lr.dat
│ └── 00999_lr.hea
├── ...
└── 21000
├── 21001_lr.dat
├── 21001_lr.hea
├── ...
├── 21837_lr.dat
└── 21837_lr.hea
각 데이터에 포함된 <scp_codes> 에 심장질환이 레이블링 되어있는데, 해당 질환의 확률이 딕셔너리 형태로 함께 제공된다.
레이블 된 심장 질환은 5개의 주요 클래스와 24개의 하위 클래스로 구성되어 있는데, 아래 도표와 같다.
본 모델에서는 MI(Myocardial Infarction) 심근경색 클래스에 해당하는 하위 클래스 진단 확률이 100인 데이터를 Target Label으로 설정하였다.
5개의 1D CNN Block과 2개의 Fully Connected Layer로 설계하였다.
각 블럭은 실험적으로 좋은 성능을 보이는 구성 요소를 채택하였다.
학습 : 검증 : 테스트 = 7 : 2 : 1 비율로 데이터를 나누었다.
학습은 200 에포크 진행하였고, 조기종료 조건을 설정하였다.
val_loss 기준 90 에포크부터 과대적합이 진행되는 것을 확인할 수 있었고,
학습 결과 테스트셋 기준으로 약 91%의 정확도를 기록하였다.
test_acc: 0.9096686244010925
test_loss: 0.20646625757217407
표면적으로 테스트셋 대상으로도 높은 정확도를 보이고 있지만,
심근경색은 빠르고 정확한 진단이 매우 중요한 질환이기 때문에, 100%에 근사한 정확도를 보이는 모델을 개발하는 것이 앞으로의 과제이다.
또한 모델링 과정에서 실험적으로 하이퍼파라미터의 설정을 바꿔가며 분류 성능을 평가하였는데,
Optuna와 같은 자동 하이퍼파라미터 최적화 프레임워크를 적용할 수 있는 형식으로 코드를 설계했다면
보다 많은 실험을 통해 더 높은 정확도를 보이는 모델을 개발할 수 있었을 것이라고 생각한다.