Day103

김재현·2023년 10월 25일

JUPYTER/DL/ML

목록 보기
70/73

intel의 sklearn 업그레이드 패치

pip 설치

  1. pip install scikit-learn-intelex
  2. pip install dpcpp-cpp-rt
  3. pip install daal4py

pip 설치 후 패키지 삽입

from sklearnex import patch_sklearn
#GPU 사용 가능시
from daal4py.oneapi import sycl_context
patch_sklearn()


진도

#04. 훈련모델 적합

RandomForestClassifier 하이퍼 파라미터

n_estimators결정 트리의 갯수를 지정(기본값=10). 즉, 반복 횟수.
성능에 비례, 속도에 반비례
min_samples_split노드를 분할하기 위한 최소한의 샘플 데이터 수.
과적합을 제어하는 데 사용(기본값=2), 값이 작을 수록 분할 노드가 증가하여 과적합 가능성이 높아짐.
min_samples_leaf리프노드가 되기 위한 최소한의 샘플 데이터 수.
과적합을 제어하는데 사용
max_features최적의 분할을 위해 고려할 최대 feature 개수(기본값=auto), int 형일 경우 갯수, float 형일 경우 비율
max_depth트리의 최대 깊이(기본값=None).
max_depthNone일 경우 완벽하게 클래스 값이 결정되거나 데이터 개수가 min_samples_split에서 설정한 값보다 작아질 때 까지 분할
max_leaf_nodes리프 노드의 최대 개수

하이퍼 파라미터 튜닝

GridSearchCV

cv : 쪼개는 단위

n_jobs : 실행할 병렬 작업의 수. CPU의 프로세스 수만큼 설정 가능. -1은 모든 프로세서를 사용함을 의미.


분류 보고서

  • precision : 정밀도(양성 클래스라고 예측한 샘플 중 실제로 양성 클래스에 속하는 샘플). 높을 수록 좋음
  • recall : 재현율, 실제로 양성 클래스에 속한 샘플 중에서 양성 클래스라고 예측한 샘플 수의 비율. 높을 수록 좋음
  • f1-score : 정밀도와 재현율의 가중 조화 평균값. 높을 수록 좋음
  • support : 각 Label에 대한 실제 샘플 수. 높을 수록 좋음
  • accuracy : 정확도. 전체 샘플 중 맞게 예측한 샘플 수의 비율. 높을 수록 좋음
  • macro avg : 단순 평균값(샘플 수의 불균형을 고려하지 않은 값)
  • weighted avg : 각 클래스에 속하는 표본의 개수로 가중 평균을 낸 값(샘플 수의 불균형을 고려한 값)

AdaBoost 생성

하이퍼파라미터

파라미터설명
base_estimator학습에 사용하는 알고리즘 (default= DecisionTreeClassifer(max_depth=1))
n_estimators반복수 또는 base_estimator 개수(기본값=50)
learning_rate학습을 진행할 때마다 적용하는 학습률
0 ~ 1 의 값(기본값=0.1)
algorithmSAMME : 이산 부스팅 알고리즘
SAMME.R : 부스팅 알고리즘(기본값= SAMME.R)

n_estimators를 늘린다면 생성되는 약한 학습기의 수는 늘어난다. 하지만 이 여러 학습기들의 decision boundary가 많아지면서 모델이 복잡해진다.

learning_rate 을 줄인다면, 가중치의 갱신 변동폭이 감소해서, 여러 학습기들의 decision boundary의 차이가 줄어든다.


GradientBoostingClassifier 모델 적합

하이퍼 파라미터

파라미터설명
loss경사 하강법에서 사용할 비용 함수를 지정
log_loss(기본값 sklearn 1.3.1, 1.2.2는 deviance), exponential
learning_rateGBM이 학습을 진행할 때마다 적용하는 학습률
0 ~ 1 의 값(기본값=0.1)
n_estimators반복수 또는 base_estimator 개수(기본값=100)
subsampleweak learner가 학습에 사용하는 데이터의 샘플링 비율 (기본값=1)
과적합이 염려되는 경우 subsample을 1보다 작은 값으로 설정

learning_rate

Weak learner가 순차적으로 오류 값을 보정해 나가는데 적용하는 계수.

너무 작은 값을 적용하면 업데이트 되는 값이 작아져서 최소 오류 값을 찾아 예측 성능이 높아질 가능성이 높지만 많은 weak learner는 순차적인 반복이 필요해서 수행 시간이 오래 걸리고, 모든 weak learner의 반복이 완료되어도 최소 오류값을 찾지 못할 수 있다.

반대로 큰 값을 적용하면 최소 오류 값을 찾지 못하고 그냥 지나쳐 버려 예측 성능이 떨어질 가능성이 있지만 빠른 수행이 가능하다.

이러한 특성때문에 learning_rate는 n_estimators와 상호 보완적으로 조합해 사용하는데 작은 learning_rate를 사용하고
n_estimator를 크게 하면 최고의 성능을 보일 수 있는 지점까지 학습이 가능하겠지만 수행 시간이 너무 오래 걸리고 예측 성능도 들이는 시간 만큼 현격하게 좋아지지는 않는다.

0개의 댓글