정보 기반 기법: 유전 알고리즘

Python에서의 하이퍼파라미터 튜닝

Alex Scriven

Data Scientist

유전학 기초

 

현실 세계의 유전 진화는 다음과 같습니다:

  1. 많은 개체가 존재합니다(‘자손’)
  2. 강한 개체가 생존하고 짝짓기합니다
  3. 자손을 만들 때 ‘교차(crossover)’가 일어납니다
  4. 일부 자손에 무작위 돌연변이가 발생합니다
    • 이 돌연변이는 가끔 이점을 줍니다
  5. (1)로 돌아갑니다!
Python에서의 하이퍼파라미터 튜닝

머신러닝에서의 유전학

 

같은 아이디어를 하이퍼파라미터 튜닝에 적용할 수 있습니다:

  1. 하이퍼파라미터가 다른 모델들을 생성합니다
  2. 점수 함수로 가장 좋은 모델을 고릅니다
    • 이것들이 ‘생존’합니다
  3. 상위 모델과 유사한 새 모델을 만듭니다
  4. 일부 무작위를 추가해 국소 최적해에 갇히지 않게 합니다
  5. 만족할 때까지 반복합니다
Python에서의 하이퍼파라미터 튜닝

왜 잘 작동할까요?

 

이는 장점이 많은 정보 기반 탐색입니다:

  • 베이지안 하이퍼파라미터 튜닝처럼 이전 반복에서 학습합니다.
  • 추가로 일부 무작위성이 장점입니다.
  • (사용할 패키지)가 ML의 번거로운 부분을 많이 처리합니다.
Python에서의 하이퍼파라미터 튜닝

TPOT 소개

 

유전 알고리즘 기반 하이퍼파라미터 튜닝에 유용한 라이브러리는 TPOT입니다:

TPOT을 데이터 사이언스 어시스턴트로 생각하세요. TPOT은 유전 프로그래밍으로 머신러닝 파이프라인을 최적화하는 파이썬 AutoML 도구입니다.

파이프라인은 모델(여러 개일 수도 있음)뿐 아니라 특성 처리 등 과정 전반을 포함합니다. 또한 파이프라인의 파이썬 코드를 반환합니다!

Python에서의 하이퍼파라미터 튜닝

TPOT 구성 요소

TPOT 분류기의 핵심 인자는 다음과 같습니다:

  • generations: 학습 반복 횟수.
  • population_size: 각 반복 후 유지할 모델 수.
  • offspring_size: 각 반복에서 생성할 모델 수.
  • mutation_rate: 무작위성을 적용할 파이프라인 비율.
  • crossover_rate: 각 반복에서 교배할 파이프라인 비율.
  • scoring: 최적 모델을 정할 함수.
  • cv: 사용할 교차 검증 전략.
Python에서의 하이퍼파라미터 튜닝

간단한 예시

간단한 예:

from tpot import TPOTClassifier
tpot = TPOTClassifier(generations=3, population_size=5, 
                      verbosity=2, offspring_size=10,
                      scoring='accuracy', cv=5)

tpot.fit(X_train, y_train) print(tpot.score(X_test, y_test))

mutation_ratecrossover_rate는 기본값을 사용합니다. 유전 프로그래밍에 대한 깊은 지식 없이는 기본값이 가장 좋습니다.

주의: 알고리즘별 하이퍼파라미터가 없나요?

Python에서의 하이퍼파라미터 튜닝

Let's practice!

Python에서의 하이퍼파라미터 튜닝

Preparing Video For Download...