
┌─────────────────────────────────┐
│ 구조모델 (외부데이터) │
│ input : FP + assay + histology │
│ train/val/test → drug split │
│ output: FDA 예측 확률 P_struct │
└────────────┬────────────────────┘
│
┌────────────▼────────────────────┐
│ 실험모델 (내부데이터 ~2천행) │
│ input : 실험 feature │
│ train/val/test → drug split │
│ output: FDA 예측 확률 P_exp │
└────────────┬────────────────────┘
│
┌────────────▼────────────────────┐
│ 퓨전/메타모델 (Late Fusion) │
│ input : P_struct + P_exp │
│ models: Logistic / GBM / │
│ 가중합 / 단순평균 │
│ output: 최종 FDA 승인 예측 │
└─────────────────────────────────┘
지금 → 내부데이터 전처리 (10분)
다음 → 구조모델 학습 XGBoost (빠름)
다음 → 실험모델 학습 XGBoost
마지막 → 퓨전모델 + 성능 비교표
Train: 493,344행 FDA=1: 74,301 (15.1%)
Val : 70,478행 FDA=1: 10,614 (15.1%)
Test : 140,956행 FDA=1: 21,229 (15.1%)
불균형 비율 1:5.6 → 모델 학습 시 class_weight 필요
핵심 문제: Leakage 방지
구조모델 Test 약물 = Erlotinib, Paclitaxel ...
실험모델 Train에 같은 약물 있으면 → 퓨전 시 leakage
해결책: 약물 기준으로 동일하게 Split
전체 약물 목록
↓ drug-based split (한 번만)
Train 약물 70% / Val 약물 10% / Test 약물 20%
↓ ↓
구조모델 Train 구조모델 Test
실험모델 Train 실험모델 Test
↓ ↓
퓨전 Train 퓨전 Test
- 퓨전 설계:
Test 셋 (공통 약물 기준)
구조모델 → P_struct (확률값)
실험모델 → P_exp (확률값)
↓
메타모델 input: [P_struct, P_exp]
모델: Logistic / GBM / 가중합
↓
최종 FDA 예측 성능 (AUC, F1)
- 내부데이터: fda 전처리
데이터 해석:
- FDA=1: 1,621행 / FDA=0: 18행 / NaN: 360행
- NaN 약물 중 sorafenib, erlotinib, paclitaxel 등은 실제 FDA 승인약물인데 캐시 미스
- 수동으로 FDA=1 처리 필요
내부데이터:
- max_wt_loss_num 전부 NaN → 원본 컬럼이 문자열("nt" 등)로 되어있어서
- Feature 10개로 학습 가능
- FDA 분포: Train 37.6% / Val 23.8% / Test 51.5% → 불균형 있지만 사용 가능
max_wt_loss는 제외하고 진행합니다. (전부 NaN)
공통 drug_split_map 기준으로 나눴는데
구조모델: 약물당 수백~수천 행 (cell line × 농도)
실험모델: 약물당 수 행 (실험 몇 번)
→ 같은 약물이 train/val/test에 배정됐어도
행 수 비율이 달라짐
더 중요한것:
퓨전할 때 필요한 건:
Test 셋에서 같은 약물에 대해
구조모델 예측값 + 실험모델 예측값이 같이 있어야 함
지금 구조모델 Test 약물 146개
실험모델 Test 약물 중 겹치는 게 몇 개인지 확인 필요
구조모델 (외부데이터)
FP(2048) + 물리화학(7) + assay(2) + histology(1) → FDA 예측
실험모델 (내부데이터)
실험 feature(24) → FDA 예측
태스크 & 설계 원칙
목표: FDA 승인 예측 (binary classification)
데이터 누수 방지 규칙:
drug_split_map.csv 기준 (한 번만 정의)
↓ 동일하게 적용
구조모델 train/val/test ←── 같은 약물 기준
실험모델 train/val/test ←── 같은 약물 기준
퓨전모델 test ←── 겹치는 15개 약물만 사용
절대 규칙:
- Train 약물 ≠ Val 약물 ≠ Test 약물
- 퓨전 test는 두 모델 공통 약물만
현재까지 데이터 현황
Breast / Colon 암종에서의 FDA 승인 예측
| 전체 | 704,778행 | 896행 |
| 약물 수 | 682개 | 111개 |
| Train | 476,015행 / 508약물 | 739행 |
| Val | 74,373행 / 73약물 | 21행 |
| Test | 154,390행 / 146약물 | 136행 |
| 퓨전 가능 | 15개 약물 공통 | |
| Feature | FP(2048)+물화(7)+assay(2)+hist(1) | 실험(10개) |
| Target | FDA_APPROVED | FDA_APPROVED |
태스크 정의 (최종)
Breast / Colon 암종에서의 FDA 승인 예측
논리적으로 빠진 점 / 보완할 점
1. 데이터 측면
구조모델 HISTOLOGY_ENC: 0=breast, 1=colon
→ 암종별 성능 분리 분석 필요
(breast만 AUC, colon만 AUC 따로 봐야 함)
실험모델 Val: 21행
→ 너무 적어서 검증 신뢰도 낮음
발표 시 한계점으로 언급 필요
2. 퓨전 모델 측면
퓨전 가능 약물 15개만 겹침
→ 퓨전 test set이 너무 작음
→ 해결책: 구조모델 예측값을 실험모델 없는
약물에도 적용 (단방향 퓨전)
퓨전 방식 미정:
- 단순 평균: (P_struct + P_exp) / 2
- 가중 평균: w1*P_struct + w2*P_exp
- 메타모델: [P_struct, P_exp] → Logistic/GBM
→ 셋 다 구현하고 비교 필요
3. 신약개발 일반화 측면
① 시간적 누수 미고려
→ 신약은 "미래 약물" 예측이므로
출시연도 기준 temporal split이 더 현실적
② 약물 구조 유사성 누수
→ 같은 계열 약물(erlotinib/gefitinib)이
train/test에 나뉘면 너무 쉬운 문제
→ Tanimoto similarity 기반 split 고려
③ 암종 특이성
→ breast FDA 승인 ≠ colon FDA 승인
같은 약물이어도 암종마다 다름
→ 현재 데이터에 "약물+암종" 조합으로
label이 정의되어 있는지 확인 필요
④ 외부 검증 데이터 없음
→ 완전히 새로운 약물로 검증 못 함
→ 발표 한계점으로 언급 필요
⑤ Class imbalance
→ 구조모델 1:5.6 불균형
→ SMOTE / class_weight 적용 필요
→ 현재 미적용 상태
4. 모델 측면
구조모델에 cell line 정보 미활용
→ 같은 약물도 cell line마다 반응 다름
→ CCLE gene expression 추가하면 성능 향상 가능
(시간 없으면 발표 future work으로)
실험모델 feature 부족
→ 현재 10개 feature만 사용
→ max_wt_loss 전부 NaN으로 제외됨
→ 핵심 반응 지표가 빠진 상태
1. GDSC (18,798행) + physchem 조인
2. CTRP (685,980행) + FP + physchem 조인
3. 통합 (~704,778행)
4. 물리화학 7개 정규화
5. drug_split_map 기준으로 drug-based split
6. train/val/test.csv 저장
- feature: FP(2048) + 물화(7) + assay(2) + hist(1) = 2,058개
- 메타: DRUG_ID, SOURCE 포함
기대 결과:
Train: ~476,000행 FDA=1 약 15%
Val : ~74,000행 FDA=1 약 15% (이전과 달리 균형 맞아야 함)
Test : ~154,000행 FDA=1 약 15%
CTRP 수정: large_intestine=1(colon), breast=0
GDSC: 18,798행 정상 (중복 아님, drug_map merge에서 182약물로 늘어난 것)
GDSC HISTOLOGY_ENC: breast(0)=9,867 / colon(1)=8,931
암종 분포 수정됨 ✅
전체: breast 320,978 / colon 401,620 (거의 균형)
Train: breast 211,892 / colon 265,127
Val : breast 35,192 / colon 44,193
Test : breast 73,894 / colon 92,300
FDA 분포:
전체 label: 0: 607,305 / 1: 115,293 → 불균형 1:5.3
Train 14.1% / Val 18.2% / Test 20.2%
→ Val/Test FDA=1 비율이 Train보다 높음
→ class_weight 적용 필요
GDSC 중복 여전히 있음:
gdsc_processed: 18,798행인데
df_g: 36,618행 (2배)
→ drug_map merge 시 DRUG_ID 중복 발생
→ 모델 학습엔 큰 영향 없지만 수정 권장
전처리 완료 요약:
| Train | 466,256행 / 426약물 | 739행 |
| Val | 77,564행 / 63약물 | 21행 |
| Test | 160,958행 / 135약물 | 136행 |
| Feature | FP(2048)+물화(7)+assay(2)+hist(1)=2,058 | 실험(10개) |
| 퓨전 가능 | Test 공통 약물 15개 |
학습: 지피유
python -c "import torch; print('버전:', torch.__version__); print('CUDA:', torch.cuda.is_available()); print('GPU:', torch.cuda.get_device_name(0))"
GPU 4개(RTX A6000 49GB)가 있는데 PyTorch에서 못 찾고 있네요. CUDA는 있는데 PyTorch가 CPU 버전으로 설치된 겁니다.

