Datathon 후기 2 – 허신영 님

라인웍스는 지난 9월 20일부터 22일까지 국가임상시험지원재단(KONECT)에서 주최한 Korea Clinical Datathon 2019에 참가했습니다.

라인웍스 4인은 각기 다른 팀에서 다양한 역할로 Datathon에 참가했는데요. 다채로운 관점의 후기를 릴레이로 공유합니다.

0. INTRO → 바로가기
1. 임정, SQL 전문가(팀9) → 바로가기
2. 허신영, 데이터 사이언티스트(팀7) → 현재 글
3. 박근우, SQL 전문가(팀7) → 바로가기
4. 송치오, IT 전문가(팀14) → 바로가기

두번째로 Tech그룹의 Lead Data Engineer인 허신영 님의 후기를 공유합니다.


제가 참가한 팀7은 아주대학병원의 CDM ECGViEW을사용하여 “당뇨환자의 신장 기능 감소 예측”을 하였습니다. 최근 신부전이나 투석으로 이어지는 합병증 1위로 당뇨가 급 부상한 만큼, 당뇨를 앓기 시작한 시점부터 신장 기능이 나빠지는 조짐을 빨리 잡아내는 것이 중요하다고 합니다.

그래서 임상 전문의들은 당뇨 진단 후에 신장 기능이 급격히 떨어지는 환자일수록, 진단 시점에서부터 조기 개입이 필요한 환자일 것이라는 가설을 제시하였습니다. 올해 8월에 Scientific Reports에 게재된 연구를 참고하여 당뇨가 발병한 환자의 신장 기능이 악화되는 속도가 빠른 환자(실험군)와 느린 환자로 그룹(대조군)으로 나눴습니다. 생존분석으로 두 그룹의 차이점을 비교하였고, 머신러닝을 적용하여 신장 기능 감소를 예측하였습니다.

이 과정에서 다양한 이슈를 맞닥드렸는데요, 이번 포스팅을 통해 데이터 전처리와 모델링의 체크리스트를 공유하고자 합니다. 

1. 환자수 확인하기

전체 데이터가 아무리 많아도, 풀고자 하는 문제가 극 소수의 환자에 대한 것이라면, 데이터가 많을때 유리하다고 알려진 딥러닝 같은 방법을 사용할 수 없습니다. 그래서 가장 먼저 확인해야 할 것은 환자수입니다. 전체 코호트 243,501명 중에, 2,436명을 추출하였고, 이 과정에서 임상 전문의와 추출 조건을 여러번 조율했습니다.

2. “추출 가능한” 변수 확인하기

아래와 같이 변수를 정의하고 CDM에서 변수가 실제로 추출이 가능한지 확인해야합니다.

  • 피처(독립변수): 당뇨 진단 시점 이전 6개월간의 투약, 진단검사, 합병증, 입원여부, 바이탈사인
  • 타겟(종속변수): 당뇨 진단 시점 이후 3년간 eGFR(estimated glomerular filtration rate) 감소율

데이터 소스의 특성 상 예외적인 케이스가 있었습니다. 경우에 따라 변수를 제외하거나 조작적 정의로 새로운 변수를 만들었습니다.

  • 흡연력: 발표된 연구에서 흡연을 중요한 변수로 사용했으나, ECGViEW에서 흡연력을 추출할 수 없어서 제외
  • 크레아티닌과 eGFR: 검사/시술의 코드가 관찰기간 내에 바뀌는 경우 조작적 정의 (과거: 크레아티닌 수치를 가공하여 eGFR 계산함. 최근: eGFR 검사 코드가 등록됨)

3. 추출 테이블의 구조화

환자군을 좁혀나가고, 변수들을 추출하는 과정은 여러번 반복될 수 밖에 없습니다. 따라서, 재사용이 가능한 형태로 SQL을 정리하고 테이블을 구조화해야 합니다. SQL 전문가 여럿이서 이 스키마에 맞춰 피처들을 병렬로 추출하기 위하여, 최대한 단순한 데이터 스키마를 사용했습니다.

  • 코호트테이블: 포함조건과 제외조건이 반영된 환자ID 목록
    • person_id: 환자 식별자
    • start_date: 최초 당뇨 진단일자
  • 피처테이블: 코호트 환자의 변수 정보 (lab, medication, vital sign, comorbidity 등)
    • person_id: 환자 식별자
    • code: CDM 컨셉 ID
    • value: 수치 또는 용량
    • date: 측정일자 또는 복용일자
    • meta: CDM 컨셉 이름 또는 별칭

4. 목적에 맞게 전처리하기

분석 방법에 따라 추가적인 전처리를 하거나 피벗하여 사용할 수 있습니다.  저희 팀은 다음과 같이 전처리하였습니다.

  • 코드로 구분되는 약물들을 효능군으로 그룹화하기
  • 행으로 펼쳐진 변수를 열로 바꾸기(피벗)

5. 타겟 비율을 고려해 학습하기

Random Forest 모델을 사용하여 신장 기능 감소를 예측하였습니다. 실험군의 비율은 10%로 불균형 데이터였기때문에, 실험군의 샘플 가중치를 상대적으로 높여서 성능을 높일 수 있었습니다.

최종 성능은 0.73으로, 기존 연구에서 보고한 0.7보다 높은 성능이었습니다.

이번 대회에 참가하여 CDM 데이터를 압축적으로 사용할 수 있었고, 임상전문의를 비롯한 다양한 분들과의 협업으로 특정 질병에 대한 지식과 데이터셋 자체의 특성을 배우는 좋은 기회였습니다. 이 포스팅이 의료데이터로 분석하는 분들에게 도움이 되길 바랍니다.

용어정리
  • eGFR: 신장 기능을 알수 있는 마커, 감소할 수록 신장이 안좋음. MDRD equation으로 계산해서 사용함.

No comments yet.

Leave a comment

Your email address will not be published.