본문 바로가기

Data Science

[AutoML] Auto-Sklearn (V1, V2) : AutoML을 위한 파이썬 라이브러리

728x90

Auto-ML holds the promise of eliminating the tedious manual tuning of hyperparameters and model selection. One example is the Auto-Sklearn API, which provides a simplistic high-level interface to automatically evaluate multiple preprocessing and model fitting pipelines. A key ingredient to previous Auto-ML systems has been the use of so-called meta-features, which are initially computed for the dataset at hand. These features are then used to select a “policy” for sequentially searching through the solution space. The policy selection is based on the meta-feature distance to a meta-dataset of representative datasets. Sometimes this may lead to problems in generalisation if your dataset differs substantially from the meta-dataset. Furthermore, it can be hard to design representative meta-features and to tune the hyperparameters of the Auto-ML algorithm itself. Auto-Sklearn 2.0 aims to overcome both of these challenges by introducing two modifications: First, instead of relying on meta-features, they use a meta-learned portfolio of initial pipelines. Initially, these portfolio candidates are evaluated in order to warmstart the Bayesian Optimization inner loop. Second, they introduce a meta-learned policy selector, which prescribes a model selection strategy (e.g. cross-validation versus simple holdout evaluation) and a budget allocation strategy (full budget versus more aggressive successive halving) based on the number of samples and features in the considered dataset. Hence, the system comes closer to a hierarchical meta-meta approach. The authors validate their proposed modifications on the OpenML Benchmark and provide a new state-of-the-art for both 10 and 60 minute time budgets.

 

작동 방식

1) meta-learning process : 데이터에 어울릴 알고리즘 및 파라미터를 추천

  • OpenML은 다양한 데이터셋의 meta feature와 알고리즘 및 파라미터에 따른 성능 변화에 대한 정보를 가지고 있다. (auto-sklearn 에서는 Bayesian Optimization 을 이용해서 기존 데이터 셋들에 대한 ‘최적의 조합’을 찾고, 기록해두었다)
  • 이 사전정보를 가지고, 새로운 데이터와 기존 데이터 간의 meta-feature 유사도(Minkowski Distance)를 측정한 후, 가장 유사한 데이터셋을 찾아 해당 데이터셋에 가장 성능이 높다고 매칭되어 있는 알고리즘 및 파라미터 조합을 추천해준다

2) 앙상블 기법을 활용해 추천된 알고리즘 / 파라미터 셋들의 최적화를 진행

  • 앞서 추천된 개별적인 “알고리즘 및 파라미터 조합”을 가지는 모델들의 정확도를 구한다.
  • 이 정확도를 기반으로 모델 들 중 Top N개의 모델을 선별한다
  • 이 Top N의 모델들을 하나씩 합치면서 정확도를 비교한다 (합쳐지는 두 모델이 각각 예측한 확률의 평균을 구한 후, 그 평균 확률 스코어를 기반으로 제대로 예측을 하는지를 평가)
  • Top N 의 모델들을 합치는 과정을 반복하며 최적의 앙상블 모델을 결정한다 (정해진 반복의 수 혹은 프로세싱 시간 등으로 루프를 제한할 수 있다.)

 

V2의 4가지 개선사항

  • early stopping : 각 ML 파이프 라인이 전체 검색 공간 내에서 early stopping 전략을 사용할 수 있도록 수정함
  • 모델 선택 전략 개선 : auto sklearn V2에서는 BOHB와 같은 다중 충실도 최적화 방법을 사용 (단일 모델 선택이 모든 유형의 문제에 적합하지 않을 수 있기 때문에 여러 전략을 통합해 모델 선택 전략을 개선함)
  • 유사한 데이터셋 선택 전략 개선 : 포트폴리오를 구축하여 지식 기반에서 유사한 데이터 세트를 찾음
  • 자동화 된 policy 선택 구축

 

사용법

from autosklearn.classification import AutoSklearnClassifier
from sklearn.model_selection import train_test_split

automl = AutoSklearnClassifier(time_left_for_this_task = 300,
                               tmp_folder = "./log/") 
automl.fit(x_train, y_train)

predictions = automl.predict(x_test)
  • time_left_for_this_task : 파라미터를 찾는 전체 과정에 소요되는 총 시간을 결정할 수 있는 옵션
  • tmp_folder : .fit 을 콜 한 후 일어나는 모든 과정에서 기록되는 산출물을 저장하는 root file path

 

Reference

https://medium.com/dlift/%EC%A0%81%EB%8B%B9%ED%95%9C-%EC%A0%95%ED%99%95%EB%8F%84-%EA%B0%80-%EB%B3%B4%EC%9E%A5%EB%90%98%EB%8A%94-%EB%AA%A8%EB%8D%B8%EC%9D%84-%EC%9E%90%EB%8F%99%EC%9C%BC%EB%A1%9C-%EB%A7%8C%EB%93%A4-%EC%88%98%EB%8A%94-%EC%97%86%EC%9D%84%EA%B9%8C-f0da4a6a9607

 

적당한 '정확도'가 보장되는 모델을 '자동으로' 만들 수는 없을까?

데이터의 '특성'에 따라 선택하면 좋을 알고리즘과 어울리는 파라미터들을 '합리적'으로 '잘 찾는' 문제 = AutoML 이라고 한다는 것이다. (게다가 AutoML 의 구현체들은 https://github.com/automl 에서 찾을

medium.com

 

반응형