본문 바로가기
ML | DL

AutoML_Alex 라이브러리 설명

by 편의점소세지 2021. 7. 15.
반응형

여전히 DACON문제를 풀면서 AutoML을 찾아보던 중 매우 유용한 라이브러리를 찾게 되었습니다. 

https://dacon.io/competitions/official/235736/codeshare/2870

글에서 처음 autoML을 알게 되었고 더 다양한 기능이 있어 한번 소개하고자합니다.

 

1. 다양한 머신러닝 모델 구현

해당 데이콘 코드 공유에서는 LGBM을 사용해서 AutoML을 사용했는데, sklearn에서 지원하는 모델과 XGboost, Catboost까지도 마찬가지로 AutoML을 통해 최적화하여 사용할 수 있습니다.

 

또한, AutoML 모델을 사용할 수 있는데요. 이의 소스코드를 확인하면  아래 코드 처럼 되어있습니다.

from automl-alex import AutoMLRegressor, LGBMRegressor
automl = AutoMLRegressor(metrics=)
automl.fit(X,Y,
			verbose=3,
            folds=12,
            opt_lvl=3,
            early_stoping=120,
            auto_parameters=False,
            timeout=1100
           )

 

 

self.model_1 = automl_alex.CatBoost(
            type_of_estimator=self._type_of_estimator,
            random_state=self._random_state,
            gpu=self._gpu,
            # verbose=verbose,
        )
self.model_1 = self.model_1.fit(
        X_tmp, y, cat_features=self._cat_cat_features.tolist()
        )

...

self.model_2 = automl_alex.BestSingleModel(
            models_names=[
                # "LinearModel",
                "LightGBM",
                # "ExtraTrees",
                # "RandomForest",
                # "MLP",
            ],
            **params,
        )

        timeout_model_2 = (timeout) - (time.time() - start_step_0) - 120
history = self.model_2.opt(
            X=X,
            y=y,
            timeout=timeout_model_2,
            verbose=verbose,
            fit_end=False,
        )

 

catboost는 최적화하지 않고 바로 사용했고, lgbm은 최적화하여 사용하는 것(**params 클래스를 선언할 때 주입했습니다.)을 볼 수 있습니다.

 

predict를 하게되면 아래코드처럼 Catboost값 * 0.4 + LGBM값 * 0.6으로 계산해주는 모델이죠

predicts = (self.predict_model_1 * 0.4) + (self.predict_model_2 * 0.6)

굳이 AutoML모델을 안써도 단일 모델을 사용해도 좋으니 각자 적절한 모델을 선택하는 것이 중요할 것 으로 생각됩니다.

 

2. 모델 내의 속성에 대한 설명

저는 metric, auto_parameters, timeout, folds, opt_lvl, early_stoping, verbose를 사용했는데요. 여기서 독특한 속성들이 있습니다. 

 

저는 auto_parameteropt_lvl이 두 속성에 대해 자세히 알아봤습니다.

 

모든 하이퍼파라미터를 조정하기엔 너무 오랜시간이 걸릴 수 있기 때문에 opt_lvl를 정하게 되는데요. 모델마다 opt_lvl에 따른 튜닝 정도를 선택할 수 있습니다. 저는 3으로 정했습니다.

 

auto_parameter는 위에 속성들을 자동을 설정해주는 기능인데요. timeout시간에 적절한 otp_lvl, fold, earlystop값을 설정해주는데요.... 값을 보면 굉장히 값이 낮게 설정 되어있어서 False로 처리해주시는 것이 좋을 것 같습니다. (default값이 True입니다.)

 

반응형

댓글