Diabetic Patient Readmission Prediction (Healthcare & Life Sciences)
이 실습에서는 Amazon Sagemaker Canvas를 사용하여 한 줄의 코드도 작성하지 않고도 병원 재입원을 예측하는 머신 러닝(ML)을 구축하는 방법을 배웁니다.
소개
이 실습에서는 Amazon Sagemaker Canvas를 사용하여 환자 및 병원 결과를 나타내는 과거 데이터 세트를 분석하고, 한 줄의 코드도 작성하지 않고도 병원 재입원을 예측하는 머신 러닝(ML)을 구축하는 방법을 배웁니다. 이 모델은 고위험 당뇨병 환자가 이전에 병원에 입원한 후 30일 이내에 재입원할 가능성이 있는지, 아니면 30일 후에 재입원할 가능성이 있는지 예측해야 합니다. 이 사용 사례에서는 여러 결과를 다루기 때문에 이 ML 문제를 "다중 클래스 분류"라고 합니다.
당뇨병 재입원에 관해서
병원 재입원은 총 의료비 지출의 중요한 원인이며 의료 서비스의 질을 나타내는 새로운 지표로 떠오르고 있습니다. 당뇨병은 다른 만성 질환과 마찬가지로 병원 재입원 위험 증가와 관련이 있습니다.
이 실습에서 사용할 샘플 데이터 집합은 "1999-2008년 미국 130개 병원 당뇨병 데이터 집합"의 샘플 버전입니다. (Beata Strack, Jonathan P. DeShazo, Chris Gennings, Juan L. Olmo, Sebastian Ventura, Krzysztof J. Cios 및 John N. Clore, "HbA1c 측정이 병원 재입원율에 미치는 영향: 70,000 개의 임상 데이터베이스 환자 기록 분석," BioMed Research International, 2014 년, 기사 ID 781670, 11 페이지, 2014. ). 여기에는 환자 및 병원 결과와 함께 15개 이상의 특징을 포함한 과거 데이터가 포함되어 있습니다. 데이터 세트에는 약 69,500개의 행이 포함되어 있으며 데이터 스키마는 다음과 같습니다:
race
STRING
Caucasian, Asian, African American or Hispanic
time_in_hospital
INT
Number of days between admission and discharge a.k.a. length of stay
number_outpatient
INT
Number of outpatient visits of the patient in a given year before the encounter
number_inpatient
INT
Number of inpatient visits of the patient in a given year before the encounter
number_emergency
INT
Number of emergency visits of the patient in a given year before the encounter
number_diagnoses
INT
Number of diagnoses entered in to the system
num_procedures
INT
Number of procedures (other than lab tests) performed during the encounter
num_medications
INT
Number of distinct generic medicines administrated during the encounter
num_lab_procedures
INT
Number of lab tests performed during the encounter
max_glu_serum
STRING
Indicates the range of result or if the test was not taken. Values: ">200", ">300", "normal" and "none" - if not measured
gender
STRING
Values: "Male", "Female" and "Unknown/Invalid"
diabetes_med
INT
Indicates if any diabetes medication was prescribed.
change
STRING
Indicates if there was a change in diabetic medications (ether dosage or generic name). Values: "change" or "no change"
age
INT
Age of patient at the time of encounter
a1c_result
STRING
Indicates range of the result of if it was not taken. Values: ">8", ">7", "normal" and "none"
readmitted
STRING
Days to inpatient readmission. Values: "<30" if patient readmitted less than 30 days, ">30" if patient readmitted after 30 days of encounter, "no" for no record of readmission
모델 만들기와 데이터셋 가져오기
Amazon S3 버킷에 데이터 세트 업로드
AWS 관리 콘솔에서 Amazon S3로 이동하여 "sagemaker-studio-*" 폴더 또는 세이지메이커 캔버스에서 액세스할 수 있는 모든 폴더를 엽니다.
S3 콘솔에서 sagemaker-studio-* 버킷을 클릭합니다.
S3에서 가져온 데이터를 Canvas에서 데이터셋에 등록하기
SageMaker Canvas에서 모델 만들기
이제 왼쪽 메뉴의 두 번째 버튼을 클릭하여 웹 페이지의 모델 섹션으로 돌아가 Amazon SageMaker Canvas로 돌아가 보겠습니다.
새 모델을 클릭하고 모델 이름을 입력합니다.
모델 보기에는 모델을 만들고 예측을 생성하는 데 사용하는 네 가지 단계에 해당하는 네 개의 탭이 표시됩니다: 선택, 작성, 분석, 예측입니다. 첫 번째 탭인 선택에서 라디오 단추를 클릭하여 이전에 업로드한 diabetes-readmission.csv 파일로부터 만들었던 Diabetes
라고 명명한 데이터 집합을 S3로 가져옵니다.
예측하고자 하는 컬럼을 선택합니다. 여기서는 readmitted
입니다.
Amazon Canvas는 이것이 3+ 카테고리 예측 문제임을 자동으로 감지합니다. 잘못된 모델 유형이 감지된 경우 화면 중앙의 유형 변경 링크를 사용하여 수동으로 변경할 수 있습니다. Canvas는 자동으로 빌드 단계로 이동합니다. 이 탭에서 대상 열(이 경우 재입원)을 선택합니다. 이 대상은 환자가 이전 진료 후 30일 이내에 재입원했는지 또는 30일이 지나거나 기록이 없는지 여부를 나타냅니다(값: "아니요", "<30" 및 ">30").]
예측에 사용하지 않으려면 왼쪽 확인란을 선택 취소하여 일부 열을 삭제할 수도 있습니다. 각 열에 대한 설명은 아래에 나와 있습니다. 예를 들어 a1c_result
, max_glu_serum
, gender
, num_procedures
, number_outpatient
열은 영향력이 낮으므로 삭제하겠습니다.
열 머리글을 클릭하면 그리드 보기로 이동하여 각 열을 더 자세히 살펴볼 수도 있습니다. 통계 및 분포에 관한 데이터가 포함된 열 세부 정보가 열립니다.
빌드 및 모델 훈련
데이터 집합을 분석하고 영향에 따라 열을 수정한 후에는 빌드 모드를 선택할 수 있습니다. 빠르게 빌드 할 수 있지만 정확도가 떨어지는 'Quick build
' 를 선택하거나 더 오래 걸리지만 이보다는 정확할 수 있는 'Standard Build
' 중 하나를 선택하여 빌드할 수 있습니다. Quick build
모델은 공유할 수 없다는 점에 유의하세요. 또한 주어진 다중 클래스 문제의 경우 준 Standard Build
만 실행할 수 있습니다.
SageMaker Canvas는 표준 모델을 구축할 때 어느 정도의 전처리 및 데이터 밸런싱을 수행합니다. SageMaker 캔버스에서 사용하는 알고리즘 중 일부는 이미 일부 하이퍼 파라미터를 통해 불균형한 데이터를 처리합니다.
이제 약 2시간을 기다립니다. 이 시간은 사용자마다 다를 수 있습니다. 완료되면 캔버스는 자동으로 분석 탭으로 이동하여 빠른 학습의 결과를 보여줍니다. 빠른 빌드를 사용하여 수행한 분석 결과, 모델이 61%의 확률로 올바른 결과를 예측할 수 있는 것으로 추정됩니다.
재입원 가능성이 높은 환자와 모델이 이러한 환자 하위 집합을 얼마나 잘 예측하는지에 가장 관심이 있습니다. 결과를 자세히 살펴보려면 오른쪽의 Advanced metrics
를 클릭하면 됩니다.
그러면 결과를 더 자세히 살펴볼 수 있는 매트릭스가 표시됩니다. 머신 러닝에서는 이를 confusion matrix이라고 합니다.
'not getting readmitted' 클래스의 경우 오른쪽 패널에서 클래스 no
를 선택합니다.
머신 러닝에서 모델의 정확도는 올바른 예측 수를 총 예측 수로 나눈 값으로 정의됩니다. 파란색 상자는 알려진 결과가 있는 테스트 데이터의 하위 집합에 대해 모델이 수행한 올바른 예측을 나타냅니다. 이 경우 전체 13915
개 중 8488
개의 예측이 정확하여 정확도가 60.999
%입니다. Average accuracy
그러나 모델이 환자의 재입원 사례를 얼마나 잘 예측했는지 측정하는 데 더 관심이 있습니다. 이 모델은 8020
명의 고객이 재입원하지 않을 것이라고 정확하게 예측했습니다(True Positive - TP). 그러나 실제로는 4977
명의 고객이 재입원할 것으로 잘못 예측했습니다(False negatives - FN). 머신 러닝에서 이를 측정하는 데 사용되는 비율은 TP / (TP + FN)입니다. 이를 Recall이라고 합니다. 고급 메트릭 페이지에서는 이 모델에 대한 Recall 점수를 35.716
%로 계산하여 표시합니다.
모델을 사용하여 예측 생성
페이지 하단의 예측 버튼을 클릭하여 이 모델을 사용하여 몇 가지 예측을 실행할 수 있습니다. 이제 모델이 학습되었으므로 몇 가지 예측에 사용해 보겠습니다. 분석 페이지 하단에서 예측을 선택하거나 예측 탭을 선택합니다.
예측은 Batch와 Single 모드가 있습니다.
Batch prediction 모드에서는 Manual과 Automatic이 있습니다.
여기서는 Batch prediction과 Manual을 선택합니다.
이제 데이터 집합 선택을 선택하고 diabetes-readmission.csv
으로부터 생성했던 Diabetes
데이터셋을 선택합니다. 그런 다음 페이지 하단에서 예측 생성을 선택합니다. 캔버스는 이 데이터 집합을 사용하여 예측을 생성합니다. 일반적으로 훈련과 테스트에 동일한 데이터 집합을 사용하지 않는 것이 좋지만, 단순성을 위해 동일한 데이터 집합을 사용합니다.
몇 초 후 예측이 완료됩니다. 눈 아이콘을 클릭하여 마우스 커서를 가져가 예측의 미리보기를 보거나 다운로드 버튼을 클릭하여 전체 출력이 포함된 CSV 파일을 다운로드할 수 있습니다.
Last updated