본문으로 건너뛰기

007 AutoML.fit() 핵심 파라미터

키워드: fit, 파라미터

개요

FLAML의 핵심은 AutoML.fit() 메서드입니다. 이 메서드 하나로 데이터 전처리, 모델 선택, 하이퍼파라미터 튜닝이 모두 이루어집니다.

이 글에서는 fit() 메서드의 주요 파라미터들을 상세히 알아보고, 각 파라미터가 학습에 어떤 영향을 미치는지 살펴보겠습니다.

실습 환경

  • Python 버전: 3.11 권장
  • 필요 패키지: flaml[automl], pandas, scikit-learn
pip install flaml[automl] pandas scikit-learn

fit() 메서드 기본 구조

from flaml import AutoML

automl = AutoML()
automl.fit(
X_train, # 학습 특성 데이터
y_train, # 학습 타겟 데이터
task="classification", # 태스크 유형
time_budget=60, # 시간 예산 (초)
metric="accuracy", # 최적화 지표
# ... 추가 파라미터
)

필수 파라미터

X_train, y_train

학습에 사용할 데이터입니다.

# 007 numpy array
automl.fit(X_train, y_train, ...)

# 007 pandas DataFrame/Series
automl.fit(df_train, y_train, ...)

# 007 DataFrame 전체 (label 파라미터 사용)
automl.fit(dataframe=df, label='target_column', ...)

task

수행할 머신러닝 태스크 유형입니다.

task 값설명
"classification"분류 (이진/다중)
"regression"회귀
"ts_forecast"시계열 예측
"rank"랭킹
"seq-classification"시퀀스 분류 (NLP)
# 007 분류
automl.fit(X, y, task="classification")

# 007 회귀
automl.fit(X, y, task="regression")

# 007 시계열
automl.fit(X, y, task="ts_forecast", period=12)

시간 관련 파라미터

time_budget

전체 학습에 사용할 최대 시간(초)입니다.

automl.fit(X, y, task="classification", time_budget=60)  # 60초
automl.fit(X, y, task="classification", time_budget=300) # 5분
automl.fit(X, y, task="classification", time_budget=3600) # 1시간

시간 예산 팁

  • 탐색적 분석: 30~60초
  • 일반 학습: 60~300초
  • 프로덕션: 600초 이상

max_iter

최대 반복 횟수입니다. time_budget과 함께 사용하면 둘 중 먼저 도달하는 조건에서 멈춥니다.

automl.fit(
X, y,
task="classification",
time_budget=300,
max_iter=100 # 최대 100번 반복
)

평가 지표 파라미터

metric

최적화할 평가 지표입니다.

분류용 지표

metric설명
"accuracy"정확도
"roc_auc"ROC AUC
"roc_auc_ovr"다중 분류 ROC AUC
"f1"F1 점수
"log_loss"로그 손실
"micro_f1"Micro F1
"macro_f1"Macro F1
# 007 정확도 최적화
automl.fit(X, y, task="classification", metric="accuracy")

# 007 AUC 최적화 (불균형 데이터에 적합)
automl.fit(X, y, task="classification", metric="roc_auc")

회귀용 지표

metric설명
"r2"R² 점수
"mse"평균 제곱 오차
"rmse"루트 평균 제곱 오차
"mae"평균 절대 오차
"mape"평균 절대 백분율 오차
# 007 R² 최적화
automl.fit(X, y, task="regression", metric="r2")

# 007 RMSE 최적화
automl.fit(X, y, task="regression", metric="rmse")

모델 선택 파라미터

estimator_list

탐색할 모델 목록입니다.

# 007 기본값: 모든 사용 가능한 모델
automl.fit(X, y, task="classification")

# 007 특정 모델만 탐색
automl.fit(
X, y,
task="classification",
estimator_list=["lgbm", "xgboost", "rf", "extra_tree"]
)

# 007 빠른 탐색 (경량 모델만)
automl.fit(
X, y,
task="classification",
estimator_list=["lgbm", "rf"]
)

사용 가능한 추정기

추정기설명
"lgbm"LightGBM
"xgboost"XGBoost
"xgb_limitdepth"깊이 제한 XGBoost
"rf"Random Forest
"extra_tree"Extra Trees
"lrl1"L1 정규화 로지스틱 회귀
"lrl2"L2 정규화 로지스틱 회귀
"catboost"CatBoost
"kneighbor"KNN

검증 관련 파라미터

n_splits

교차 검증 폴드 수입니다.

automl.fit(
X, y,
task="classification",
n_splits=5 # 5-fold 교차 검증
)

split_type

데이터 분할 방식입니다.

# 007 기본 분할
automl.fit(X, y, split_type="auto")

# 007 Stratified (분류에서 클래스 비율 유지)
automl.fit(X, y, split_type="stratified")

# 007 Group 기반 분할
automl.fit(X, y, split_type="group", groups=group_array)

# 007 시계열용
automl.fit(X, y, split_type="time")

eval_method

평가 방법입니다.

# 007 자동 선택 (기본값)
automl.fit(X, y, eval_method="auto")

# 007 교차 검증
automl.fit(X, y, eval_method="cv")

# 007 홀드아웃
automl.fit(X, y, eval_method="holdout")

고급 파라미터

seed

재현성을 위한 랜덤 시드입니다.

automl.fit(
X, y,
task="classification",
seed=42 # 결과 재현 가능
)

verbose

로그 출력 레벨입니다.

# 007 로그 없음
automl.fit(X, y, verbose=0)

# 007 기본 로그
automl.fit(X, y, verbose=1)

# 007 상세 로그
automl.fit(X, y, verbose=2)

early_stop

조기 종료 설정입니다.

automl.fit(
X, y,
task="classification",
early_stop=True # 성능 개선 없으면 조기 종료
)

log_file_name

학습 로그를 파일로 저장합니다.

automl.fit(
X, y,
task="classification",
log_file_name="flaml_training.log"
)

실전 예제: 파라미터 조합

빠른 프로토타이핑

automl.fit(
X_train, y_train,
task="classification",
time_budget=30,
metric="accuracy",
estimator_list=["lgbm", "rf"],
verbose=0
)

정밀 튜닝

automl.fit(
X_train, y_train,
task="classification",
time_budget=300,
metric="roc_auc",
n_splits=5,
early_stop=True,
seed=42,
verbose=1,
log_file_name="detailed_training.log"
)

불균형 데이터

automl.fit(
X_train, y_train,
task="classification",
time_budget=120,
metric="f1", # 또는 "roc_auc"
split_type="stratified",
eval_method="cv",
n_splits=5
)

파라미터 요약표

파라미터기본값설명
task필수태스크 유형
time_budget필수시간 예산 (초)
metrictask별 기본값최적화 지표
estimator_list전체탐색할 모델
n_splits5CV 폴드 수
seedNone랜덤 시드
verbose1로그 레벨
early_stopFalse조기 종료

정리

  • tasktime_budget필수 파라미터입니다.
  • metric으로 최적화 목표를 설정합니다.
  • estimator_list탐색할 모델을 제한할 수 있습니다.
  • seed를 설정하면 결과 재현이 가능합니다.
  • verbose로그 출력을 제어합니다.
  • 상황에 맞는 파라미터 조합으로 효율적인 학습이 가능합니다.

다음 글 예고

다음 글에서는 time_budget - 시간 예산의 개념과 활용에 대해 알아보겠습니다. FLAML의 핵심 개념인 시간 예산을 깊이 있게 다룹니다.


FLAML AutoML 마스터 시리즈 #007