On the journey of
[논문읽기] ECG-Based machine-learning algorithms for heartbeat classification 본문
[논문읽기] ECG-Based machine-learning algorithms for heartbeat classification
dlrpskdi 2023. 11. 14. 00:40Original Paper ) https://www.nature.com/articles/s41598-021-97118-5https://arxiv.org/ftp/arxiv/papers/2207/2207.06408.pdf (Direct Download)
Abstract
ECG란 심전도를 의미한다. 이는 병원에서, 개인의 심혈관 상태와 건강을 분석하기 위해 주로 사용되나, 비정상적인 리듬(즉 이상치 탐지의 일종으로 볼 수 있다)는 쉽지 않다. 정확도가 높기도 쉽지 않으며, 오류가 자주 발생한다. 때문에 본 연구(논문)에서는 AAMI EC57 표준을 기반으로 MIT-BIH 데이터셋을 사용하여 5개 유형의 부정맥을 분류한다.
이 부정맥에는 비이소성(정상) / 상심실 / 심실 / 융합 / 알 수 없는 박동 등이 포함되어 있으며, 결과적으로 5개 파형 분류 및 정확도가 선행 연구에 비해 좋은 성능을 보인 바 있다.
Introduction
ECG(심전도와 혼용해서 작성)는 개인의 심혈관계 건강 파악에 있어 매우 중요한 요소이다. 미국의 경우 심장질환이 주요 사망 원인이고(성별 가를 필요 없이), 전 세계적으로도 사망 원인 1/3을 차지하는 원인이다. 또한 부정맥의 지속이 오래될수록 SCD(돌연사) 가능성이 높아지는데, 40세 이상 성인 4명 중 1명 꼴로 이런 불규칙한 심장 박동을 경험할 만큼 드문 질병이 아니라는 점에서 ECG 판별의 중요성을 알 수 있다.
앞서 AAMI EC57 표준을 기반으로 분류한다고 했는데, 크게 5개 등급으로 분류한다. 심전도 N/S/V/F/Q (각각 정상, 상심실, 심실, 융합, 원인 불명의 박동)이 그 5개 등급이며, 이 중 N(정상)을 제외한 모든 등급은 부정맥 혹은 돌연사를 초래할 수 있는 등급에 속한다. 여기에 덧붙여, 원인 불명의 박동은 일반적으로 정상 박동과 분류할 수 없는 박동의 융합으로 이뤄지기 때문에 파형을 기록, 분류하는 것 또한 가치 있는 연구 분야라고 할 수 있다.
Data & Method
앞서 dataset의 경우, MIT-BIH 데이터셋을 사용한다고 언급한 바 있다. 이 데이터는 48명의 피험자 각각에 대해 30분간 360Hz의 샘플링 주파수로 녹음한 ECG 기록으로 구성되어 있으며, 각 클래스(앞선 5개 클래스)는 주석으로 기록되어 있다. 이를 본 논문 작업을 하면서 데이터를 10초 간격으로 나눈 다음, 파형의 진폭을 0~1 사이로만 오도록 정규화하여 사용하였다. 정규화된 예시 ECG 박동 표시는 아래 그래프와 같다.
방법론(Method)는 다양한 것들을 사용하였는데, 결합된 반복 플롯(RP)에 공급되는 1D 및 2D ECG 신호를 사용하는 방법 / 컨볼루션 신경망(CNN) [4] / 2D 컨볼루션 방법으로 ECG 데이터를 분류하는 방법 [5], VGG 기반 CNN [6], GAN을 사용하여 불균형 데이터 세트를 CNN과 함께 보강하는 방법 [7], CNN을 다음과 결합한 Seq2Seq 모델[8], 장단기 메모리(LSTM)[9] 및 게이트 반복 유닛(GRU) [10]과 결합한 CNN이 제시되었다.
심전도 처리를 위한 대부분의 머신러닝 기법은 일반적으로 심장 박동 분할, 신호 전처리(정규화, 필터링 등의 과정 포함), 특징 추출, 모델링 및 학습 등의 3개 단계를 따른다. 이 논문은 이런 단계들을 기반으로 한 새로운 ECG 분석 프레임워크를 제시하는데, 2D CNN 적용에 가장 적합한 특징을 추출하고, 1D ECG 파형을 변환하여 얻은 이미지에 공간 그라데이션을 도입하여 CNN을 효과적으로 적용하는 방식이다.
특징 추출은 ML 접근 방식에서 필수적인 부분이다. 여기서는 시간에 의존하는(시계열 불러와야 하는) 심전도를 다양한 방식으로 2D 신호로 변환, 특징 매핑을 통해 머신러닝을 진행하려는 것이다. 선행연구를 통해 1D 신호와 레이더 간의 유사성 등을 기반으로 신호 처리를 데이터로 변환하기 위한 WVD(위그너 빌 분포)를 적용하였다. WVD는 시간과 신호의 주파수 변화를 단일 종합 측정할 수 있는 방법론 중 하나로, 정보 손실이 적고, 시간/주파수가 공변수이며 팽창을 보존하는 특성이 있어 여기서는 2D CNN으로 1D 비고정 신호를 분류하는 데 사용하였다.
1D ECG 신호는 WVD 촬영 전 125Hz로 샘플링하였다. 2D CNN의 본질적인 문제는 '변환 불변성'이라고 할 수 있는데, 이는 WVD 이미지의 축을 따라 적절한 그라데이션이 적용되면서 해결되었다. 1D 신호의 WVD로 얻은 2D 이미지는 CNN을 적용할 떄 손실될 수 있는, '시간이 인코딩된' 정보를 제공하기 때문! 각 WVD 이미지에 적용할 그라데이션의 강도와 관련된 휴리스틱이 없는 상황에서 여러 번 CNN 모델과 결합한 결과 최적에 가까운 결과(0.25)가 도출되었다.
최종 실행
데이터는 기존 데이터셋에서 8:2로 분할(train-test)하여 실행되었으며, ResNet18을 위,아래 layer을 수정한 상태에서 적용하는 것이 효과적이라는 것을 알게 되었다. 환경은 Matlab(매트랩)이었으며, 깊이는 71층 깊이인 ResNet18이 구성되었다. Input은 128 * 128 * 1인 이미지이며 Convolution layer은 이를 7*7 크기, stride 2*2 크기의 컨볼루션을 수행하여 bias 64개를 최종적으로 5개 클래스 중 하나로 WVD 이미지를 분류한다. 그 외 파라미터로는 학습률 0.01, 정규화 0.0001, 미니 배치 사이즈 64, epoch 8이었다.
추가적으로, 표준화된 구현을 위해 Tensorflow를 백엔드에서 사용해 Keras에서 유사한 접근 방식을 시도하였다. 여기서는 ResNet 50 모델이 사용되었으며, 해당 구조는 아래 이미지와 같다.
* 수정된 CNN 모델은 Tensorflow 2.7.0 version에서 구현되었으며, 손실 함수로는 범주형 교차 엔트로피가 적용되었다. validation data로는 기본 데이터 20%에 shuffle를 적용한 데이터를 사용하였고, 이런 validation / test dataset을 기반으로 한 하이퍼파라미터가 도출된 후에는 모든 훈련 데이터를 활용해 모델을 학습시켜 성능을 높여나갔다. 평가지표는 정확도, Recall, F1 Score 모두를 사용하였다.
학습시키는 과정에서, train dataset의 불균형을 해소하고자 데이터 증강(Data Augmentation)을 진행하였다. 시간 변화, 이미지 상의 변환 및 회전은 제외하였고 신호 진폭의 최대 10%인 Gaussian Noise를 추가하여 소수 클래스에 대한 추가 신호를 생성하였다. 또한 모자란 경우, 소수 신호를 반복하여 데이터를 증강하였다.
위 그래프는 ResNet 18 모델의 학습, 검증 정확도 및 손실을 의미한다. 테스트 셋의 평균 정확도는 98.69%였는데, 상대적으로 수가 부족한 set의 결과였으며 하나의 ECG 샘플 분류에는 약 7.3ms(밀리세컨드)가 소요되었다.
적혀 있듯이, 위 표는 현재 작업에 가장 적합한 조합을 확인하고자 수행된 훈련들의 집합이다. 각 스케쥴별로 비교했을 때, 각 스케쥴의 훈련 정확도는 비슷했으나 가장 우수한 것은 스케쥴 10이었다. 아래에 평가지표 결과가 있다.
해당 스케쥴의 훈련 시간은 155초(epoch당 155초) 였으며 F,S 클래스가 가장 낮은 성능(80% 중반)을 보였다. 훈련 과정 상의 loss와 정확도를 비교한 결과(아래 이미지), Valid+Train 데이터를 병합한 결과의 전체적인 성능이 가장 좋았다. 등급별로 보자면 클래스 N이 가장 높았고, Q-V 순서로 높았다. 일반적으로 ECG 비트가 약 1초임을 생각했을 때 실시간 피드백이 가능하다는 점은 덤(?).
그 외 Discussion, 한계점 등
성능은 좋았으나, 많은 경우 훈련/테스트 데이터의 양 부족 및 표준화 부족으로 인해 선행연구와의 비교가 어렵다. 또 F, S 등급의 성능은 90% 미만의 F1 점수를 보였기 때문에 이 점이 아쉽다. 보완의 필요성이 느껴지나, 그나마(!) 위안이 되는 사실은 앞서 말한 대로 드물지 않은 부정맥에 비해, 심실 상부 부정맥 환자 중 12%만이 더 심각한 증세로 악화된다는 점.