[논문이야기] 수면 상태 감지 ③, 수면 신호의 변동성과 수면 간격의 불규칙성을 고려한 데이터 전처리 과정

수면 단계에 따른 몸의 움직임 차이, 수면 신호의 변동성을 발생시켜
데이터 전처리 과정에서 수면 신호를 안정화하면 수면 상태 검출에 용이해
롬-스카글 주기 분석법을 사용해야 불규칙한 수면 간격에서 주기성을 찾을 수 있어

[논문이야기] 수면 상태 감지 ②, 선행 연구 조사 및 기존 방법론의 한계 분석에서 이어집니다.


이전 글 말미에서는 ENMO 신호의 주기성에 대해 간략하게 살펴봤다. 크게 잠을 자는 기간과 깨어 있는 기간으로 나뉘었는데, 흥미로운 점은 수면 기간에도 미세한 변동성이 관찰됐다는 사실이다. 이는 많은 사람이 알고 있듯이 수면에도 단계가 존재하기 때문인데, 수면의 단계는 보통 아래의 모식도에서 보이는 기준을 따라 분류된다.

Sleep State Detection MDSA YeonsookKwak 6
수면 단계 예시 그래프
Sleep State Detection MDSA YeonsookKwak 7
수면 단계 검출 모식도

기존의 Van Hees 연구에서도 해당 모식도를 기준으로 수면 단계를 분류하고 있다. 수면에 단계가 있다는 말은 곧 수면 단계에 따라 몸의 움직임이 달라져 수면 신호에 미세한 변동이 발생할 수 있음을 의미한다. 아래 Figure 5의 ENMO 데이터에서도 잠들어 있는 기간(빨간 막대)의 $y$값이 균일하지 않다는 것을 확인할 수 있다.

Sleep State Detection MDSA YeonsookKwak 5
Figure 5. ENMO 신호 그래프(상). 0(잠을 자는 기간, 빨간 막대), 1(활동하는 기간, 초록 막대)

수면 구간의 신호를 더 안정적(consistent)인 신호로 가공할 수만 있다면, 수면 상태 검출이 더 쉬어질 것이라는 생각이 자연스럽게 떠올랐다. 안정화의 목적은 수면 신호를 아예 죽이는 것이 아니라, 그 특성은 살리되 미가공 데이터(raw data)의 분산보다는 상대적으로 안정된 값을 유지하는 것이 핵심이다.

위의 생각을 조금 더 확장하면 개인뿐만 아니라 전체 사용자 간의 뒤척임 정도가 달라도 일반화가 가능하다는 결론에 도달할 수 있다. 물론 이러한 복잡한 과정을 생략했을 수도 있다. 예를 들어 기존 연구에서는 최적화에 과도하게 초점을 맞춰 과적합(overfitting)과 같은 문제점이 발생했는데, 이를 개선하기 위해 정규화(regularization) 작업으로 라그랑주 승수법(Lagrange multiplier)을 적용하는 것이 보편적인 전근법이라는 것을 알고 있다.

하지만 본 연구에서는 데이터의 특성을 더 면밀하게 분석해서 얻은 인사이트로 데이터를 가공하고, 모델도 그것에 맞게 변경하여 일반화 성능이 더 우수한 방법론을 고안하기 위해 노력했다. 데이터 전처리 단계부터 탄탄한 논리가 뒷받침되어야 신뢰할 수 있는 모델을 만들 수 있다는 생각을 이번 글에서 공감했으면 한다.

데이터 변형을 통한 수면 신호 안정화

수면 신호 안정화를 위해 처음 사용했던 방식은 일반적인 필터링을 적용한 이상치(outlier) 제거였다. 고속 푸리에 변환(Fast Fourier transform, FFT)과 비슷한 전력 스펙트럼 밀도(Power Spectral Density, PSD)를 적용했다. PSD는 다양한 주파수 대역에 걸친 FFT2 밀도의 비율을 이해하는데 유용하다고 알려져 있다.

하지만 ENMO 신호 데이터에 PSD를 적용해 본 결과, 전체 데이터의 99.8%를 남겨 원래 의도했던 수면 신호만의 안정화를 이루지 못한 것을 확인했다. Figure 6을 들여다보면 가공된 ENMO(빨간막대) 신호의 수면 기간(빨간 선과 초록 선의 사이, 순서 중요) 변동성이 그대로 살아 있는 것을 발견할 수 있다.

