TensorFlow는 부스트 트리(boosted trees)와 함께 사용하면 데이터셋에 대한 예측 성능을 크게 향상시킬 수 있습니다. 데이터는 일반적인 방식대로 로드하고 전처리하며, 예측 단계에서는 여러 개의 모델이 동시에 예측을 수행한 뒤, 각 모델의 출력을 결합하여 최종 결과를 도출하는 것이 핵심입니다.
함께 읽으면 좋은 글: TensorFlow란 무엇이며, Keras는 어떻게 TensorFlow와 함께 동작해 신경망을 만들까요?
이 튜토리얼에서는 Keras Sequential API를 사용합니다. Sequential API는 레이어가 순차적으로 쌓인 형태의 모델을 손쉽게 구축할 수 있으며, 각 레이어는 정확히 하나의 입력 텐서와 하나의 출력 텐서를 가집니다.
참고로, 최소 한 개 이상의 레이어를 포함하는 신경망을 컨볼루션 신경망(Convolutional Neural Network)이라고 부르며, CNN 역시 학습 모델을 구축하는 데 널리 활용됩니다.
아래 코드는 Google Colaboratory 환경에서 실행됩니다. Google Colab은 브라우저만으로 Python 코드를 실행할 수 있게 해주며, 별도의 설정이 필요 없고 GPU(그래픽 처리 장치)에도 무료로 접근할 수 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다.
부스트 트리 모델이란?
이번 예제에서는 결정 트리(decision tree)와 tf.estimator API를 사용해 그래디언트 부스팅(gradient boosting) 모델을 훈련하는 과정을 살펴봅니다. 부스트 트리 모델은 회귀(regression)와 분류(classification) 문제 모두에서 가장 인기 있고 효과적인 머신러닝 기법 중 하나로 꼽힙니다.
부스트 트리는 일종의 앙상블(ensemble) 기법으로, 수십 개에서 수백, 수천 개에 이르는 다수의 트리 모델이 낸 예측값을 결합하여 최종 예측을 만듭니다. 덕분에 하이퍼파라미터 튜닝을 최소화하면서도 인상적인 성능을 얻을 수 있습니다.
예제 코드
import numpy as np
import pandas as pd
from IPython.display import clear_output
from matplotlib import pyplot as plt
print("Load the dataset")
dftrain = pd.read_csv('https://storage.googleapis.com/tf-datasets/titanic/train.csv')
dfeval = pd.read_csv('https://storage.googleapis.com/tf-datasets/titanic/eval.csv')
print("Delete the column 'survived'")
y_train = dftrain.pop('survived')
y_eval = dfeval.pop('survived')
import tensorflow as tf
tf.random.set_seed(123)코드 출처 − https://www.tensorflow.org/tutorials/estimator/boosted_trees
실행 결과
Load the dataset Delete the column 'survived'
코드 설명
- numpy, pandas, matplotlib 등 학습에 필요한 패키지들을 임포트합니다.
- Titanic(타이타닉) 생존자 데이터셋을 로드합니다.
- 데이터셋을 CSV 파일 형태로 읽어 들여 학습용(dftrain)과 평가용(dfeval)으로 나눕니다.
- 예측 대상인 'survived' 열을 pop() 메서드로 분리하여 레이블(y_train, y_eval)로 지정합니다.