pycaret을 사용한 데이터 분석, 머신러닝

송승관·2020년 10월 26일
5

개요

pycaret은 기존에 있던 Scikit-learn, XGBoost, LightGBM, spaCy 등 여러가지 머신러닝 라이브러리를 ML High-Level API로 제작한 라이브러리다. 단 몇 줄만에 데이터 분석 및 머신러닝 모델 성능 비교까지 가능하고, Log를 생성하여 이력을 남겨준다.

머신러닝 기법 종류

Pycaret 적용 순서

1️⃣ 데이터 준비(setup)

pd.dataframe 으로 로드되어진 데이터를 머신러닝에 사용할 수 있도록 로드 및 전처리하는 기능이다.
데이터 전처리 단계에서 적용하는 기법들에 대해서 파라미터로 간단하게 사용할 수 있도록 구현해놓았다.

from pycaret.classification import setup
clf1 = setup(data, target='Purchase', session_id=123, log_experiment=True, experiment_name='exam_juice')

pycaret에 구현된 머신러닝 기법들을 사용하려면 무조건 런타임에 먼저 setup이 로드되어야 한다.
Classification 예제이며 다른 모듈도 사용법이 크게 다르진 않다. (전처리 파라미터는 머신러닝 기법 별로 상이할 수 있다.)

2️⃣ 모델 생성 및 비교

데이터 준비(setup) 이후, 머신러닝 모델을 선언해서 사용하거나, 전처리한 데이터셋에 맞는 모델을 비교해볼 수 있다.

  • model()
    • 각각 머신러닝 기법(Classification, Regression 등)에 따라 구현된 모델들을 나열해준다.
  • compare_models()
    • Setup 된 데이터를 각각 머신러닝 모델에 적용 후 비교한다.
  • create_model()
    • model()에 적힌 머신러닝 모델을 선택해서 생성한다.

3️⃣ 모델 최적화

2번째에서 compare_models 나 create_model을 사용해서 각각의 모델들을 생성하거나 비교하였다. 결과를 바탕으로 성능이 좋은 모델들을 조합하여 실험해볼 수 있는 모듈을 제공한다.

  • tune_model()
    • 모델의 하이퍼파라미터를 최적화하는 모듈이다.
    • 하이퍼파라미터 반복 횟수나 최적화할 매트릭을 선택할 수 있다.
  • ensemble_model()
    • ensemble 기법을 구현한 모듈이다.
    • bagging과 boosting을 파라미터에서 선택할 수 있다.
  • blend_models()
    • Voting 알고리즘을 구현한 모듈이다.
    • compare_models()에서 성능이 잘 나온 모델들을 선택하는 파라미터를 적용(n_select)시켜서 사용할 수 있다.
  • stack_models()
    • stacking ensemble 방법을 구현한 모듈이다.
    • compare_models()에서 성능이 잘 나온 모델들을 선택하는 파라미터를 적용(n_select)시켜서 사용할 수 있다.

4️⃣ 학습된 모델 분석

pycaret은 위에서 소개된 방법을 사용하여 학습한 이후에 데이터셋이 잘 학습되었는 지 검증을 도와주는 모듈을 제공한다.

  • plot_model()
    • 학습한 모델에 대한 각종 지표들을 시각화한 플롯을 그려주는 모듈이다.
    • auc, threshold, confusion matrix 등 약 15가지 이상의 다양한 플롯들을 지원한다.
  • interpret_model()
    • 모델이 예측한 결과에 대해서 각 파라미터들이 얼마나 영향을 줬는 지 시각화해서 보여준다.
    • SHAP(SHapley Additive exPlanations) 를 사용하여 plot을 그려준다.
  • assign_model()
    • unsupervised 류의 머신러닝 기법(anomaly detection, clustering, NLP)에 대한 머신러닝 결과값(라벨)을 데이터셋에 부쳐준다.
  • calibrate_model()
  • evaluate_model()
    • 모델 분석 후 각 플롯을 볼 수 있도록 사용자 인터페이스를 제공해준다.
    • 한방에 플롯을 전부 띄우고 싶다면 plot_model()보다는 evaluate_model()을 사용한다.
  • get_leaderboard()
    • setup 이후 훈련된 모든 모델을 출력한다.
  • dashboard()
    • explainerdashboard 를 사용하여 모델 분석에 대한 사용자 인터페이스를 제공해준다.
    • evaluate_model() 과 비교해서 사용하면 된다.
  • eda()
    • auto_viz 를 사용하여 데이터셋 분석 결과를 제공해준다.
  • check_fairness()
    • 데이터셋에 각 feature들에 대해 measure를 확인해볼 수 있도록 모듈을 제공해준다.
    • 예를 들어 성별이 feature로 있을 때 check_fairness를 적용시키면, 성별 별로 얼마만큼의 데이터셋이 존재하고, 결과가 어떻게 되는 지 제공해준다.

결론

pycaret 이라는 머신러닝 라이브러리에 대해 알아보았다. scikit-learn을 래핑한 라이브러리라 Keras처럼 사용하기 편리하다는 장점이 있었다. 하지만 Keras는 Tensorflow에 종속되어 있어 Tensorflow에 대한 이해가 필요하듯이, pycaret도 scikit-learn에 대한 이해없이 사용은 가능하지만, scikit-learn 이해 이후 사용한다면, 좀 더 유동적인 프로그래밍이 가능하다. 그리고 pandas-profiling 처럼 쉽게 사용하는 만큼, 머신러닝 기초 지식을 많이 공부하여 분석 결과에 대한 분석, 기법에 대한 이해 등이 필요하다.

Reference

https://pycaret.org/

https://github.com/pycaret/pycaret/

profile
Data Engineer, 변화를 두려워하지 않는 개발자입니다.

2개의 댓글

comment-user-thumbnail
2023년 3월 15일

좋은 글 감사합니다. 데이터 전처리 후 pycaret setup 에서 normalization True 로 설정해서 모델 생성을 했다면,
추후에 inference 할때 data는 normalization을 따로 해준뒤 inference 해야 하나요? 아니면 그냥 model에 넣으면 normalization 까지 처리해주나요?

1개의 답글