Pytorch를 사용하여 모델 학습 파이프라인 구축하기

개굴이·7일 전

타이타닉 데이터로 PyTorch 모델 만들기

오늘은 타이타닉 승객 데이터를 이용해 생존 여부와 성별을 예측하는 모델을 만들었다. 아직 세부 코드를 모두 이해한 것은 아니지만, 데이터 준비부터 학습과 검증까지의 전체 흐름을 익혔다.

1. 데이터 확인과 feature 선택

각 열의 의미를 확인하고, 모델에 넣을 입력 정보와 예측할 정답을 구분했다.

  • 입력(X): 승객의 나이, 객실 등급, 운임, 동반 가족 수 등의 정보
  • 정답(y): survived와 sex

정답으로 사용하는 열은 입력에서 제외해야 한다는 점도 배웠다.

2. 데이터 분리와 전처리

데이터를 train, validation, test로 나눴다. 각각 학습, 모델 선택, 최종 평가에 사용하는 데이터다.

모델이 계산할 수 있도록 boolean과 문자 데이터를 숫자로 변환하고, 나이의 결측값은 train에서 구한 중앙값으로 채웠다. 결측값이 많은 deck은 제외하기로 했다.

3. Dataset과 DataLoader 생성

전처리한 데이터를 PyTorch의 Tensor로 변환했다.

TensorDataset으로 입력과 정답을 묶고, DataLoader로 한 번에 32명씩 학습하도록 구성했다. 학습 데이터는 순서를 섞어서 사용했다.

4. 모델 구축과 학습

여러 Linear 층과 ReLU를 연결한 신경망을 만들었다. 생존 여부와 성별을 함께 예측하므로 마지막 출력은 2개로 설정했다.

학습은 다음 과정을 반복한다.

예측 → 정답과 비교해 오차 계산 → 기울기 계산 → 가중치 수정

손실함수는 BCEWithLogitsLoss, 최적화 도구는 Adam을 사용했다.

5. 결과 확인과 기록

마지막 학습 기록에서 두 예측을 합친 정확도는 약 73.7%였다. 검증 데이터에서는 다음 결과가 나왔다.

  • 생존 예측 정확도: 65.17%
  • 성별 예측 정확도: 71.91%

학습 정확도만으로 성능을 판단할 수 없고, 별도 데이터에서 검증해야 한다는 점을 배웠다. 또한 epoch마다 Loss와 Accuracy를 저장하고 그래프로 확인하는 방법도 살펴봤다.

오늘 이해한 핵심 흐름은 데이터 확인 → 전처리·분리 → Dataset·DataLoader 생성 → 모델 구축 → 학습 → 검증이다. 앞으로는 각 코드의 역할을 더 자세히 이해하고, 전처리와 모델 설정에 따라 성능이 어떻게 달라지는지 확인해 보고 싶다.

0개의 댓글