015 FLAML 기초 총정리
키워드: 기초, 총정리
개요
Part 1 "시작하기" 시리즈를 마무리하며, 지금까지 배운 FLAML의 핵심 내용을 총정리합니다. 이 글을 참고하여 FLAML 기초를 빠르게 복습할 수 있습니다.
FLAML 핵심 요약
FLAML이란?
- 이름: Fast and Lightweight AutoML
- 개발사: Microsoft Research
- 특징: 빠르고 가벼운 AutoML 라이브러리
- 핵심 개념: 시간 예산(time_budget) 기반 최적화
설치
# 015 기본 설치
pip install flaml
# 015 AutoML 기능 포함 (권장)
pip install flaml[automl]
# 015 시계열 포함
pip install flaml[automl,ts_forecast]
기본 사용법
from flaml import AutoML
# 1. AutoML 객체 생성
automl = AutoML()
# 2. 학습
automl.fit(
X_train, y_train,
task="classification", # 또는 "regression"
time_budget=60,
metric="accuracy"
)
# 3. 예측
predictions = automl.predict(X_test)
핵심 파라미터 정리
fit() 필수 파라미터
| 파라미터 | 설명 | 예시 |
|---|---|---|
X_train | 학습 특성 데이터 | DataFrame, array |
y_train | 학습 타겟 데이터 | Series, array |
task | 태스크 유형 | "classification", "regression" |
time_budget | 시간 예산 (초) | 60, 120, 300 |
fit() 주요 선택 파라미터
| 파라미터 | 기본값 | 설명 |
|---|---|---|
metric | task별 기본값 | 최적화 지표 |
estimator_list | 전체 | 탐색할 모델 목록 |
n_splits | 5 | 교차 검증 폴드 수 |
seed | None | 재현성을 위한 시드 |
verbose | 1 | 로그 출력 레벨 |
log_file_name | None | 로그 파일 경로 |
분류 metric 옵션
| metric | 설명 | 사용 상황 |
|---|---|---|
"accuracy" | 정확도 | 균형 데이터 |
"roc_auc" | ROC AUC | 불균형 데이터 |
"f1" | F1 점수 | 불균형 데이터 |
"log_loss" | 로그 손실 | 확률 예측 |
회귀 metric 옵션
| metric | 설명 | 특징 |
|---|---|---|
"r2" | R² 점수 | 설명력 측정 |
"mse" | 평균 제곱 오차 | 큰 오차에 민감 |
"mae" | 평균 절대 오차 | 이상치에 강건 |
사용 가능한 추정기
| 추정기 | 설명 |
|---|---|
"lgbm" | LightGBM (기본 선택) |
"xgboost" | XGBoost |
"rf" | Random Forest |
"extra_tree" | Extra Trees |
"catboost" | CatBoost |
"lrl1", "lrl2" | 로지스틱 회귀 |
결과 확인 속성
# 015 학습 후 결과 확인
automl.best_estimator # 최적 모델 이름 (str)
automl.best_model # 학습된 모델 객체
automl.best_config # 최적 하이퍼파라미터 (dict)
automl.best_loss # 최적 검증 손실 (float)
automl.best_config_train_time # 학습 소요 시간 (float)
워크플로우 체크리스트
학습 전
- 데이터 로드 및 확인
- 결측치 확인/처리
- 특성(X)과 타겟(y) 분리
- 학습/테스트 데이터 분할
- task 유형 결정 (classification/regression)
- time_budget 설정
- metric 선택
학습
from flaml import AutoML
from sklearn.model_selection import train_test_split
# 015 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# 015 FLAML 학습
automl = AutoML()
automl.fit(
X_train, y_train,
task="classification",
time_budget=60,
metric="accuracy",
seed=42
)
학습 후
- best_estimator 확인
- best_config 확인
- 테스트 세트로 평가
- 결과 시각화
- 모델 저장
# 015 평가
from sklearn.metrics import accuracy_score
y_pred = automl.predict(X_test)
print(f"정확도: {accuracy_score(y_test, y_pred):.4f}")
# 015 저장
import pickle
with open('model.pkl', 'wb') as f:
pickle.dump(automl, f)
time_budget 가이드
| 상황 | 권장 시간 |
|---|---|
| 빠른 테스트 | 10~30초 |
| 탐색적 분석 | 30~60초 |
| 일반 학습 | 60~300초 |
| 프로덕션 | 300초 이상 |
코드 템플릿
분류 템플릿
from flaml import AutoML
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report
import pickle
# 015 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42, stratify=y
)
# 015 학습
automl = AutoML()
automl.fit(
X_train, y_train,
task="classification",
time_budget=60,
metric="accuracy",
seed=42
)
# 015 평가
y_pred = automl.predict(X_test)
print(f"최적 모델: {automl.best_estimator}")
print(f"정확도: {accuracy_score(y_test, y_pred):.4f}")
print(classification_report(y_test, y_pred))
# 015 저장
with open('classifier.pkl', 'wb') as f:
pickle.dump(automl, f)
회귀 템플릿
from flaml import AutoML
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score, mean_squared_error
import numpy as np
import pickle
# 015 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# 015 학습
automl = AutoML()
automl.fit(
X_train, y_train,
task="regression",
time_budget=60,
metric="r2",
seed=42
)
# 015 평가
y_pred = automl.predict(X_test)
print(f"최적 모델: {automl.best_estimator}")
print(f"R²: {r2_score(y_test, y_pred):.4f}")
print(f"RMSE: {np.sqrt(mean_squared_error(y_test, y_pred)):.2f}")
# 015 저장
with open('regressor.pkl', 'wb') as f:
pickle.dump(automl, f)
자주 묻는 질문
Q1: FLAML은 어떤 모델을 탐색하나요?
기본적으로 LightGBM, XGBoost, Random Forest, Extra Trees 등을 탐색합니다. estimator_list로 제한할 수 있습니다.
Q2: time_budget을 얼마로 설정해야 하나요?
데이터 크기와 목적에 따라 다릅니다. 일반적으로 60~300초를 권장합니다.
Q3: Colab에서 사용할 수 있나요?
네, !pip install flaml[automl]로 설치 후 바로 사용 가능합니다.
Q4: 모델을 저장하려면?
pickle 또는 joblib으로 AutoML 객체 전체를 저장합니다.
Q5: 커스텀 모델을 추가할 수 있나요?
automl.add_learner()로 sklearn 호환 모델을 추가할 수 있습니다.
Part 1 학습 내용 목록
| 번호 | 제목 | 핵심 내용 |
|---|---|---|
| 001 | FLAML이란? | AutoML 개념, FLAML 특징 |
| 002 | 설치와 환경 구축 | pip 설치, 가상환경 |
| 003 | Google Colab 시작 | Colab 설정, 실습 |
| 004 | 다른 도구 비교 | PyCaret, Auto-sklearn 비교 |
| 005 | 데이터 로딩 | CSV, Excel, SQL |
| 006 | 기본 워크플로우 | 전체 과정 이해 |
| 007 | fit() 파라미터 | 핵심 파라미터 상세 |
| 008 | time_budget | 시간 예산 개념 |
| 009 | metric | 평가 지표 선택 |
| 010 | estimator_list | 모델 선택 |
| 011 | 첫 번째 분류 모델 | 실전 분류 프로젝트 |
| 012 | 첫 번째 회귀 모델 | 실전 회귀 프로젝트 |
| 013 | best_estimator | 결과 확인 방법 |
| 014 | 로그 분석 | 학습 과정 분석 |
| 015 | 기초 총정리 | Part 1 복습 |
다음 단계 안내
Part 2 "분류"에서는 다음 내용을 다룹니다:
- 분류 문제의 이해
- 다양한 분류 프로젝트 (타이타닉, 고객 이탈 등)
- 평가 지표 심화 (혼동 행렬, ROC, F1)
- 불균형 데이터 처리
- 특성 중요도와 모델 해석
정리
- FLAML은 빠르고 가벼운 AutoML 라이브러리입니다.
- time_budget으로 학습 시간을 제어합니다.
- fit() → predict() 두 단계로 간단히 사용합니다.
- best_estimator, best_config로 결과를 확인합니다.
- pickle로 모델을 저장하고 재사용합니다.
다음 글 예고
다음 글에서는 분류 문제의 이해에 대해 알아보겠습니다. Part 2 "분류" 시리즈를 시작하며, 분류 문제의 종류와 특성을 다룹니다.
FLAML AutoML 마스터 시리즈 #015
Part 1 "시작하기" 완료!