본문으로 건너뛰기

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년
  • 개발사: 펜실베니아 대학교
  • 특징: 유전 알고리즘 기반 파이프라인 최적화

상세 비교표

기본 정보

항목FLAMLPyCaretAuto-sklearnH2OTPOT
개발사Microsoft커뮤니티대학H2O.ai대학
라이선스MITMITBSDApache 2.0LGPL
최신 버전2.x3.x0.15.x3.x0.12.x
활발한 개발매우 활발활발보통활발보통

설치 및 환경

항목FLAMLPyCaretAuto-sklearnH2OTPOT
설치 난이도쉬움쉬움어려움보통쉬움
Windows 지원완벽완벽제한적완벽완벽
Colab 지원완벽제한적제한적가능가능
의존성적음많음많음Java 필요적음

성능 및 속도

항목FLAMLPyCaretAuto-sklearnH2OTPOT
학습 속도매우 빠름보통느림빠름매우 느림
메모리 효율높음보통낮음보통보통
대용량 처리좋음보통제한적매우 좋음제한적

기능

항목FLAMLPyCaretAuto-sklearnH2OTPOT
분류OOOOO
회귀OOOOO
시계열OOXOX
클러스터링XOXOX
NLPOXXOX
앙상블자동OOOO

코드 비교

동일한 문제를 각 도구로 해결하기

문제: 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