데이콘
- 많은 대회에서 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
'Study > ML' 카테고리의 다른 글
[핸즈온머신러닝] chapter 7. 앙상블 학습과 랜덤 포레스트 (0) | 2024.08.09 |
---|---|
[핸즈온머신러닝] Chapter 4. 모델 훈련 (0) | 2024.07.23 |