[머신러닝] AutoML : TPOT 주요 함수

SHIN JAE MIN·2024년 12월 4일

ML

목록 보기
6/7
post-thumbnail

📌 H2O AutoML

▪ TPOT은 유전 알고리즘을 사용하여 머신러닝 파이프라인을 자동으로 탐색, 최적화, 생성하는 AutoML 도구
→ 높은 성능을 얻으려면 그만큼 많은 시간이 걸림

▪ 모델 선택, 하이퍼파라미터 튜닝, 피처 선택, 데이터 전처리 단계를 자동화하며 최적의 ML 파이프라인을 Python 코드로 제공

▪ Scikit-learn 기반으로 설계되어 Python 환경에서 쉽게 사용할 수 있음
→ Python 3.7 이상 권장
→ Scikit-learn 및 기타 ML 패키지 의존성 포함

📖 설치

pip install tpot

📖 사용법

1) 데이터 준비

▪ TPOT은 Scikit-learn 형식의 데이터셋(Numpy 배열 또는 Pandas DataFrame)을 입력으로 사용

▪ 데이터는 훈련 데이터와 테스트 데이터로 분리

2) TPOT 모델 생성 및 학습

▪ TPOTClassifier 또는 TPOTRegressor 객체를 생성하여 모델 탐색 시작
→ 두 클래스 동일한 파라미터를 사용

▪ 유전 알고리즘을 통해 최적의 모델 및 파이프라인을 학습

✍ 주요 파라미터

generations : 유전 알고리즘에서 실행할 세대의 수를 정의
→ 세대 수가 많을수록 탐색 범위가 넓어지지만 시간이 더 소요됨 (기본값은 100)
population_size : 각 세대에서 탐색할 파이프라인의 개수를 설정
→ 값이 클수록 다양한 모델 조합을 탐색할 수 있지만 계산 시간이 길어질 수 있음 (기본값은 100)
scoring : 모델 성능을 평가할 기준을 정의
→ Scikit-learn의 평가 메트릭스를 사용할 수 있으며, 기본값은 분류의 경우 "accuracy" (회귀의 경우 "neg_mean_squared_error")
n_jobs : 병렬 처리를 위한 CPU 코어 수를 설정
→ 모든 가용 코어를 사용하려면 -1로 설정 (기본값은 1)
max_time_mins : 탐색 시간을 분 단위로 제한
→ 지정된 시간이 지나면 탐색이 중단됨 (기본값은 None, 시간 제한 없음)
max_eval_time_mins : 개별 파이프라인을 평가하는 데 허용되는 최대 시간을 분 단위로 설정
→ 복잡한 모델을 평가할 때 시간을 조정 가능 (기본값은 5분)
config_dict : 탐색할 모델과 전처리 방법을 설정
→ 기본값은 TPOT의 사전 정의된 설정이며, 특정 알고리즘만 탐색하려면 사용자 정의 가능

✍ 추가 파라미터

offspring_size : 각 세대에서 새로 생성할 자손 파이프라인의 수를 지정
→ 설정하지 않으면 population_size와 동일하게 설정됨
mutation_rate : 파이프라인에서 돌연변이가 발생할 확률을 설정
→ 높은 값을 설정하면 더 많은 파이프라인 변형이 이루어짐 (기본값은 0.9)
cv : 교차 검증의 폴드 수를 설정
→ 교차 검증을 통해 모델 성능을 평가 (기본값은 5)
verbosity : 실행 중 출력될 메시지의 상세 수준을 설정
→ 0(출력 없음), 1(요약 출력), 2(상세 출력), 3(디버그 정보 포함) (기본값은 0)
early_stop : 성능이 개선되지 않는 세대 수를 지정하여 조기 종료
→ 성능이 일정 세대 동안 개선되지 않을 경우 탐색을 중단해 시간 절약 (기본값은 None, 조기 종료 비활성화)
periodic_checkpoint_folder : 탐색 상태를 주기적으로 저장할 디렉토리 경로를 설정
→ 탐색 도중 중단된 경우, 저장된 상태를 사용해 이어서 탐색 가능 (기본값은 None)
warm_start : 이전 탐색 상태를 유지하여 추가 학습 가능
→ 새로운 실행 시 기존 세대의 파이프라인을 재사용해 탐색 시간을 줄임 (기본값은 False)

# TPOT 모델 정의 및 학습 예시
tpot = TPOTRegressor(
    generations=100, 
    population_size=100, 
    cv=5,
    scoring='r2',
    random_state=42,
    verbosity=2,  
    n_jobs=-1,  
    max_time_mins=360,  
    warm_start=True,  
    periodic_checkpoint_folder='tpot_checkpoints'  
)

3) 최적 모델 성능 확인

▪ tpot.score()를 사용하여 테스트 데이터에서 최적 모델의 성능 확인

4) 최적 파이프라인 코드 저장

▪ tpot.export()를 사용하여 탐색된 최적의 파이프라인을 Python 코드로 저장
▪ 이 코드는 TPOT 없이 독립적으로 실행 가능

5) 모델 성능 평가 및 예측

▪ predict() 함수를 사용하여 모델을 평가하고 예측을 수행

profile
Jam's Tech Log

0개의 댓글