✅ MTadGAN 기반 시계열 이상 탐지 프로젝트: Epoch 30 이후 정리
🧠 1. 학습 단계 (Training Phase)
- 총 30 epoch 동안 학습을 수행함. 각 epoch의 루프 구조는 다음과 같음:
for epoch in range(1, epochs + 1):
- 매 epoch에서 다음 작업이 이루어짐:
- 입력 데이터를 무작위로 섞음 (
np.random.shuffle
)
critic_x
와 critic_z
는 각각 5회씩 학습 (WGAN 방식)
- 이후
encoder
와 generator
는 1회 학습
- 사용된 손실 함수 구성:
- Wasserstein Loss (real - fake 판별 기준)
- Gradient Penalty (비용 함수 안정화)
- MSE 기반 Reconstruction Loss (예측 재구성 정확도)
- 학습 중 손실값 변화:
- 초반 몇 epoch 동안에는 loss가 불안정하게 진동함
- 이후 epoch 14~30에 걸쳐 점차 generator와 critic이 균형을 맞추기 시작함
- 최종적으로 generator loss가 증가하고 critic의 판별력이 안정화됨
- 학습 완료 후 가중치 저장:
critic_x_model.save_weights(...)
critic_z_model.save_weights(...)
encoder_generator_model.save_weights(...)
📉 2. 테스트 데이터 예측 (Prediction Phase)
- 테스트 데이터:
Test07_NG_dchg.csv
- 전처리 순서:
- PCA (3개 주성분으로 차원 축소)
- Min-Max Scaling (-1 ~ 1 범위로 정규화)
- Rolling window 시퀀스 생성 (윈도우 크기 = 10)
- 모델 예측 수행:
y_hat, critic = predict(X)
- 결과:
y_hat
: 입력 시퀀스를 기반으로 재구성된 값 (shape: [4584, 10, 3])
critic
: critic_x가 평가한 판별 점수 (shape: [4584, 1])
📊 3. 이상 점수 계산 및 스코어링
score_anomalies()
함수를 통해 이상 점수 산출
- 주요 구성 요소:
- 재구성 오류 (reconstruction error): 실제값과 예측값의 차이 (point/area/DTW 가능)
- critic score: discriminator가 부여한 판별 점수의 KDE 기반 anomaly score