안녕하세요 데이터Hub팀 최하림입니다. 저번 뉴스레터에서 제적률을 살펴보면서 생존분석에 대해 알아보았습니다. 생존 분석은 제적 위험을 예측하고, 중도 탈락 시점 추이를 파악하는데 용이했습니다. 추후 여러 요인을 추가해 학생들의 중도 탈락을 더 자세히 살펴보고 관리할 수 있는 시스템을 개발하려고 합니다. 이는 고려대학교 대학원의 재정을 예측하여 대비할 수 있으며, 또한 대학 차원에서 제적 위험 학생들을 돌봄으로써 제적률을 크게 줄일 수 있을 것입니다. 데이터 분석을 통해 얻은 결과들로 위험 학생들을 분류해 그들을 관리하는 것이 효율적인 방안이 될 것입니다.
학생들의 제적위험을 더 정확히 예측하기 위해 생존분석에 딥러닝을 추가해보았습니다. 의료계에서는 생존분석에서 Bayesian Inference나 SVM, RNN을 활용한 머신러닝과 딥러닝을 추가하여 예측률을 높이고 있습니다. 저는 이번 분석에서 Deephit를 이용해보려고 합니다. Deephit는 Python의 pycox 패키지를 사용하는 생존분석 딥러닝 기법입니다. ( Copyright (c) 2018, Haavard Kvamme All rights reserved.) Pycox는 pytorch를 이용하여 time-to-event를 예측하는 분석 패키지입니다. 다음 github에 패키지에 대한 내용이 자세하게 나옵니다. (https://github.com/havakv/pycox)
Deephit에 대해 알아봅시다. DeepHit는 생존 분석에 딥러닝 방식을 적용하여 생존 시간의 분포를 배우는 딥뉴럴 네트워크인데요. 그림 1은 Deephit의 구조입니다.

그림1 Deephit Architecture
Competing risks를 다루기 위해서 DeepHit는 multi-tasks learning architecture를 제공합니다. 그림 1과 같이 전통적인 구조와는 다르게 multi-task learning architecture를 가지는데, input이 공변량 뿐 아니라 cause-specific sub-networks도 포함하고 있는 것을 볼 수 있습니다. Arichitecture 내부 layer 들은 여러 Linear layer와 dropout layout의 결합으로 이루어져 있습니다. 이는 그림2에서 나와있는 DeepHit 코드 일부분을 보시면 알 수 있습니다.

그림2. Architecture 코드 일부분
결과는 어떻게 나올까요? Output(y)은 SoftMax output layer를 사용하여 경쟁사건(competing event)의 joint distribution을 나타내는 것입니다. 각 벡터들은 관찰된 시간t에서 event k가 나올 확률을 나타냅니다. 모든 확률 값은 합해서 1이겠죠?

딥러닝을 트레이닝 해봅시다. Network architecture를 확인했고, 실제 결과와 예측 값의 Loss를 알아서 그 값을 줄여야겠죠? Deephit는 Adam Optimizer를 이용해서 Back Propagation을 하네요. 그렇다면 DeepHit에서 Loss는 무엇일까요? 두 가지 방향으로 구합니다.

L1은 사건과 사건 발생 시간을 통해 얻는 joint distribution의 log-likelihood를 의미합니다. L2는 cause-specific function을 사용합니다. Cause-specific function 은 t까지 살아남았을 때, event가 k일 확률을 말하는데요. 시간이 t일 때 event k를 겪는 학생들의 확률을 비교해서 cause-specific ranking loss를 구하게 됩니다. 그림3은 L1을 구하는 코드의 일부분입니다. event_01은 censored data를 의미합니다.

그림3. Loss Function 코드의 일부분
Deephit를 통해서 각 시점 별 대학원 졸업 및 제적 확률을 얻기 위해 트레이닝 시켰습니다. Loss 값은 다음과 같이 나오게 됩니다. 사실 Loss값이 낮지 않습니다. 무엇이 문제일까요?

그림4. Training에 따른 Loss의 변화
Deephit를 훈련한 딥러닝으로 여러 학생들을 임의로 시험해보았습니다. 6번 학생은 다른 학생들에 비해 제적률이 낮고 졸업률이 높은 것을 확인할 수 있었습니다. 4번 학생은 실제로 제적을 한 학생인 것을 확인하였습니다.

그림 5 딥러닝 생존분석으로 예측한 학생들의 시간에 따른 제적 및 졸업 확률
Deephit는 생존분석 딥러닝 기법중 가장 성능이 좋은 것으로 알려져있는데요. hyperparameter tuning을 통해 더욱 정확한 time-event target 예측에 도달할 수 있을 것입니다.
아직은 데이터의 부족으로 loss값이 크지만 더 정교하게 데이터를 모아 정확도를 높일 예정입니다. 또한 제적 학생들은 졸업 학생들에 비해 그 수가 적어 데이터가 부족한데요. sampling 기법으로 더욱 많은 데이터들을 생성해보려고 합니다.
이번 분석은 입학 성적과 대학원 과목 성적으로 제적을 예측을 해보았습니다. 이 밖에도 연구비와 같은 여러 요인들을 추가로 살펴볼 수 있습니다. 또한 장학금을 몇 학기에 받는 지나 장학금 탈락 시점이 유의미한 영향을 주겠죠? 단순 장학금 지급 여부가 아닌 시점마다 장학금이 어떻게 영향을 주는지도 파악하는 것이 중요합니다. 그리고 직전 학기의 상황들이 다음 학기의 중도 탈락에 영향을 주는데, 이러한 요인들을 파악한다면, 제적 직전 학기의 상황을 이해하는 데 도움이 될 것입니다. 추후 여러 요인을 추가해 학생들의 중도 탈락을 더 자세히 살펴보고 관리할 수 있도록 분석을 더욱 발전시켜보겠습니다. 감사합니다.
Lee, C., Yoon, J., & Van Der Schaar, M. (2019). Dynamic-deephit: A deep learning approach for dynamic survival analysis with competing risks based on longitudinal data. IEEE Transactions on Biomedical Engineering, 67(1), 122-133.
Lee, C., Zame, W. R., Yoon, J., & van der Schaar, M. (2018, April). Deephit: A deep learning approach to survival analysis with competing risks. In Thirty-second AAAI conference on artificial intelligence.
Loschmann, L., Smorodina, D., (2020). Deep Learning for Survival Analysis, HUMBOLDT-UNIVERSITAT ZU BERLIN, viewed 20 August 20, 2021, https://humboldt-wi.github.io/blog/research/information_systems_1920/group2_survivalanalysis/#deephit
