PyCaret으로 AutoML의 세계를 엿보다

이른바 PyCaret


PyCarethttps://pycaret.org/은 무즈알리가 2020년 4월 발표한 오픈 원본 코드 파이썬 머신러닝 라이브러리다.이 프로그램 라이브러리에 문제가 있다면 기계 학습 중의 다양한 알고리즘, 평가와 조화를 자동으로 테스트할 수 있다.
scikit-learn의 유명한 데이터 집합 등을 분석해 봤는데, 기계 학습을 배운 사람이라도 그 알고리즘을 왜 사용했는지, 조화의 관건이 어디에 있는지 1부터 설명하는 사람은 드물었다.이렇게 말하는 저도 오리지널 과제에 대해 0부터 조립 과정에 어려움을 느꼈습니다.
이 PyCaret은 알고리즘과 매개변수 설정을 자동으로 시도함으로써 인간의 동작을'시험결과 비교·판단'만 한다.기계학습의 세부사항을 몰라도 PyCareet이 덮인 범위 내에서 잘 해줄 수 있다는 것이다.어느 정도 예쁜 데이터라면 데이터만 던지면 이 모델이 좋아요!이렇게 하면 볼 수 있다.

Automl입니까?


AutoML은 원본 데이터 세트에서 가장 잘 사용되는 모델을 만들 때까지 일련의 프로세스를 자동화하는 것을 말합니다.보통 어떤 기계 학습에 전념하려면 예처리, 모델링, 성능 평가, 조화를 해야 한다.이런 순서로 진행됐지만 로봇이 그걸 해준대요.

Colab을 사용한 간편한 테스트


이번에는 IBM의 이직 분석을 주제로 해보고 싶습니다.각 직원의 속성 데이터를 열거하여 직원의 이직/미이직을 예측한다.Google Drive에서 사용할 데이터를 다운로드합니다.
https://www.kaggle.com/pavansubhasht/ibm-hr-analytics-attrition-dataset
Colabhttps://colab.research.google.com/에 액세스하여 새 노트북을 만듭니다.
Colab의 사용 방법은 대체로 참고 수준이다.

차리다


우선, PyCaret을 사용할 준비로 PyCaret을 설치합니다.
!pip install pycaret
GoogleDrive에서 구성된 데이터를 조작할 수 있습니다.
from google.colab import drive
from google.colab import files
drive.mount("/content/drive")
이 작업을 수행하면 URL과 입력 형식이 나타납니다.
링크에서 인증 코드를 얻고 입력하면 합작할 수 있습니다.
참고로 scikit-learn과 PyCaret에서 준비한 데이터도 다음과 같다.
from sklearn.datasets import load_iris
from pycaret.datasets import get_data
데이터 상세 정보는 여기를 참조하세요.
Dataset loading utilities — scikit-learn  https://scikit-learn.org/stable/datasets/index.html
PyCaret’s Data Repository  https://pycaret.org/get-data/

프리 프로세싱


데이터를 읽을 준비가 되었으니 먼저 데이터의 내용을 봅시다.
import pandas as pd
train_data = pd.read_csv("drive/My Drive/Colab Notebooks/HR-Employee-Attrition.csv")
train_data.head()

연령, 출장 빈도, 부서, 직장 만족도 등을 확인할 수 있다.
이번에는 이직 예측/이직 없음을 위해 목표(목적 변수)는'애트리션'이다.
지금부터 데이터를 미리 처리합니다.이번에는 2치 분류이기 때문에pycaret입니다.classification을 import로 합니다.예측 목표를 지정하고 다음과 같은 조작을 실행한다.
from pycaret.classification import *
exp_clf101 = setup(data = train_data, target = "Attrition", session_id = 123)
여기서 데이터 유형을 추측하고 정확한 경우 Enter 키를 입력하며 수정이 필요한 경우 quit를 입력합니다.
유형을 수정하려면 setup()에서 다음과 같이 지정합니다.
exp_clf101 = setup(data = train_data, target="Attrition", categorical_features=["EmployeeNumber"], numeric_features=["EnvironmentSatisfaction", "JobInvolvement"], session_id = 123)
예를 들어 1~4의 숫자라도 카테고리 식별자로 사용되는 숫자인지, 값으로 의미 있는 숫자인지에 따라 유형의 설정도 달라질 수 있다고 생각한다.
예처리에서 데이터 유형의 추측을 제외하고 데이터의 분할과 결손치를 보충할 수 있다.
데이터가 누락된 경우 True가 Missing Values에 표시됩니다.이 때 setup () 에서 자동으로 결손 보완을 진행합니다.수치 데이터라면 평균값, 클래스 데이터를 기본적으로 처리하는 'not available' 문자열의 대입입니다.물론 결손을 메우는 방법을 지정할 수도 있다. 평균치가 아닌 중치로 채울 수도 있고 가장 빈번한 값으로 채울 수도 있다.
https://pycaret.org/missing-values/

