from sklearnex import patch_sklearn
#GPU 사용 가능시
from daal4py.oneapi import sycl_context
patch_sklearn()
| n_estimators | 결정 트리의 갯수를 지정(기본값=10). 즉, 반복 횟수. 성능에 비례, 속도에 반비례 |
|---|---|
| min_samples_split | 노드를 분할하기 위한 최소한의 샘플 데이터 수. 과적합을 제어하는 데 사용(기본값=2), 값이 작을 수록 분할 노드가 증가하여 과적합 가능성이 높아짐. |
| min_samples_leaf | 리프노드가 되기 위한 최소한의 샘플 데이터 수. 과적합을 제어하는데 사용 |
| max_features | 최적의 분할을 위해 고려할 최대 feature 개수(기본값=auto), int 형일 경우 갯수, float 형일 경우 비율 |
| max_depth | 트리의 최대 깊이(기본값=None).max_depth가 None일 경우 완벽하게 클래스 값이 결정되거나 데이터 개수가 min_samples_split에서 설정한 값보다 작아질 때 까지 분할 |
| max_leaf_nodes | 리프 노드의 최대 개수 |
GridSearchCV
cv : 쪼개는 단위
n_jobs : 실행할 병렬 작업의 수. CPU의 프로세스 수만큼 설정 가능. -1은 모든 프로세서를 사용함을 의미.
| 파라미터 | 설명 |
|---|---|
| base_estimator | 학습에 사용하는 알고리즘 (default= DecisionTreeClassifer(max_depth=1)) |
| n_estimators | 반복수 또는 base_estimator 개수(기본값=50) |
| learning_rate | 학습을 진행할 때마다 적용하는 학습률0 ~ 1 의 값(기본값=0.1) |
| algorithm | SAMME : 이산 부스팅 알고리즘SAMME.R : 부스팅 알고리즘(기본값= SAMME.R) |
n_estimators를 늘린다면 생성되는 약한 학습기의 수는 늘어난다. 하지만 이 여러 학습기들의 decision boundary가 많아지면서 모델이 복잡해진다.
learning_rate 을 줄인다면, 가중치의 갱신 변동폭이 감소해서, 여러 학습기들의 decision boundary의 차이가 줄어든다.
| 파라미터 | 설명 |
|---|---|
| loss | 경사 하강법에서 사용할 비용 함수를 지정log_loss(기본값 sklearn 1.3.1, 1.2.2는 deviance), exponential |
| learning_rate | GBM이 학습을 진행할 때마다 적용하는 학습률0 ~ 1 의 값(기본값=0.1) |
| n_estimators | 반복수 또는 base_estimator 개수(기본값=100) |
| subsample | weak learner가 학습에 사용하는 데이터의 샘플링 비율 (기본값=1) 과적합이 염려되는 경우 subsample을 1보다 작은 값으로 설정 |
Weak learner가 순차적으로 오류 값을 보정해 나가는데 적용하는 계수.
너무 작은 값을 적용하면 업데이트 되는 값이 작아져서 최소 오류 값을 찾아 예측 성능이 높아질 가능성이 높지만 많은 weak learner는 순차적인 반복이 필요해서 수행 시간이 오래 걸리고, 모든 weak learner의 반복이 완료되어도 최소 오류값을 찾지 못할 수 있다.
반대로 큰 값을 적용하면 최소 오류 값을 찾지 못하고 그냥 지나쳐 버려 예측 성능이 떨어질 가능성이 있지만 빠른 수행이 가능하다.
이러한 특성때문에 learning_rate는 n_estimators와 상호 보완적으로 조합해 사용하는데 작은 learning_rate를 사용하고
n_estimator를 크게 하면 최고의 성능을 보일 수 있는 지점까지 학습이 가능하겠지만 수행 시간이 너무 오래 걸리고 예측 성능도 들이는 시간 만큼 현격하게 좋아지지는 않는다.