품질관리(QAQC) 데이터 부트캠프(본캠프)

본캠프_19주차(화)_TIL(최종 프로젝트)

Wat_zy 2026. 1. 20. 08:35

✅ 오늘 한 것

최종 프로젝트


✏️ 오늘 배운 점

Confusion Matrix

TP: 진짜 양성(모델이 양성이라고 예측하고 실제로 양성인 경우)

FN: 가짜 음성(모델이 음성이라고 예측했으나 실제로는 양성인 경우)

FP: 가짜 양성(모델이 양성이라고 예측했으나 실제로는 음성인 경우)

TN: 진짜 음성(모델이 음성이라고 예측하고 실제로 음성인 경우)


1. 🎯 프로젝트 목표 및 시나리오 확정

  • 목표: 연구자가 입력한 항원 데이터를 기반으로 실험 성공 확률이 높은 후보를 추천해주는 대시보드 백엔드 구축.
  • 구조 (Funnel 방식):
    • Stage 1 (High Recall): "생물학적 가능성 탐색"
      • 입력: Antigen(서열), Disease, State
      • 역할: 실험 방법과 무관하게, 반응할 가능성이 있는 후보를 넓게 확보 (Recall 85% 목표).
    • Stage 2 (High Precision): "실험 환경 최적화"
      • 입력: Antigen, Disease, State + Assay, Method
      • 역할: 사용자가 선택한 실험 조건(ELISA 등)에서 성공할 확률 정밀 예측 (Soft Ensemble 적용).

2. 🛠️ 주요 기술적 의사결정 (Key Decisions)

  • Feature Selection (학습 변수):
    • 결정: 1차 및 2차 모델 학습 시 Assay와 Method를 제외하고, Disease, State만 사용.
    • 이유: 대시보드 사용자가 초기 입력 시 실험 방법을 모를 수 있으며, 모델이 특정 실험 도구에 과적합(Overfitting)되는 것을 막기 위함.
    • 활용: 2차 예측(Inference) 단계에서만 Assay, Method를 입력받아 조건부 시뮬레이션 용도로 사용.
  • Embedding 차원 통일:
    • Antigen + Epitope (2048차원) 대신 Antigen (1024차원)만 사용하기로 통일하여 Stage 1과 Stage 2 간의 차원 불일치 에러 해결.
  • Alpha Tuning:
    • 1차 점수(0.4)와 2차 점수(0.6)를 섞는 Soft Ensemble (alpha=0.4) 도입으로 안정성 확보.

3. 💻 코드 수정 및 트러블 슈팅

  • 라이브러리 에러 해결: transformers(T5Tokenizer), tqdm(진행바), re(정규식) 누락된 import 추가.
  • Blind Test 대응:
    • Test 데이터(test_metadata.csv)에 정답(label)이 없는 상황 확인.
    • 평가(Accuracy, Recall 계산) 코드를 제거하고, 순수 예측 및 리스트 추출 코드로 전환.
  • 파이프라인 연결:
    • [Test 데이터 로드] [1차 선별] →  [1차 통과자 저장] →  [2차 정밀 분석] →  [최종 후보 저장]의 흐름 완성.

4. 📊 최종 결과 (Inference Result)

  • 입력 데이터: 97,607개 (새로운 항원 후보)
  • 1차 통과: 29,098개 (약 30% 생존)
  • 2차 통과: 14개 (0.01% 생존, Threshold 0.811 기준)
  • 해석:
    • 모델이 매우 엄격하고 정밀하게 작동하고 있음을 확인.
    • "실험비 낭비 없이 확실한 것만 추천한다"는 목표 달성.
    • 만약 추천 개수가 너무 적다면 Top-N (상위 100개) 방식으로 유연하게 리스트를 제공하면 됨.

📌추가로 해야 할 점

최종 프로젝트