Search
Duplicate
⚙️

mljar-supervised 사용법

AutoML 도구인 mljar-supervised 사용법을 정리해둡니다.

설치

pip 혹은 conda 설치 모두 지원합니다.
$ pip install mljar-supervised $ conda install -c conda-forge mljar-supervised
Bash
복사

Quickstart

일반적인 scikit-learn api로 학습이 가능하다.
from supervised import AutoML predictor = AutoML() predictor.fit(train_X, train_y) predictor.predict(val_y)
Python
복사

적절한 Mode를 선택하자

mljar-supervised의 AutoML은 아래와 같은 4개의 mode를 지원한다. AutoML(mode='Explain') 과 같이 사용하면 된다.
1.
Explain : Default 값이다.
2.
Compete
3.
Perform
4.
Optuna

Explain (default)

처음 데이터를 확인하고 분석할 때 적절하게 사용 가능하다. 특징은 아래와 같다.
75:25 train/test split 을 사용한다.
BaselineLinearDecision TreeRandom ForestXgboostNeural Network 모델을 사용한다.
앙상블을 사용한다.
Report에 learning curve, importance plot, SHAP plot을 제공한다.
성능 예시
Breast cancer wisconsin 데이터셋으로 성능을 간단히 확인해 보니, 0.965 정도의 AUC를 얻는다.
import pandas as pd import numpy as np from supervised import AutoML from sklearn import datasets from sklearn.model_selection import KFold from sklearn.metrics import roc_auc_score data = datasets.load_breast_cancer() df, label = data['data'], data['target'] kfold = KFold() scores = [] for fold, (train_idx, val_idx) in enumerate(kfold.split(df), 1): model = AutoML() # default mode는 Explain이다. trainX, trainy = df[train_idx], label[train_idx] valX, valy = df[val_idx], label[val_idx] model.fit(trainX, trainy) scores.append( roc_auc_score(valy, model.predict(valX)) ) np.mean(scores) # 0.9649343311836855
Python
복사

Compete (시간이 오래 걸리지만 성능이 좋다)

Machine learning competition에 적절하다. 특징은 아래와 같다.
데이터셋의 크기와 total_time_limit 파라미터에 따라서 validation strategy가 알아서 선택된다.
80:20 train/test split / 5-fold CV / 10-fold CV 셋 중 하나를 사용
LinearDecision TreeRandom ForestExtra TreesLightGBMXgboostCatBoostNeural NetworkNearest Neighbors 모델을 사용
앙상블과 스태킹을 사용한다.
Report에 learning curve만 제공한다.
성능 예시
0.973의 AUC를 얻는다. 대신 학습 시간은 훨씬 더 오래 걸린다!
import pandas as pd import numpy as np from supervised import AutoML from sklearn import datasets from sklearn.model_selection import KFold from sklearn.metrics import roc_auc_score data = datasets.load_breast_cancer() df, label = data['data'], data['target'] kfold = KFold() scores = [] for fold, (train_idx, val_idx) in enumerate(kfold.split(df), 1): model = AutoML(mode='Compete') trainX, trainy = df[train_idx], label[train_idx] valX, valy = df[val_idx], label[val_idx] model.fit(trainX, trainy) scores.append( roc_auc_score(valy, model.predict(valX)) ) np.mean(scores) # 0.9736778318754558
Python
복사

Perform

실생활에 사용되는 모델에 적절하다. 아래와 같은 특징을 가진다.
5-fold CV
Linear, RandomForest, LightGBM, Xgboost, CatBoost, Neural Network 모델을 사용한다.
앙상블을 사용한다.
Report에 learning curve와 importance plot을 제공한다.

Optuna

Resource가 충분하고, Performance 가 가장 중요할 때 적절하다. 특징은 아래와 같다.
10-fold CV
Random ForestExtra TreesLightGBMXgboostCatBoost 모델을 사용한다.
Optuna를 사용해서 optuna_time_budget 초 만큼 tuning된다. 단, tuning 시에는 feature engineering 없이 기본 feature만 사용한다.
앙상블, 스태킹, advanced feature engineering을 사용한다.
Report에 learning curve만 제공한다.