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 | 필수 | 시간 예산 (초) |
metric | task별 기본값 | 최적화 지표 |
estimator_list | 전체 | 탐색할 모델 |
n_splits | 5 | CV 폴드 수 |
seed | None | 랜덤 시드 |
verbose | 1 | 로그 레벨 |
early_stop | False | 조기 종료 |
정리
task와time_budget은 필수 파라미터입니다.metric으로 최적화 목표를 설정합니다.estimator_list로 탐색할 모델을 제한할 수 있습니다.seed를 설정하면 결과 재현이 가능합니다.verbose로 로그 출력을 제어합니다.- 상황에 맞는 파라미터 조합으로 효율적인 학습이 가능합니다.
다음 글 예고
다음 글에서는 time_budget - 시간 예산의 개념과 활용에 대해 알아보겠습니다. FLAML의 핵심 개념인 시간 예산을 깊이 있게 다룹니다.
FLAML AutoML 마스터 시리즈 #007