여러 예측 모델로 분석하다


compare_모델스()에서 여러 개의 예측 모델을 사용하여 데이터 집합을 분석하고 결과를 표로 출력한다.
compare_models()

어떤 지표든 숫자가 큰 것은 더 좋은 예측 모델이라고 할 수 있다.
이번엔 일단 AUC로 정체성을 비교하고, 빠지지 않으려면 리콜(이직 가능성이 조금이라도 있으면 이직으로 분류)을 중시하고, 여분의 대상을 포함하지 않으려면 Prec.(확실히 이직할 사람만 이직으로 분류한다).
AUC의 0.5는 최소(완전 임의 상태), 1은 최고 정밀도입니다.위 표에 0이 있는 모델은 예외가 발생했을 때 0이 되기 때문이다.나는 보통 이런 모델을 무시하는 것은 문제없다고 생각한다.
Recall 및 Prec밸런스 관계이기 때문에 조화 평균치를 얻은 F1도 볼 때가 있다.Acuracy는 탭에 편차가 있을 경우(예/아니오) 주의가 필요한 이해하기 쉬운 지표입니다.
표의 견해는 처리된 데이터의 이야기에 근거하여 결정된다.참고로 PyCaret의 정밀도 지표에는 Loogloss가 없습니다.
create_모델 ()을 통해 예측 모델을 생성합니다.이번에는 AUC 고(귀), 이직을 앞둔 사람(Prec. 중시)을 예측하기 위해 이 두 가지 값진'CatBoost Classifier'를 채택했다.create_모델 ()을 실행하면 10분할의 교차 심사가 진행되었다는 것을 알 수 있습니다.evaluate_모델 ()을 실행하면 모델 평가에 사용할 수 있는 여러 가지 도표를 보여 줍니다.
model = create_model("catboost")
evaluate_model(model)


모델 식별 및 예측 실행


finalize_모델()을 사용하여 모델을 결정합니다.finalize_모델()은create입니다.모델 () 을 사용할 때 사용하지 않은 것은 모델의 성능을 확인하기 위해 출력됩니다.
유지아웃이란 머신러닝 모델의 성능을 최종 추정할 때 사용하는 데이터로, PyCaret은 기본적으로 30%의 데이터를 유지아웃으로 미리 취득한다.알고리즘 선택 및 조정 단계에서는 사용되지 않으며 모델을 결정할 때만 사용됩니다.
이어서 예측하고자 하는 알 수 없는 데이터 (test.csv) 를 가져와 예측을 실행합니다.이번에는 원시 데이터에서 무작위로 추출한 데이터 집합을 사용했다.레이블 및 Score 열이 새로 추가되었습니다.csv 출력 후 레이블에서 이직/불이직을 예측할 수 있습니다.
final_model = finalize_model(model)
data_unseen = pd.read_csv("drive/My Drive/Colab Notebooks/test.csv")
result = predict_model(final_model, data = data_unseen)
result.to_csv("drive/My Drive/Colab Notebooks/data/result.csv")

모델 저장


모델의 저장 및 저장된 모델도 사용할 수 있습니다.
save_model(final_model,'Final Model 10Dec2020')
saved_final_rf = load_model('Final Model 10NDec2020')

총결산


이번에는 이직 분석을 주제로 PyCaret을 활용해 오토ML의 세계를 엿본다.실제 처리된 코드로 십여 줄이 있어 해당하는 학습이 끝난 모델을 만들 수도 있고 예측할 수도 있다.이렇게 간단하기 때문에 가볍고 유쾌하게 다양한 데이터를 투입하고, 새로운 발견과 활용을 볼 수 있다면 재미있을 것이다.
데이터 분석 하면 ○○이 주요 원인이라고 생각하는 사람들이 많은데 이번에 이렇게 높은 정밀도의 예측 모델이 생겨서 이런 예측을 얻어낼 수 있고 이 사람에게 ○○ 조치를 취하면...이와 같은 [예측으로부터의 접근]은 앞으로도 더욱 확대될 것이다.

좋은 웹페이지 즐겨찾기