본문 바로가기
Study/ML

[ML] AutoML (Pycaret, AutoGluon)

by hyeon827 2024. 8. 12.

데이콘

  • 많은 대회에서 AutoML을 빈번히 사용

 

   대구 교통사고 피해 예측 AI 경진대회

 

   HD현대 AI challenge

 

   제주 특산물 가격 예측 AI 경진대회

 

 

AutoML이란?

  • 말 그대로 자동화된 Machine Learning
  • 시간 소모적이고 반복적인 기계 학습 모델 개발 작업 (데이터 전처리, 모델링, 하이퍼파라미터 튜닝 등)을 자동화하는 프로세스
  • 머신러닝을 위한 고급 모델 구축을 자동화하여, 데이터 과학 전문 지식과 프로그래밍 스킬이 없어도 누구나 쉽게 머신러닝을 활용할 수 있도록 도와줌

 

PyCaret

  • python에서 제공하는 open-source 라이브러리
  • PyCaret은 scikit-learn, XGBoost, LightGBM, CatBoost, Optuna 등 다양한 머신러닝 라이브러리와 프레임워크를 감싸는 Python wrapper
  • 즉, 각기 다른 머신러닝 도구들을 개별적으로 설치하고 사용하기 위해 복잡한 코드를 짜는 대신, PyCaret를 사용하면 단순한 코드 몇 줄만으로도 여러 도구의 기능을 활용할 수 있음 (= low-code 라이브러리)
  • 이로 인해 실험을 매우 빠르고 효율적으로 진행할 수 있음
  • Classification, Regression, Clustering, Anomaly Detection 등 Task의 모델 지원

   

   주요 기능

 

   1) Data Preparation 

  • 데이터 전처리를 자동으로 수행
  • 결측값 처리, 범주형 데이터 인코딩, 데이터 스케일링, 데이터 샘플링

   2) Model Training 

  • 다양한 모델 지원 ( Classification, Regression, Clustering, Anomaly Detection 등)
  • 여러 모델을 동시에 훈련시키고, 성능을 비교하여 가장 적합한 모델을 쉽게 선택할 수 있도록 해줌

   3) Hyperparameter Tuning

  • Grid Search, Random Search, Bayesian Optimization 등의 다양한 방법을 사용하여 hyperparameter 자동으로 tuning
  • tuning을 병렬로 수행하여 tuning 시간을 단축할 수 있고 최적의 hyperparameter를 찾아 성능이 가장 높은 모델을 선택할 수 있도록 도와줌

   4) Analysis & Interpretability 

  • 모델 성능을 평가할 수 있는 다양한 지표 제공 (Accuracy, Precision, Recall, ROC-AUC 등)
  • 모델이 왜 이런 결정을 내렸는지 설명하는 도구를 제공 (Feature Importance, SHAP 등)
  • 모델 성능을 직관적으로 이해할 수 있도록 다양한 시각화 도구 제공 (Confusion Matrix, ROC Curve 등)

   5) Model Selection

  • 여러 모델을 동시에 훈련시켜 성능을 비교할 수 있으며, 각 모델의 주요 성능 지표를 한눈에 확인할 수 있음
  • 자동으로 가장 성능이 우수한 모델을 선택할 수 있으며, 이 모델을 활용하여 예측을 수행하거나 배포할 수 있음
  • 여러 모델을 결합하여 성능을 더욱 향상시킬 수 있는 앙상블 기법도 지원  (Bagging, Boosting, Stacking 등)

   6) Experiment Logging

  • 각 실험의 설정, 성능 결과, 모델 파라미터 등을 자동으로 기록
  • 실험 과정을 파이프라인 형태로 저장하여, 나중에 동일한 환경에서 재현할 수 있도록 함
  • 여러 실험을 수행한 후, 각각의 실험 결과를 비교하고 분석할 수 있어 어떤 설정이 가장 좋은 결과를 낳았는지 파악할 수 있음

 

 

   

   코드 실습 (Colab)

 

   1) PyCaret Install

 

   2) Sample 데이터셋 로드 

  • get_data 함수를 사용해 diabetes(당뇨병) 데이터셋 로드
  • Binary Classification

 

   3) Setup

  • pycaret.regression, pycaret.clustering, pycaret.anomaly, pycaret.time_series (task에 맞는 모듈 불러오기)
  • 모델을 훈련하고 평가하기 전에, 필요한 전처리 작업을 한 번에 처리해주는 함수
  • 데이터와 target 변수를 필수로 받으며, 나머지 매개변수는 선택사항
  • Original data shape : 원본 데이터셋 형태
  • Transformed data shape : 전처리된 후 데이터셋의 형태
  • Transforemd train set shape : 훈련용 데이터셋 크기
  • Transformed test set shape : 테스트용 데이터셋의 크기
  • Preprocess : 전처리 수행 여부
  • Numeric imputation : 수치형 데이터 결측값 처리
  • Categorical imputation : 범주형 데이터 결측값 처리
  • Normalize / Normlize method : 정규화
  • Fold Generator : 교차 검증을 위한 폴드 생성 방식
  • Fold Number : 교차 검증에 사용되는 폴드의 수 

 

  • help(setup)을 통해 사용 가능한 파라미터 확인 가능

 

   4) create_model()

  • 단일 ML 모델 생성, 학습, 성능까지 한번에 실행
  • 모델 각각 마다 id 값 지정 

  • 사용 가능 model 확인

 

  • help(setup)을 통해 사용 가능한 파라미터 확인 가능

 

 

   5) compare_models()

  • 다양한 모델 성능 비교
  • sort : 모델을 정렬할 평가 지표
  • n_select : 상위 몇개의 모델을 선택할지 지정
  • fold : 교차 검증할 폴드 수 지정

 

  • 사용 가능 파라미터 확인

 

   6) tune_model()

  • hypermarameter 튜닝
  • 기본값으로 scikit-learn의 random search, optimize = 'Accuracy' , fold=10
  • 파라미터는 help(tune_model)을 통해 확인

 

 

   7) blend_models

  • 이전 단계에서 선택한 모델(들)을 조합하여 더욱 강력한 앙상블 모델을 만듦
  • 기본적으로 10번 학습 (추가 파라미터 확인은 help(blend_models)을 통해 확인)
  • method : 보팅 방식을 지정 (soft / hard)

 

   * Bagging

 

   * Boosting

   * Stacking

  • final_estimator는 LogisticRegression이 defalut 

 

   8) 다시 모델 tuning 

 

   9) prediction

  • finalize_model()를 통해 전체 데이터로 마지막으로 학습 진행
  • predict_model()을 통해 예측 수행 

 

 

