TPOT: Python의 유전 알고리즘을 사용하여 ML 파이프라인 자동화


작성자별 이미지
# 소개
기계 학습 모델을 수동으로 구성하려면 긴 일련의 결정이 필요합니다. 좋은 결과를 얻기 위해 데이터 정리, 올바른 알고리즘 선택, 하이퍼파라미터 조정 등 많은 단계가 필요합니다. 이 시행착오 과정은 종종 몇 시간, 심지어 며칠이 걸립니다. 그러나 이 문제를 다음을 사용하여 해결할 수 있는 방법이 있습니다. 트리 기반 파이프라인 최적화 도구또는 TPOT.
TPOT은 유전자 알고리즘을 사용하여 최상의 기계 학습 파이프라인을 자동으로 검색하는 Python 라이브러리입니다. 이는 파이프라인을 자연의 인구처럼 취급합니다. 즉, 다양한 조합을 시도하고 성능을 평가하며 여러 세대에 걸쳐 최고의 조합을 “진화”합니다. 이 자동화를 통해 TPOT가 모델 선택 및 최적화의 기술적 세부 사항을 처리하는 동안 문제 해결에 집중할 수 있습니다.
# TPOT 작동 방식
TPOT은 유전 프로그래밍(GP)을 활용합니다. 생물학의 자연선택에서 영감을 받은 일종의 진화 알고리즘이다. 유기체를 진화시키는 대신 GP는 문제를 해결하기 위해 컴퓨터 프로그램이나 작업 흐름을 발전시킵니다. TPOT의 맥락에서 진화되는 “프로그램”은 기계 학습 파이프라인입니다.
TPOT는 네 가지 주요 단계로 작동합니다.
- 파이프라인 생성: 사전 처리 방법 및 모델을 포함하여 기계 학습 파이프라인의 무작위 모집단으로 시작됩니다.
- 적합성 평가: 각 파이프라인은 성능을 측정하기 위해 데이터에 대해 훈련되고 평가됩니다.
- 선택 및 진화: 가장 성능이 좋은 파이프라인이 선택되어 교차 및 돌연변이를 통해 새로운 파이프라인을 “재생산”하고 생성합니다.
- 여러 세대에 걸쳐 반복: 이 프로세스는 TPOT가 최고의 성능을 가진 파이프라인을 식별할 때까지 여러 세대에 걸쳐 반복됩니다.
프로세스는 아래 다이어그램에 시각화되어 있습니다.

다음으로 Python에서 TPOT를 설정하고 사용하는 방법을 살펴보겠습니다.
# 1. TPOT 설치
TPOT를 설치하려면 다음 명령을 실행하십시오.
# 2. 라이브러리 가져오기
필요한 라이브러리를 가져옵니다.
from tpot import TPOTClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 3. 데이터 로드 및 분할
이 예에서는 널리 사용되는 Iris 데이터 세트를 사용합니다.
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
그만큼 load_iris() 기능은 기능을 제공합니다 X 그리고 라벨 y. 그만큼 train_test_split 함수는 보이지 않는 데이터에 대한 최종 성능을 측정할 수 있도록 테스트 세트를 보유합니다. 이렇게 하면 파이프라인을 평가할 환경이 준비됩니다. 모든 파이프라인은 교육 부분에 대해 교육을 받고 내부적으로 검증됩니다.
메모: TPOT은 적합성 평가 중에 내부 교차 검증을 사용합니다.
# 4. TPOT 초기화
다음과 같이 TPOT를 초기화합니다.
tpot = TPOTClassifier(
generations=5,
population_size=20,
random_state=42
)
TPOT가 좋은 파이프라인을 검색하는 기간과 범위를 제어할 수 있습니다. 예를 들어:
- 세대=5 이는 TPOT이 5번의 진화 주기를 실행한다는 것을 의미합니다. 각 주기마다 이전 세대를 기반으로 새로운 후보 파이프라인 세트를 생성합니다.
- 인구_크기=20 이는 각 세대에 20개의 후보 파이프라인이 존재한다는 것을 의미합니다.
- 무작위_상태 결과의 재현성을 보장합니다.
# 5. 모델 훈련
다음 명령을 실행하여 모델을 훈련합니다.
tpot.fit(X_train, y_train)
당신이 달릴 때 tpot.fit(X_train, y_train)TPOT는 최고의 파이프라인을 찾기 시작합니다. 후보 파이프라인 그룹을 생성하고 각 파이프라인을 훈련하여 성능이 얼마나 좋은지 확인하고(일반적으로 교차 검증을 사용하여) 최고의 성능을 유지합니다. 그런 다음 이를 혼합하고 약간씩 변경하여 새로운 그룹을 만듭니다. 이 주기는 설정한 세대 수만큼 반복됩니다. TPOT은 지금까지 어떤 파이프라인이 가장 잘 수행되었는지 항상 기억합니다.
산출:


# 6. 정확성 평가
이는 선택한 파이프라인이 표시되지 않는 데이터에서 어떻게 작동하는지에 대한 최종 확인입니다. 다음과 같이 정확도를 계산할 수 있습니다.
y_pred = tpot.fitted_pipeline_.predict(X_test)
acc = accuracy_score(y_test, y_pred)
print("Accuracy:", acc)
산출:
# 7. 최고의 파이프라인 내보내기
나중에 사용하기 위해 파이프라인을 파일로 내보낼 수 있습니다. 수입해야 한다는 점에 유의하세요. dump ~에서 잡립 첫 번째:
from joblib import dump
dump(tpot.fitted_pipeline_, "best_pipeline.pkl")
print("Pipeline saved as best_pipeline.pkl")
joblib.dump() 전체 적합 모델을 다음과 같이 저장합니다. best_pipeline.pkl.
산출:
Pipeline saved as best_pipeline.pkl
나중에 다음과 같이 로드할 수 있습니다.
from joblib import load
model = load("best_pipeline.pkl")
predictions = model.predict(X_test)
이렇게 하면 모델을 재사용하고 쉽게 배포할 수 있습니다.
# 마무리
이 기사에서는 유전자 프로그래밍을 사용하여 기계 학습 파이프라인을 자동화하는 방법을 살펴보고 Python에서 TPOT를 구현하는 실제 사례도 살펴보았습니다. 더 자세히 알아보려면 선적 서류 비치.
칸왈 메린 데이터 과학과 AI와 의학의 교차점에 대한 깊은 열정을 가진 기계 학습 엔지니어이자 기술 작가입니다. 그녀는 “ChatGPT를 통한 생산성 극대화”라는 전자책을 공동 집필했습니다. 2022년 APAC Google Generation Scholar로서 그녀는 다양성과 학문적 우수성을 옹호하고 있습니다. 그녀는 또한 Tech Scholar, Mitacs Globalink Research Scholar 및 Harvard WeCode Scholar에서 Teradata Diversity로 인정받았습니다. Kanwal은 STEM 분야에서 여성의 역량을 강화하기 위해 FEMCodes를 설립한 변화에 대한 열렬한 옹호자입니다.



Post Comment