Study Note/Machine Learning

    라벨이 없는 환자 데이터에서 '위험군' 찾기: 군집화(Clustering) 알고리즘 4종 정복

    의료 데이터는 정답(Label)이 없는 경우가 많습니다. "이 환자는 당뇨입니다"라는 진단명이 붙어있지 않아도, 수많은 환자들의 검진 데이터를 분석해 "비슷한 건강 상태를 가진 환자 그룹"을 찾아내야 할 때가 있죠. 이를 환자 세분화(Patient Segmentation)라고 합니다.가상의 환자 데이터를 직접 만들고, 이를 분석하여 숨겨진 환자 군을 찾아내는 4가지 핵심 알고리즘을 실습해 봅니다. 1. 데이터 준비: 가상의 환자 데이터 만들기 (Data Generation)먼저 실습에 사용할 데이터를 만들어 봅시다. BMI(체질량지수)와 혈당(Glucose) 수치를 가진 환자 300명의 데이터를 생성합니다. 현실성을 위해 3개의 그룹(정상, 주의, 위험)과 일부 이상치(Outlier)를 섞어서 만듭니다...

    정답 없는 환자 데이터에서 그룹 찾기: 군집화(Clustering) 알고리즘 완전 정복

    의료 데이터를 분석하다 보면, "정답(Label)"이 없는 경우가 많습니다. "이 환자는 A형 당뇨입니다"라는 라벨이 없어도, 수많은 환자 데이터 속에서 "비슷한 특성을 가진 환자 그룹"을 찾아내야 할 때가 있죠. 이를 비지도 학습(Unsupervised Learning), 그중에서도 군집화(Clustering)라고 합니다. 오늘은 환자의 검진 데이터(혈압, 콜레스테롤 등)를 이용해 숨겨진 환자 군(Cluster)을 찾아내는 4가지 핵심 알고리즘을 배워봅니다. 1. 군집화의 정석: K-Means Clustering가장 대중적이고 직관적인 알고리즘입니다. 데이터 공간에 K개의 중심점(Centroid)을 찍고, 환자들을 가장 가까운 중심점에 배정하는 방식입니다.의료 시나리오: 고혈압 환자 리스크 그룹핑환자들..

    의료 AI의 협진 시스템: Random Forest와 XGBoost 섞어 쓰기 (Blending)

    의사 선생님들도 진단이 어려울 때 협진(Consultation)을 하죠? 머신러닝도 마찬가지입니다.Random Forest: 전체적인 숲을 보며 안정적인 예측을 잘합니다. (과적합 방지)XGBoost: 틀린 문제(오차)를 집요하게 파고들어 디테일을 잡습니다. (높은 정확도)이 둘을 2:8 또는 5:5 비율로 섞으면, 안정적이면서도 예리한 최상의 예측 모델이 탄생합니다. 1. 데이터 준비: 가상의 응급실 데이터먼저, 두 모델이 학습할 데이터를 준비합니다. (이전과 동일한 시계열 회귀 데이터)import pandas as pdimport numpy as npfrom sklearn.model_selection import train_test_split# 1. 가상의 응급실 데이터 생성 (2000시간)np.ra..

    응급실 예측 2편: 로그의 마법과 5대 회귀 모델 총출동 (Linear부터 XGBoost까지)

    RMSLE(로그 오차)가 의료 데이터(응급실 예측)에서 왜 중요한지 배웠습니다. 오늘은 이론을 넘어, "로그 변환(Log Transform)"을 실제 코드에 어떻게 녹이는지, 그리고 5가지 대표 회귀 모델들이 이 데이터를 어떻게 다루는지 직접 대결을 붙여보겠습니다. 1. Model Evaluation의 핵심: 로그와 지수의 '역함수' 관계모델을 학습시키기 전, 가장 먼저 해야 할 일은 데이터를 "학습하기 좋은 모양"으로 만드는 것입니다.환자 수 데이터는 보통 0명에 몰려있고 가끔 폭증하는(Skewed) 형태입니다. 이를 펴주기 위해 로그를 씁니다.들어갈 땐 (Log): np.log1p(y) $\rightarrow$ 데이터를 정규분포처럼 펴줌 + RMSLE 최적화나올 땐 (Exp): np.expm1(pre..

    응급실 예측, 디테일의 차이: Metric 정의부터 타겟 분리(Target Splitting)까지

    머신러닝 모델링의 후반부는 "평가(Evaluation)"와 "최적화(Optimization)"의 싸움입니다. 단순히 fit()하고 predict()하는 것을 넘어, 비즈니스(의료) 로직을 코드에 녹여내는 과정을 실습해 봅니다.오늘의 시나리오: "응급실 총 환자 수(Total Count)를 예측하라" 하지만 우리는 알고 있습니다. 긴급하게 실려오는 환자(Ambulance)와 제 발로 걸어오는 환자는 발생하는 패턴이 완전히 다르다는 것을요! 1. Metric: 평가 지표 정의 (RMSLE)먼저, 우리가 목표로 하는 점수판을 정의합니다. 앞서 배운 RMSLE(로그 오차)를 코드로 구현하고, 사이킷런 모델들이 알아들을 수 있도록 scorer로 만듭니다.import numpy as npfrom sklearn.me..

    응급실은 언제 붐빌까? : 시계열 회귀, 로그(Log)의 마법, 그리고 4대 평가지표

    지금까지 우리는 "환자가 질병이다/아니다"를 분류(Classification)하는 문제에 익숙했습니다.하지만 병원 운영의 관점에서는 "내일 응급실에 환자가 몇 명이나 올까?" 같은 수치(Quantity)를 예측하는 회귀(Regression) 문제가 더 시급할 때가 많습니다.오늘은 시계열 데이터의 특성을 활용해 응급실 환자 수를 예측해보고, 점수를 극대화하는 로그 변환(Log Transformation) 기법과 모델의 성적표인 4대 회귀 평가 지표를 파헤쳐 봅니다. 특히 RMSLE가 왜 의료 현장에서 중요한지 직접 코드로 확인해 보겠습니다. 1. 데이터의 맥락을 읽다: 시간(Time)의 마법응급실 데이터는 시간의 흐름 속에 패턴이 숨어 있습니다. 머신러닝 모델에게 2025-12-25 02:00:00이라는 ..

    수치 예측의 정석과 과적합을 막는 방패: 회귀(Regression)와 규제(Regularization) 정복하기

    "이 환자는 질병입니다(1) / 아닙니다(0)"를 예측하는 것이 분류(Classification)라면, "이 환자의 혈당 수치는 126.5일 것입니다", "재원 기간은 14일일 것입니다"처럼 연속적인 숫자를 맞추는 것을 회귀(Regression)라고 합니다.오늘은 가장 기본적인 선형 회귀부터, 모델의 폭주(과적합)를 막아주는 L1(Lasso), L2(Ridge) 규제까지 완벽하게 정리해 봅니다. 1. 선(Line)을 그어 미래를 예측하다: 선형 회귀 & 다항 회귀① 선형 회귀 (Linear Regression) 개념: 데이터들의 패턴을 가장 잘 설명하는 직선 하나($y=wx+b$)를 긋는 것입니다.의료 예시: "BMI가 높을수록 혈압도 비례해서 오르더라."특징: 가장 단순하지만, 세상의 복잡한 일들을 직..

    정확도(Accuracy)의 함정에서 탈출하기: OOB Score와 ROC-AUC 완벽 해설

    의료 인공지능 모델을 만들 때 가장 경계해야 할 것은 무엇일까요? 바로 "정확도의 환상"입니다. 희귀 질환 데이터(전체 환자의 1%만 양성)라면, 무조건 "정상"이라고 예측해도 정확도는 99%가 나옵니다. 하지만 이 모델은 병을 하나도 못 찾기 때문에 의학적으로는 쓸모가 없죠.오늘은 모델의 진짜 실력을 검증하는 방법인 Bootstrapping(OOB)과 ROC-AUC에 대해 깊이 있게 알아봅니다. 1. 데이터를 알뜰하게 쓰는 기술: Bootstrapping & OOB랜덤 포레스트(Random Forest) 같은 배깅(Bagging) 모델이 왜 성능이 좋은지 아시나요? 바로 부트스트랩(Bootstrap) 덕분입니다. ① Bootstrapping이란?개념: 원본 데이터에서 '복원 추출(중복 허용)'을 통해 ..