AutoGluon (더 놀라운 모델...)

  • AWS(Amazon Web Services)에서 개발한 AutoML 오픈 소스  라이브러리
  • 몇 줄의 코드만으로 이미지, 텍스트, 시계열 그리고 tabular (표 형식) 데이터를 다루는 high-accuracy 머신러닝 및 딥러닝 모델을 학습하고 배포할 수 있음

 

 

코드 실습 (Colab)

 

   1) AutoGluon 라이브러리 설치

  • TabularDataset : Tabular 데이터 (행과 열로 이루어진 표 형식의 데이터)처리하는 클래스. pandas DataFrame의 서브클래스이며, pandas의 모든 기능을 사용할 수 있음
  • TabularPredictor : Tabular 데이터를 기반으로 예측 모델을 생성하고, 학습시켜며, 예측을 수행하는 데 사용

 

   2) 데이터 불러오기

  • 매듭(knot)이라는 수학적 개체의 특성을 기반해 매듭의 signature를 예측하는 데이터

 

   3) Training

  • label를 지정해주고 TabularPredictor.fit()을 사용해 데이터셋 학습 진행
  • 다른 매개변수를 지정할 필요 X
  • AutoGluon은 label 열의 값을 바탕으로 다중 클래스 분류 작업임을 자동으로 인식
  • 또한, 데이터셋의 각 특성을 분석하여 자동으로 feature engineering 수행
  • 그리고 여러 모델을 학습시킨 후 이들을 앙상블하여 최종 예측기 실행

 

   4) Prediction

 

 

   5) Evaluation

  • balanced_accuaracy : 클래스 불균형이 있는 데이터셋에서 각 클래스의 정확도를 평균내어 계산한 값
  • MCC (Matthews Correlation Coefficient) : 예측의 정확성과 균형성을 나타내는 지표 (-1~1)

  • leaderboard() 함수를 통해 테스트 데이터서 각각의 개별 학습된 모델의 성능을 평가할 수 있음
  • stack_level : 레벨 1은 개별 모델, 레벨 2는 앙상블 모델

 

 

Reference

 

https://pycaret.gitbook.io/docs

https://snowwhite1106.tistory.com/166

https://mz-moonzoo.tistory.com/5

https://auto.gluon.ai/stable/index.html