fda_env) user1@oem-System-Product-Name:/data1/workspace$ python -c "import torch; print('버전:', torch.__version__); print('CUDA:', torch.cuda.is_available()); print('GPU:', torch.cuda.get_device_name(0))"
버전: 2.5.1+cu121
CUDA: True
GPU: NVIDIA RTX A6000
우리태스크
1. Drug-based split → 데이터 누수 방지
2. 외부(대규모) + 내부(소규모) 퓨전 설계
3. FP + 물리화학 + assay + histology 멀티피처
4. breast/colon 암종 특화
5. class_weight 불균형 처리
부족한 점:


1. 실제 마우스 실험 데이터(내부) + 공개 DB(외부) 퓨전
→ 기존 논문에 없는 설계
2. breast/colon 암종 특화
→ 범용 모델보다 임상적으로 의미있음
3. Late fusion으로 두 모달리티 결합
→ 신약 후보 스크리닝에 실용적
- 스레드홀드
Recall 중시 (민감도) → FDA 승인 약물 놓치면 안됨
Precision 중시 → 비용 아끼려면 false positive 줄여야
→ 임상 목적에 따라 threshold 조정은 의미있음
하지만 AUC 자체를 높이는 건 아님 → 맞는 말
현재 AUC 0.66에 대해
신약개발 태스크가 까다로운 건 맞지만, 지금 낮은 이유는 태스크 난이도보다 설계 문제가 더 큽니다:
1. Cell line genomic feature 없음
→ 같은 약물도 BRCA mutation 있는 cell line vs 없는 cell line
반응이 완전히 다름
→ 현재는 drug feature만으로 예측
→ 논문들은 gene expression 978개 추가시 AUC 0.85+ 달성
2. CTRP가 685,980행으로 GDSC(18,798)를 압도
→ CTRP 패턴에 과적합
→ 두 데이터셋 특성 차이가 있음
3. Drug-based split이 엄격해서 낮게 나오는 것도 있음
→ 랜덤 split이면 AUC 0.9+ 나오는 게 일반적
→ 이건 올바른 설계의 결과 (낮아도 더 신뢰 가능)
발표에서 주장할 수 있는 것
"Drug-based split으로 실제 신약(미지 약물) 예측에
가까운 평가를 했고, AUC 0.67은 랜덤 split 대비
보수적이지만 현실적인 수치"
"Cell line genomic feature 추가 시
성능 향상 여지 있음 (future work)"
"퓨전 모델에서 실험 데이터 결합 시
성능 개선 기대"
논문 대비 추가로 빠진 것
데이터 관점:
① TCGA 임상 데이터 미활용
→ 실제 환자 반응 데이터
→ cell line → patient 간극 줄일 수 있음
② Drug combination 미고려
→ 현재 단일약물만
→ 실제 임상은 병용요법이 많음
③ Time-split 미적용
→ 2015년 이전 데이터로 학습
2020년 이후 약물 예측하는 게 현실적
→ 현재는 랜덤 drug split
모델 관점:
④ Uncertainty 미추정
→ 예측값 0.7이 얼마나 신뢰할 수 있는지 모름
→ Bayesian approach나 dropout uncertainty
→ 신약개발에서 중요한 부분
⑤ Multi-task learning 미적용
→ FDA 예측 + toxicity 예측 동시에
→ 두 태스크가 공유 representation 학습
→ 현재는 완전히 분리
1. 교차검증 질문:
맞습니다.
구조모델: 46만행 → 단일 split으로도 충분
실험모델: 760행 → CV 필수 (데이터 적어서)
CV AUC 0.76 ± 0.03 → 내부적으로는 괜찮은 성능
Test AUC 0.54 → 일반화 부족
→ Train/Test 분포 차이 때문
(Train FDA=1 37% vs Test FDA=1 51%)
2. 구조모델 암종별 해석:
breast AUC: 0.6660
colon AUC: 0.6553
→ 차이 미미 (0.01)
→ 암종보다 drug 구조가 더 중요한 신호
→ 두 암종 모두 비슷한 난이도
3. 실험모델 암종별 해석:
breast: AUC=0.32 F1=0.76 Recall=1.0
→ FDA=1을 전부 1로 예측 (recall 100%)
→ 하지만 AUC 0.32 → 랜덤보다 못함
→ 확률값 자체가 의미없음
colon: AUC=0.23 F1=0.00
→ FDA=1을 하나도 못 맞춤
→ 데이터 32행으로는 학습 불가
전체 요약:
| 전체 AUC | 0.6600 | 0.5382 |
| breast AUC | 0.6660 | 0.3200 |
| colon AUC | 0.6553 | 0.2308 |
| 데이터 수 | 160,958행 | 136행 |
실험모델 단독 성능은 신뢰 불가
→ 데이터 부족 (colon 32행)
→ 퓨전에서 구조모델이 주도하고 + 실험모델은 보조 역할
→ 발표에서 한계점으로 명시 필요
재설계
기존: drug 단위 FDA label
erlotinib → 1 (암종 무관)
수정: drug + 암종 조합 FDA label
erlotinib + breast → 1
erlotinib + colon → 0
Split: (drug + 암종) 조합 단위로
같은 조합이 train/test에 동시 존재 불가
drug 단위 split보다 더 엄격하고 정확함
drug+암종 조합을 split 단위로 정의하면:
"erlotinib+breast" → train
"erlotinib+colon" → test
가능 (같은 약물도 암종 다르면 분리 가능)
누수 방지:
구조/실험 모델 모두 동일한
(drug+암종) 조합 split map 사용
→ 퓨전에서도 누수 없음
암종 시사점:
같은 약물이 breast에서는 FDA 승인
colon에서는 미승인인 케이스 학습 가능
→ 암종 특화 예측 가능
1. Label: drug+암종 조합으로 재정의
2. Split: (drug+암종) 조합 단위로 stratified split
3. 구조/실험 모델 동일한 split map 적용
4. 퓨전: 공통 (drug+암종) 조합으로 평가
라벨재정의 결과:
drug+암종 조합 145개
FDA=1: 41개 (28.3%)
FDA=0: 104개 (71.7%)
예시:
bevacizumab + breast → FDA=1
bevacizumab + colon → FDA=1 (둘 다 승인)
cetuximab + colon → FDA=1
cetuximab + breast → FDA=0 (colon만 승인)
→ 암종별로 다른 label ✅ 재정의 의미있음
Combo split:
Train: 100조합 FDA=1:28 FDA=0:72
Val : 15조합 FDA=1: 4 FDA=0:11
Test : 30조합 FDA=1: 9 FDA=0:21
내부데이터 행수:
Train: 624행 FDA=1: 35.4%
Val : 74행 FDA=1: 36.5%
Test : 198행 FDA=1: 53.0% ← 여전히 높지만 이전보다 개선
'2026-1학기 > project' 카테고리의 다른 글
| fda) 퓨전모델 결과서 추가 고려사항 (0) | 2026.04.13 |
|---|---|
| fda) 뉴데이터 퓨전모델실험 재설계와 결과 (0) | 2026.04.13 |
| fda) 뉴데이터 퓨전모델 설계 (0) | 2026.04.12 |
| fda) 구조모델 및 전체 모델 데이터 리키지 검증 설계 (0) | 2026.04.03 |
| fda) 뉴데이터 (0) | 2026.04.02 |