Hyperparameter

2024. 10. 4. 08:56·KT AIVLE School/머신러닝

 

과대적합을 피하기 위해 결정트리의 분화를 방지하는 역할을 한다.

모델 성능을 최적화시킬 매개변수를 찾아주는 다양한 시도로 하이퍼파라미터를 이용하는데,

실제로 학습하기 전에 수행한다.

 

KNN 알고리즘

  • n_neighbors : 검색할 이웃의 수 ( 보통 평균, 최빈값 사용 )

Descision Tree 알고리즘

  • max_depth : 트리의 최대 깊이 (default: None)
  • min_samples_split : 노드를 분할하기 위한 최소 샘플 데이터 수 ( default: 2 )
  • min_ samples_leaf : 분할할 시에 왼쪽, 오른쪽 리프노드에서 가져야할 최소 샘플 데이터 수 ( default : 1)
  • n_estimators : 생성할 tree의 개수 ( default : 100)

 

1. 모델 튜닝 

param = {'n_neighbors': range(3, 11)}
param = {'max_depth': range(1,51)}

 

2-1. Grid Search

파라미터 범위를 지정하고 모든 파라미터 값 범위를 사용해서 학습

Random Search에서 수행 횟수를 뺀것 (n_iter)

# 불러오기
from sklearn.model_selection import GridSearchCV
from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import *

model = GridSearchCV(DecisionTreeRegressor(), # 기본 모델
                           param,                   # 파라미터 범위
                           cv=5,                    # k분할 개수
                           scoring='r2')

 

2-2. Random Search

파라미터 범위를 지정하고 넓은 범주에서 몇개 선택해서 조합하여 학습

 

  • 기본 모델 이름
  • 파라미터 변수
  • cv: K-Fold 분할 개수 > cross validation가 들어가 있다. (기본값=5)
  • n_iter: 시도 횟수(기본값=10)
  • scoring: 평가 방법
# 불러오기
from sklearn.model_selection import RandomizedSearchCV
from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import *


# Random Search 선언
  # cv=5
  # n_iter=20
  # scoring='r2'
model = RandomizedSearchCV(DecisionTreeRegressor(), # 기본 모델
                           param,                   # 파라미터 범위
                           cv=5,                    # k분할 개수
                           n_iter=20                # 몇 개를 선택할 것인지
                           scoring='r2')            # 사용할 평가 지표
# 학습하기
model.fit(x_train, y_train)

 

 

3. 중요 정보 확인

    • model.cv_results_['mean_test_score']: 테스트로 얻은 성능
    • model.best_params_: 최적의 파라미터
    • model.best_score_: 최고의 성능
# 중요 정보 확인
print('=' * 80)
print(model.cv_results_['mean_test_score'])
print('-' * 80)
print('최적파라미터:', model.best_params_)
print('-' * 80)
print('최고성능:', model.best_score_)
print('=' * 80)

  • best_estimator_.model.best_estimator_ : 변수 중요도
# 변수 중요도
plt.figure(figsize=(5, 5))
plt.barh(y=list(x), width=model.best_estimator_.feature_importances_)
plt.show()

 

 

 

'KT AIVLE School > 머신러닝' 카테고리의 다른 글

Random Forest 및 앙상블  (0) 2024.10.04
클래스 불균형  (0) 2024.10.04
K-Fold Cross Validation  (0) 2024.10.02
기본 알고리즘 4가지  (0) 2024.09.30
Graphviz 사용 준비  (2) 2024.09.27
'KT AIVLE School/머신러닝' 카테고리의 다른 글
  • Random Forest 및 앙상블
  • 클래스 불균형
  • K-Fold Cross Validation
  • 기본 알고리즘 4가지
Rabet
Rabet
  • 블로그 메뉴

    • 관리자
    • 글쓰기
  • Rabet
    卯
    Rabet
  • 전체
    오늘
    어제
    • Root (139)
      • QA (1)
        • 오류사항 (1)
      • KT AIVLE School (0)
        • Start (4)
        • Python프로그래밍 & 라이브러리 (6)
        • 데이터 처리 및 분석 (7)
        • 데이터 분석 및 의미 찾기 (7)
        • 웹크롤링 (10)
        • 머신러닝 (10)
        • 딥러닝 (6)
        • 시각지능 딥러닝 (10)
        • 언어지능 딥러닝 (6)
        • JAVA (4)
        • SQL (2)
        • 가상화 클라우드 (5)
        • 프로젝트 (8)
      • 웹공부 (14)
        • SPRING (11)
        • React (1)
      • 코딩 알고리즘 스터디 (23)
      • 코딩테스트 (9)
        • JAVA (8)
        • HTML (1)
      • CS공부 (3)
      • 자격증공부 (3)
        • 정보처리기사 (1)
        • 컴퓨터활용능력 1급 (1)
        • AICE Associate (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
Rabet
Hyperparameter
상단으로

티스토리툴바