FT Transformer로 은하 병합 분류하기 (TabularOnly)

2한나·2025년 8월 20일

졸업연구

목록 보기
13/13

이미지 + Tabular 데이터를 함께 학습하는 멀티모달 모델을 실험하기 전, tabular 데이터만 사용한 모델을 실험해보았다.

  • 클래스
    • Non-merger
    • Pre-merger
    • Post-merger
  • 모델: FT Transformer (rtdl-revisiting-models)
  • 프레임워크: PyTorch

데이터셋

저장소

천문팀에게 받은 수치데이터들을 전처리하여 Hugging Face에 올려두었다. GalaxyMergerTabularTensorSample_v1

구성

은하의 물리량과 광학 특성을 담고 있으며, 총 14개의 연속형(feature) + 1개의 정답 라벨(Phase) 로 구성된다.

Feature설명타입
mass은하 질량float64
color_UrU–r 색지수float64
color_BVB–V 색지수float64
color_grg–r 색지수float64
color_gig–i 색지수float64
N_aper_2_Mpc2 Mpc 내 은하 수 (환경 밀도 지표)float64
nn1_distance가장 가까운 이웃 은하까지의 거리float64
SFR_200Myr지난 200 Myr 동안의 별 생성률(Star Formation Rate)float64
SpecificAngMom은하의 비각운동량float64
AxisRatio은하 축비(평평함 정도)float64
BarStrength은하 중심 바(Bar) 구조 강도float64
B_TBulge-to-Total 비율 (팽대부/전체)float64
NumMajorMergersLastGyr지난 1 Gyr 동안의 주병합 횟수float64
NumMinorMergersLastGyr지난 1 Gyr 동안의 부병합 횟수float64
Phase레이블 (0=Non-merger, 1=Pre-merger, 2=Post-merger)int64

레이블

Phase (Non-merger / Pre-merger / Post-merger)

모델 구조

FT-Transformer는 탭형 데이터 전용 Transformer 아키텍처이다.

  • d_token=192, n_heads=8, n_layers=4
  • Attention Dropout / FFN Dropout = 0.1
  • Optimizer = AdamW (lr=1e-3, weight_decay=1e-2)
  • Loss = CrossEntropy (클래스 불균형 시 가중치 적용 가능)

학습 전략

  • Batch size: 256
  • Scheduler: ReduceLROnPlateau (val_loss 기준, patience=2)
  • EarlyStopping: patience=5 (Epoch은 최대 100)
  • AMP + Gradient Clipping: 학습 안정성과 속도 개선

훈련 과정에서는 Train/Validation Loss 곡선을 모니터링했고, 최적 모델(best_ftt.pt)을 저장해 테스트에 사용했다.

학습 결과

약 47 epoch 만에 train acc 72%, val acc 71% 수준에 도달하며 안정적으로 수렴하였다.

Test 결과

Test macro-F1      : 0.6962

[Test] Classification Report
              precision    recall  f1-score   support

           0     0.7261    0.8943    0.8015       246
           1     0.6552    0.4897    0.5605       194
           2     0.7430    0.7112    0.7268       187

    accuracy                         0.7145       627
   macro avg     0.7081    0.6984    0.6962       627
weighted avg     0.7092    0.7145    0.7046       627

0개의 댓글