Pycaret
pycaret이란 AutoML을 하게 해주는 파이썬 라이브러리이다.
기존에 있던 Scikit-learn, XGBoost, LightGBM, spaCy 등 여러가지 머신러닝 라이브러리를 ML High-Level API로 제작했다. 단 몇 줄로 데이터 분석 및 모델 성능 비교, Log를 생성까지 가능하다.
AutoML(오토ML) 이란?
데이터 성격에 맞게 자동으로 데이터 분석 모델을 추천해주는 Auto Machine Learning 기법
AutoML(오토ML) 장점
- 인공지능 분석 모델을 학습하기 위해 데이터에서 중요한 특징(feature)을 선택하고 인코딩하는 방식에 대한 특징 엔지니어링(feature engineering) 자동으로 추출한다.
- 인공지능 모델 학습에 필요한 사람의 설정들, 하이퍼파라미터를 자동으로 탐색해 주는 것이다.
- 인공지능 모델의 구조 자체를 더 효율적인 방향으로 찾아주는 아키텍처 탐색이다.
pycaret에서 제공하는 기능
- Classification
- Regression
- Clustering
- Anomaly Detection
- Natural Language Processing
1. pycaret설치
pip install pycaret
주피터 노트북에서 위의 코드만 쳐도 된다는데 나는 그렇지 않았다...
pycaret 설치 에러 (pycaret install error)
Uninstalling MarkupSafe-1.1.1:
No module named 'pycaret'으로 데이터셋을 불러올 수 없었다.
이것 저것 다 시도해 봤는데 아래의 방법으로 설치를 성공할 수 있었다.
- 아나콘다 프롬프트를 관리자 권한으로 실행
- 아래의 코드 입력
pip install pycaret --user
어마어마한 WARNING이 나왔지만 다행히 설치가 완료 되었다!
2. 데이터 준비 ( setup ) _ 다이아 몬드 선택 예제
from pycaret.datasets import get_data
dataset = get_data('diamond')
3. 데이터 분할
9 :1로 훈련 데이터, 테스트 데이터 분할
data = dataset.sample(frac=0.9, random_state=786)
data_unseen = dataset.drop(data.index)
data.reset_index(drop=True, inplace=True)
data_unseen.reset_index(drop=True, inplace=True)
print('Data for Modeling: ' + str(data.shape))
print('Unseen Data For Predictions: ' + str(data_unseen.shape))
Data for Modeling: (5400, 8)
Unseen Data For Predictions: (600, 8)
4. 모델 환경 설정
분석 모델을 돌리기 전에 종족 변수 (y, Target)을 지정해줘야 한다.
pycaret은 독립변수(x, factor)의 유형을 자동으로 지정해준다.
from pycaret.regression import *
exp_reg101 = setup(data = data, target = 'Price', session_id=123)
블랭크 박스를 클릭하고 enter 키를 누르면 아래와 같은 항복을 확인할 수 있다.
5. 데이터 셋에 알맞은 알고리즘을 추천하는 코드를 실행
추천 방식은 각 알고리즘 결과의 MAE, MSE, RMSE, R2, RMSLE, MAPE 점수 들을 비교해 가장 퍼포먼스가 좋게 나오는 모델에 하이라이트 해준다.
best = compare_models(exclude = ['ransac'])
추천 상위 기준은 R2의 점수가 높은 순에서 낮은 순으로 (highest to lowest) 정렬된다.
- R2 점수가 기준인 것이 default이지만 compare_models(sort = 'RMSLE') sort 방법을 사용하면 비교 기준을 바꿀 수 있다.
- 기존 비교 모델들의 개수는 20가지이지만 compare_models(fold = 5) 코드를 사용하면 모델 갯수 조정이 가능하다. 모델 수를 줄이면 training run time을 감소시킬 수 있다.
- 파라미터에 n_select = n 코드를 사용하시면 top n 모델을 반환한다.
6. 모델 생성
위에 추천된 모델 중 3가지를 지정해 각 모델 성능을 비교
- Extra Trees Regressor (et)
- Extreme Gradient Boosting (xgboost)
- Random Forest Regressor (rf)
# Extra Trees Regressor (et)
Extra = create_model('et')
-create_model() 은 이모델 파라미터들을 cross validation과정을 통해 스스로 훈련시키고 검증한다.
- print 하면 파라미터의 정보를 알 수 있다.
print(Extra)
# Extreme Gradient Boosting (xgboost)
xgboost = create_model('xgboost')
# Random Forest Regressor (rf)
rf = create_model('rf')
7. 모델 결과 시각화
plot_model(Extra)
- 예측 오차
plot_model(Extra, plot = 'error')
- 변수의 중요도
plot_model(Extra, plot='feature')
- 하이퍼 파라미터
evaluate_model(Extra)
참고
'스터디 > 머신러닝' 카테고리의 다른 글
인공지능, 머신러닝, 딥러닝의 관계 (0) | 2022.09.16 |
---|---|
Catboost란? (0) | 2022.07.21 |
변수 선택 (Feature Selection) (0) | 2021.11.08 |