본문 바로가기
AI Framework/PyTorch

[PyTorch] 21주차: AutoML 및 하이퍼파라미터 튜닝

by cogito21_python 2024. 5. 31.
반응형

강의 목표

  • AutoML(Auto Machine Learning) 개념 및 중요성 이해
  • 다양한 AutoML 도구와 하이퍼파라미터 튜닝 기법 학습
  • AutoML 및 하이퍼파라미터 튜닝을 활용한 모델 성능 최적화 경험

강의 내용

1. AutoML 개념 및 중요성

  • AutoML 소개
    • AutoML이란?
    • AutoML의 필요성 및 이점
  • 주요 AutoML 도구
    • H2O.ai
    • Google AutoML
    • AutoKeras
    • Auto-sklearn

2. AutoML 도구 사용법

  • H2O.ai 사용 예제
import h2o
from h2o.automl import H2OAutoML

# H2O 서버 시작
h2o.init()

# 데이터 로드 및 H2O 프레임으로 변환
data = h2o.import_file("path/to/your/dataset.csv")
train, test = data.split_frame(ratios=[.8], seed=1234)

# AutoML 모델 훈련
aml = H2OAutoML(max_runtime_secs=3600, seed=1)
aml.train(y="target_column", training_frame=train)

# 모델 리더보드 출력
lb = aml.leaderboard
lb.head()

# 베스트 모델 예측
best_model = aml.leader
predictions = best_model.predict(test)

 

  • AutoKeras 사용 예제
import autokeras as ak

# 데이터 로드
(x_train, y_train), (x_test, y_test) = ak.datasets.mnist.load_data()

# 이미지 분류 모델 정의 및 훈련
clf = ak.ImageClassifier(max_trials=3)
clf.fit(x_train, y_train, epochs=10)

# 모델 평가
accuracy = clf.evaluate(x_test, y_test)
print(f'Accuracy: {accuracy}')

 

3. 하이퍼파라미터 튜닝 기법

  • 그리드 서치(Grid Search)
    • 모든 하이퍼파라미터 조합을 탐색하여 최적의 하이퍼파라미터 조합 찾기
     
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier

# 하이퍼파라미터 그리드 설정
param_grid = {
    'n_estimators': [50, 100, 200],
    'max_depth': [None, 10, 20, 30]
}

# 모델 및 그리드 서치 객체 생성
model = RandomForestClassifier()
grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=3)

# 데이터 로드 (예시용 데이터)
from sklearn.datasets import load_iris
X, y = load_iris(return_X_y=True)

# 그리드 서치 수행
grid_search.fit(X, y)
print(f'Best parameters found: {grid_search.best_params_}')

 

  • 랜덤 서치(Random Search)
    • 무작위로 선택한 하이퍼파라미터 조합을 탐색하여 최적의 조합 찾기
     
from sklearn.model_selection import RandomizedSearchCV
from sklearn.ensemble import RandomForestClassifier

# 하이퍼파라미터 그리드 설정
param_dist = {
    'n_estimators': [50, 100, 200],
    'max_depth': [None, 10, 20, 30]
}

# 모델 및 랜덤 서치 객체 생성
model = RandomForestClassifier()
random_search = RandomizedSearchCV(estimator=model, param_distributions=param_dist, n_iter=10, cv=3, random_state=42)

# 랜덤 서치 수행
random_search.fit(X, y)
print(f'Best parameters found: {random_search.best_params_}')

 

  • 베이지안 최적화(Bayesian Optimization)
    • 이전 탐색 결과를 바탕으로 하이퍼파라미터 조합을 점진적으로 개선
     
from skopt import BayesSearchCV
from sklearn.ensemble import RandomForestClassifier

# 하이퍼파라미터 그리드 설정
param_space = {
    'n_estimators': (50, 200),
    'max_depth': (10, 30)
}

# 모델 및 베이지안 서치 객체 생성
model = RandomForestClassifier()
bayes_search = BayesSearchCV(estimator=model, search_spaces=param_space, n_iter=32, cv=3, random_state=42)

# 베이지안 서치 수행
bayes_search.fit(X, y)
print(f'Best parameters found: {bayes_search.best_params_}')

 

4. 실습 및 프로젝트

  • AutoML 및 하이퍼파라미터 튜닝 실습
    • AutoML 도구를 활용한 모델 자동화 및 최적화
    • 하이퍼파라미터 튜닝 기법을 활용한 모델 성능 최적화
  • 프로젝트 개요
    • 실제 데이터셋을 활용한 모델 성능 최적화 프로젝트 수행
    • AutoML 및 하이퍼파라미터 튜닝 기법 적용
  • 프로젝트 단계
    • 데이터 전처리 및 준비
    • AutoML 도구를 활용한 모델 훈련 및 최적화
    • 하이퍼파라미터 튜닝 기법 적용
    • 성능 평가 및 결과 분석
    • 결과 발표 및 코드 리뷰

5. 프로젝트 예시

  • 예시 프로젝트: 타이타닉 생존 예측
    • 데이터셋 로드 및 전처리
    • AutoML 및 하이퍼파라미터 튜닝 적용
     
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from h2o.automl import H2OAutoML
import h2o

# H2O 서버 시작
h2o.init()

# 데이터 로드
data = pd.read_csv('titanic.csv')
data = data.drop(['Name', 'Ticket', 'Cabin'], axis=1)
data = pd.get_dummies(data, columns=['Sex', 'Embarked'], drop_first=True)
data = data.fillna(data.mean())

# 데이터 분할
X = data.drop('Survived', axis=1)
y = data['Survived']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 데이터 스케일링
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# H2O 데이터 프레임으로 변환
train = h2o.H2OFrame(pd.concat([pd.DataFrame(X_train), pd.Series(y_train).reset_index(drop=True)], axis=1))
test = h2o.H2OFrame(pd.concat([pd.DataFrame(X_test), pd.Series(y_test).reset_index(drop=True)], axis=1))

# AutoML 모델 훈련
aml = H2OAutoML(max_runtime_secs=3600, seed=1)
aml.train(y="C1", training_frame=train)

# 모델 리더보드 출력
lb = aml.leaderboard
lb.head()

# 베스트 모델 예측
best_model = aml.leader
predictions = best_model.predict(test)

 

6. 향후 학습 및 연구 방향

  • 추가 학습 자료 및 추천 도서
    • AutoML 및 하이퍼파라미터 튜닝 관련 논문 및 보고서
    • 추천 도서: "Automated Machine Learning" by Frank Hutter, Lars Kotthoff, Joaquin Vanschoren
    • 온라인 강의 및 워크샵 정보
  • 최신 연구 동향 및 기술 트렌드
    • AutoML 및 하이퍼파라미터 튜닝 관련 최신 연구 동향 소개
    • 최신 기술 트렌드 및 도구 소개

7. 질의응답 및 마무리

  • 질의응답 시간
    • 학생들의 질문에 대한 답변 제공
    • 강의 내용 및 향후 학습 방향에 대한 논의
  • 마무리 인사 및 강의 종료
    • 강의 종료 및 마무리 인사

 

반응형