Sleep State Detection MDSA YeonsookKwak 8
Figure 6. 사용자 한 명(ID 값 한 개)의 샘플 데이터에 대해 PSD를 적용한 결과 그래프. 파란막대(raw ENMO signal), 빨간막대(가공된 ENMO), 빨간 선(잠드는 순간표시), 초록 선(깨어나는 시점 표시)

혹시 데이터를 평활화(smoothing)하면 문제가 해결되지 않을까 해서 칼만 필터도 적용해 보았다. 하지만 이전 데이터의 공분산(covariance)를 활용해도 수면 신호를 안정화 하지 못했다. Figure 7에서도 가공된 ENMO 신호의 수면 기간 변동성이 대부분 남아 있었다.

Sleep State Detection MDSA YeonsookKwak 9
Figure 7: 사용자 한 명(ID 값 한 개)의 샘플 데이터에 대해 칼만 필터를 적용한 결과 그래프. 파란막대(raw ENMO signal), 빨간막대(가공된 ENMO), 빨간 선(잠드는 순간표시), 초록 선(깨어나는 시점 표시)

참고로 칼만 필터는 수면 상태(state) 검출 성능이 낮았으며, 이전 데이터의 공분산을 활용한 탓에 계산 비용도 PSD보다 더 높았다.

불규칙한 간격에서 주기성을 찾는 문제

초기 데이터 변환 작업에서 간과했던 부분이 있다. 주어진 데이터의 가장 중요했던 특징 중 하나를 놓쳤던 것인데, 사용자 한 명에 대해서도 잠이 드는 시간이나 깨어나는 시간이 규칙적이지 않다는 점이었다. 따라서 이번에는 간격이 고르지 않은 관측에서 주기적인 신호를 감지하도록 설계된 롬-스카글 주기(Lomb-Scargle Periodogram) 분석법을 사용했다.

아래 Figure 11은 롬-스카글 주기 분석법을 적용한 데이터를 시각화한 그래프다. 전체 데이터 기간이 길어서 수면 구간의 신호가 거의 균일해 보이지만 구간을 확대하면, 신호들의 특성은 최대한 살리면서 변동성은 낮췄다는 것을 확인할 수 있다.

Sleep State Detection MDSA YeonsookKwak 11
Figure 8: 사용자 한 명(ID 값 한 개)의 샘플 데이터에 대해 롬-스카글 주기 분석을 적용한 결과 그래프. 파란막대(raw ENMO signal), 빨간막대(가공된 ENMO), 빨간 선(잠드는 순간표시), 초록 선(깨어나는 시점 표시)

ID 값 한 개에 적용하는 것을 넘어, 기기 누락이 없는 전체 ID에 관해서도 확인해 본 결과, 주빈도(dominant frequency)는 파워(power)와 선형적(linear)인 패턴을 보였다. 따라서 회귀선 안에서 관측되는 빈도에 대해서는 선형선 안에 있는 일반적인 값을 사용해서 필터링을 진행해도 예측값의 정확도가 크게 떨어지지 않을 것이라고 판단됐다.

Sleep State Detection MDSA YeonsookKwak 10
Figure 9. 주빈도(Dominant frequency) ID 35ea에 관해서 확인한 결과 그래프. 왼쪽(전체 데이터로 확인), 오른쪽(왼쪽의 80% 샘플링으로 확인)

FFT와 결을 같이하는 롬-스카글 주기 분석법과 같은 신호 처리 방법론들은 주기성을 파악할 최소한의 데이터가 준비되어 있어야 한다. 즉, ENMO 데이터에서는 최소 하루는 지나야 잠을 자고 깨어나는 하나의 주기가 관측될 수 있다.

때문에 각 ID에서 표본 기간이 3~5일을 넘지 않거나, 기기 누락이 많을 때는 학습 데이터의 주빈도 데이터를 적용해서 필터링을 진행했으며, 최소 5일 정도의 데이터가 있을 때는 개별적으로 ID에 따라 필터링을 적용했다.

[논문이야기] 수면 상태 감지 ④, 일반화에 초점을 맞춰 수면·활동 구간의 분포를 활용한 우도비 비교 방법론으로 이어집니다.

Similar Posts