004 FLAML vs 다른 AutoML 도구 비교
키워드: 비교, PyCaret, Auto-sklearn
개요
AutoML 도구는 다양하게 존재합니다. FLAML, PyCaret, Auto-sklearn, H2O AutoML, TPOT 등 각각의 도구는 고유한 장단점을 가지고 있습니다.
이 글에서는 FLAML을 중심으로 주요 AutoML 도구들을 비교하고, 어떤 상황에서 어떤 도구를 선택해야 하는지 알아보겠습니다.
실습 환경
- Python 버전: 3.11 권장
- 필요 패키지:
flaml[automl], pycaret, scikit-learn
pip install flaml[automl] scikit-learn pandas
주요 AutoML 도구 소개
1. FLAML (Microsoft)
- 출시: 2020년
- 개발사: Microsoft Research
- 특징: 빠르고 가벼운 AutoML, 시간 예산 기반 최적화
2. PyCaret
- 출시: 2019년
- 개발사: 오픈소스 커뮤니티
- 특징: Low-code ML, 포괄적인 기능, 시각화 우수
3. Auto-sklearn
- 출시: 2015년
- 개발사: 프라이부르크 대학교
- 특징: scikit-learn 기반, 메타러닝 활용
4. H2O AutoML
- 출시: 2017년
- 개발사: H2O.ai
- 특징: 대규모 데이터 처리, 기업용 솔루션
5. TPOT
- 출시: 2016년
- 개발사: 펜실베니아 대학교
- 특징: 유전 알고리즘 기반 파이프라인 최적화
상세 비교표
기본 정보
| 항목 | FLAML | PyCaret | Auto-sklearn | H2O | TPOT |
|---|---|---|---|---|---|
| 개발사 | Microsoft | 커뮤니티 | 대학 | H2O.ai | 대학 |
| 라이선스 | MIT | MIT | BSD | Apache 2.0 | LGPL |
| 최신 버전 | 2.x | 3.x | 0.15.x | 3.x | 0.12.x |
| 활발한 개발 | 매우 활발 | 활발 | 보통 | 활발 | 보통 |
설치 및 환경
| 항목 | FLAML | PyCaret | Auto-sklearn | H2O | TPOT |
|---|---|---|---|---|---|
| 설치 난이도 | 쉬움 | 쉬움 | 어려움 | 보통 | 쉬움 |
| Windows 지원 | 완벽 | 완벽 | 제한적 | 완벽 | 완벽 |
| Colab 지원 | 완벽 | 제한적 | 제한적 | 가능 | 가능 |
| 의존성 | 적음 | 많음 | 많음 | Java 필요 | 적음 |
성능 및 속도
| 항목 | FLAML | PyCaret | Auto-sklearn | H2O | TPOT |
|---|---|---|---|---|---|
| 학습 속도 | 매우 빠름 | 보통 | 느림 | 빠름 | 매우 느림 |
| 메모리 효율 | 높음 | 보통 | 낮음 | 보통 | 보통 |
| 대용량 처리 | 좋음 | 보통 | 제한적 | 매우 좋음 | 제한적 |
기능
| 항목 | FLAML | PyCaret | Auto-sklearn | H2O | TPOT |
|---|---|---|---|---|---|
| 분류 | O | O | O | O | O |
| 회귀 | O | O | O | O | O |
| 시계열 | O | O | X | O | X |
| 클러스터링 | X | O | X | O | X |
| NLP | O | X | X | O | X |
| 앙상블 | 자동 | O | O | O | O |
코드 비교
동일한 문제를 각 도구로 해결하기
문제: Iris 데이터세트로 분류 모델 학습
FLAML
from flaml import AutoML
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
automl = AutoML()
automl.fit(X_train, y_train, task="classification", time_budget=60)
print(f"최적 모델: {automl.best_estimator}")
print(f"정확도: {1 - automl.best_loss:.4f}")
코드 라인 수: 8줄
PyCaret
from pycaret.classification import *
from sklearn.datasets import load_iris
import pandas as pd
data = load_iris()
df = pd.DataFrame(data.data, columns=data.feature_names)
df['target'] = data.target
clf = setup(df, target='target', session_id=42, verbose=False)
best_model = compare_models()
print(f"최적 모델: {best_model}")
코드 라인 수: 9줄
Auto-sklearn
import autosklearn.classification
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
automl = autosklearn.classification.AutoSklearnClassifier(
time_left_for_this_task=60,
per_run_time_limit=30
)
automl.fit(X_train, y_train)
print(automl.leaderboard())
코드 라인 수: 11줄
속도 비교 (60초 제한)
| 도구 | 탐색한 모델 수 | 최종 정확도 |
|---|---|---|
| FLAML | ~50개 | 0.97 |
| PyCaret | ~15개 | 0.96 |
| Auto-sklearn | ~10개 | 0.95 |
| H2O | ~20개 | 0.97 |
| TPOT | ~5개 | 0.94 |
참고: 실제 결과는 환경과 데이터에 따라 다를 수 있습니다.
FLAML만의 장점
1. 시간 예산 최적화
# 004 FLAML: 정확한 시간 제어
automl.fit(X, y, time_budget=60) # 정확히 60초 내 완료
다른 도구들은 시간 예산을 초과하는 경우가 많습니다.
2. 비용 효율적 탐색 (CFO)
FLAML은 저비용 모델(간단한 모델)부터 시작해서 점진적으로 복잡한 모델을 탐색합니다:
lgbm (빠름) → xgboost → random_forest → extra_trees → ...
3. 커스텀 학습기 추가
from flaml import AutoML
from sklearn.svm import SVC
# 004 커스텀 학습기 추가
automl = AutoML()
automl.add_learner(learner_name='svm', learner_class=SVC)
automl.fit(X, y, estimator_list=['svm', 'lgbm'])
4. 하이퍼파라미터 튜닝 전용 기능
from flaml import tune
# 004 기존 모델의 하이퍼파라미터만 튜닝
tune.run(
evaluation_function,
config=search_space,
time_budget_s=60
)
언제 어떤 도구를 선택할까?
FLAML 선택
- 빠른 프로토타이핑이 필요할 때
- 시간 제약이 명확할 때
- 가벼운 환경이 필요할 때
- Google Colab에서 작업할 때
- scikit-learn과의 호환이 중요할 때
PyCaret 선택
- 시각화가 중요할 때
- 클러스터링, 이상치 탐지가 필요할 때
- Low-code 접근이 필요할 때
- 초보자가 ML을 학습할 때
Auto-sklearn 선택
- Linux 환경에서 작업할 때
- 메타러닝 기능이 필요할 때
- scikit-learn 생태계에 익숙할 때
H2O AutoML 선택
- 대용량 데이터를 처리할 때
- 기업 환경에서 사용할 때
- 분산 처리가 필요할 때
TPOT 선택
- 파이프라인 자체를 최적화하고 싶을 때
- 시간이 충분할 때
- 유전 알고리즘 기반 탐색이 필요할 때
도구 선택 플로우차트
시작
│
├─ 시간이 제한적인가? ─── Yes ──→ FLAML
│ │
│ No
│ │
├─ 시각화가 중요한가? ─── Yes ──→ PyCaret
│ │
│ No
│ │
├─ 대용량 데이터인가? ─── Yes ──→ H2O AutoML
│ │
│ No
│ │
├─ Linux 전용 환경? ──── Yes ──→ Auto-sklearn
│ │
│ No
│ │
└─ 파이프라인 최적화? ── Yes ──→ TPOT
정리
- FLAML은 빠르고 가벼운 AutoML로, 시간 예산 기반 최적화가 핵심입니다.
- PyCaret은 포괄적인 기능과 시각화가 강점입니다.
- Auto-sklearn은 메타러닝을 활용하지만 Linux 환경에 제한적입니다.
- H2O는 대용량 데이터와 기업 환경에 적합합니다.
- TPOT은 유전 알고리즘 기반으로 시간이 오래 걸립니다.
- 프로젝트의 요구사항에 따라 적절한 도구를 선택하세요.
다음 글 예고
다음 글에서는 데이터 로딩 - CSV, Excel, SQL 연동에 대해 알아보겠습니다. 다양한 데이터 소스에서 데이터를 불러와 FLAML에 적용하는 방법을 다룹니다.
FLAML AutoML 마스터 시리즈 #004