Scikit Learn은 수년간 가장 인기 있는 머신러닝 라이브러리였습니다. 그러나 이제는 우리의 작업을 더 쉽게 만들어 줄 새로운 라이브러리를 사용할 때가 왔습니다.
이 글에서는 Pycaret라는 Auto ML 라이브러리를 소개하려고 합니다. 저는 PyCaret 라이브러리를 사용하여 붓꽃 데이터셋에서 분류를 수행하는 방법을 설명하겠습니다.
이 글에서 사용된 머신러닝 소스 코드는 다음에서 확인하실 수 있습니다: github.com
아래 링크를 통해 PyCaret에 대해 더 자세히 알아보세요:
PyCaret이 뭐죠?
PyCaret은 머신러닝 모델 개발 전체 과정을 자동화하는 저코드, 오픈소스 파이썬 머신러닝 라이브러리입니다. PyCaret의 목표는 대부분의 작업을 자동화하여 머신러닝 모델의 개발, 배포 및 관리의 효율성을 증가시키는 것이며, 사용자가 매우 적은 코드를 사용하는 것입니다. PyCaret은 코드 작성 없이 복잡한 작업을 완료할 수 있기 때문에 초심자부터 전문가까지에게 좋은 옵션입니다.
공식 문서: PyCaret
아이리스 데이터셋
분석을 시작하기 전에, 데이터셋을 살펴봅시다.
아이리스는 통계 및 머신 러닝에서 잘 알려진 데이터셋입니다.
1936년, 영국 수학자이자 생물학자인 로날드 피셔는 그의 논문 "The Use of Multiple Measurements in Taxonomic Problems"에서 판별 분석을 통한 이를 설명하기 위해 제시했습니다.
이 데이터셋은 150개의 붓꽃 샘플과 각각의 네 가지 특징인 꽃받침의 길이, 꽃받침의 너비, 꽃잎의 길이, 그리고 꽃잎의 너비로 구성되어 있습니다. 타깃 변수는 붓꽃의 종입니다:
- 부채붓꽃 (Irissetosa)
- 세토사붓꽃 (Irisversicolor)
- 버지니카붓꽃 (Irisvirginica).
Auto ML 절차 — 단계별 설명
이 기사에서는 다음 단계를 따라갑니다:
시작해 봅시다!
단계 1: 라이브러리 가져오기 및 데이터셋 불러오기
먼저, 필요한 라이브러리를 가져와서 PyCaret을 사용하여 Iris 데이터셋을 로드해야 합니다.
# pycaret 설치
pip install pycaret
# 필요한 라이브러리 가져오기
from pycaret.datasets import get_data
from pycaret.classification import *
import pandas as pd
# 데이터 불러오기
data = get_data('iris')
단계 2: 탐색적 데이터 분석 (EDA)
EDA는 데이터를 이해하는 데 도움이 됩니다. 먼저 대상 변수의 분포, 요약 통계 및 데이터 세트의 처음 몇 행을 살펴보겠습니다.
#데이터셋의 처음 몇 행 표시
print(data.head())
표는 데이터셋의 처음 몇 행을 보여줍니다. 각 붓꽃의 측정값과 종을 확인할 수 있습니다.
#데이터셋의 요약 통계
print(data.describe())
요약 통계는 각 기능의 분포를 보여줍니다. 평균, 표준편차, 백분위 등이 포함됩니다.
# 타겟 변수 분포
print(data['species'].value_counts())
데이터셋은 각 종별로 50개의 샘플로 완벽히 균형을 이룹니다.
시각화:
특성 간의 관계를 이해하기 위해 페어 플롯(pair plots) 및 박스 플롯(box plots)과 같은 시각화를 사용할 수 있습니다.
표 태그를 Markdown 형식으로 변경하겠습니다.
Pair plot
Pair plot은 각 특성 쌍 간의 관계를 종에 따라 색칠하여 보여줍니다. 꽃잎 길이와 꽃잎 너비와 같은 몇 가지 특성 쌍은 종 간에 명확한 분리를 보여줍니다.
상자 그림
상자 그림은 각 특징이 서로 다른 종에 대해 분포를 보여줍니다. 이는 서로 다른 종에 대해 몇 가지 특징이 구별되는 분포를 가지고 있음을 나타내며, 이는 분류에 유용할 수 있습니다.
단계 3: 환경 설정
다음으로, PyCaret 환경을 설정해보겠습니다. 이 단계에는 데이터셋과 대상 변수를 지정하는 과정이 포함됩니다.
clf = setup(data, target='species', session_id=123, log_experiment=True, experiment_name='iris_classification')
- setup(): PyCaret 환경을 초기화하며, 범주형 변수의 인코딩, 누락된 값의 보간, 데이터를 학습 및 테스트 세트로 분할하는 전처리 작업을 처리합니다.
- data: 사용할 데이터셋입니다.
- target: 예측하고자 하는 대상 변수입니다.
- session_id: 재현성을 위한 랜덤 시드입니다.
- log_experiment: 실험 로깅을 활성화합니다.
- experiment_name: 실험에 이름을 지정합니다.
단계 4: 모델 학습 및 선택
PyCaret은 여러 모델을 쉽게 학습하고 비교할 수 있게 해줍니다. compare_models() 함수를 사용하여 최상의 성능을 낼 모델을 찾을 수 있습니다.
이전에 models() 명령어로 사용 가능한 모든 모델을 확인할 수 있습니다.
목록을 확인한 후에는 데이터 및 해당 특징에 기반하여 비교할 필요가 있는 모델을 선택합니다.
여기서는 Random Forest (rf), Decision Tree (dt), Light Gradient Boosting Machine (lightgbm), Extra Trees Classifier (et) 및 Extreme Gradient Boosting (xgboost)와 같은 트리 기반 모델을 비교하기 위해 선택했습니다.
compare_models() 함수는 기본 하이퍼파라미터를 사용하여 여러 모델을 학습하고 정확도, 정밀도, 재현율 및 F1 점수를 포함한 다양한 메트릭을 사용하여 성능을 평가합니다. 결과에 따라 가장 우수한 성능을 보이는 모델을 반환하고 최상위 모델을 강조합니다.
단계 5: 모델 평가
최적 모델을 선택한 후, 다양한 메트릭과 시각화를 사용하여 모델의 성능을 평가합니다.
evaluate_model()
은 혼동 행렬, ROC 곡선, 분류 보고서와 같은 모델 성능을 평가하기 위한 여러 메트릭과 시각화 도구를 제공합니다.
이것은 evaluate_model()
에 의해 생성된 의사결정 경계 플롯입니다.
단계 6: 모델 튜닝
tune_model() 함수를 사용하여 모델의 하이퍼파라미터를 조정하여 성능을 향상시킬 수 있습니다.
선택한 모델의 하이퍼파라미터를 최적화하여 성능을 향상시킵니다. 최적의 하이퍼파라미터 조합을 찾기 위해 그리드 탐색 또는 랜덤 탐색 방법을 사용합니다.
최종 모델 파이프라인은 다음과 같습니다
단계 7: 플로팅과 시각화
모델 성능과 특성 중요도를 시각화하기 위해 PyCaret은 다양한 플로팅 함수를 제공합니다.
생성된 혼동 행렬은 모델의 성능을 실제 양성, 실제 음성, 거짓 양성 및 거짓 음성 측면에서 시각화합니다.
이 그림은 예측을 하는 데 각 기능의 중요성을 나타냅니다. 이것은 어떤 기능이 가장 영향력이 있는지 이해하는 데 도움이 됩니다.
조정된 모델의 최적 매개변수는 다음과 같습니다:
plot_model() 함수는 모델 성능과 해석 가능성을 평가하는 시각화를 생성합니다.
단계 8: 모델 해석
모델을 해석하는 것은 모델이 예측을 어떻게 생성하는지 이해하는 데 중요합니다. 모델의 출력은 SHAP(Shapley Additive exPlanations) 값을 사용하여 설명됩니다. 이를 통해 각 피쳐가 모델에 의해 만들어진 예측에 어떤 영향을 미치는지에 대한 소중한 관점을 제공합니다.
interpret_model()
은 SHAP 값을 사용하여 피쳐 중요도와 모델 예측에 대한 통찰을 제공합니다.
단계 10: 모델 예측
튜닝된 모델의 예측 전체적인 정확도를 확인할 수 있습니다.
보시다시피, 97.7%의 정확도를 얻었습니다. 좋은 결과입니다.
단계 10: 모델 배포
마지막으로, 모델을 저장하여 나중에 사용하고 다시 불러오는 방법을 시연할 수 있습니다.
# 모델 저장하기
save_model(tuned_model, 'best_ensembled_model')
# 모델 불러오기
loaded_model = load_model('best_ensembled_model')
여기서, save_model()은 훈련된 모델을 디스크에 저장하고, load_model()은 디스크에서 저장된 모델을 불러오는 데 사용됩니다.
결론
이 프로젝트에서는 PyCaret을 사용하여 아이리스 데이터셋을 분류했습니다. PyCaret은 로우코드 방법론과 다양한 기능 세트로 효율적으로 머신러닝 모델을 생성하고 구현하는데 훌륭한 도구입니다.
제 블로그를 읽어 주셔서 감사합니다!!! 이 글이 여러분께 새로운 것을 배울 수 있는데 도움이 되었으면 좋겠어요!
가기 전에, 이미 하지 않았다면:
- ⭐️ 만약 이에 쏟은 시간과 노력에 감사하시다면, 제 팔로우와 박수👏 부탁드립니다. 감사합니다🙌
- ⭐️ 피드백을 댓글로 남겨주세요! 🙂
- ⭐️ 제 YouTube 채널 구독해주세요. 새 동영상이 곧 업로드됩니다!
- ⭐️ Github, Github, LinkedIn을 팔로우해주세요. 어떤 것이든 상관없습니다. 다음에 또 봐요!