Skit-learn GradientBoosting 공식 문서를 바탕으로
주요한 하이퍼 파라미터들을 정리해보았습니다.
Loss : squared_error, absolute_error, huber, quantile, default= squared_error
GBM 에서 사용되는 목적함수를 의미한다.
- squared_error 은 (타겟-예측값)의 제곱을 한 loss function 이다.
- absolute_error 는 (타겟-예측값)의 절대값을 씌운 loss function 이다. 동일한 타겟, 예측값이였을
경우 squared_error 보다 적은 loss 값이 생성되어 학습되게 된다.
- huber 는 squared_error(L1)와 absolute_error(L2)를 합친 형태로
L1은 상대적으로 L2에 비해서 상대적으로 이상치에 취약하다는 단점이 있지만 모든 지점에서 미분이 가능하다는 장점
L2는 상대적으로 L1에 비해서 상대적으로 이상치에 강하다는 장점이 있지만 모든 지점(V형태 선이기 때문)에서
미분이 불가능하다는 단점이 있다.
두가지 장점을 모두 합친 것으로 일정 수치의 loss 값(alpha)은 L1 loss로 혹은 L2 loss로 계산되게 되게된다.
alpha 라는 하이퍼파라미터를 통해서 이 값을 정하게 된다.
- quantile 는 loss를 계산할 때 예측값의 분위수를 고려하여 계산하는 loss function 이다.
loss를 구할 때 예측 값들을 모아 분위수를 구하고 이를 (타겟값-예측값)*분위수 하여 loss를 구하게 된다.
만약, 예측값이 타겟값보다 클 경우에는 (1-분위수) 곱하게 된다.다른 이름으로 pinball loss라고 불린다.
z: 예측값
y: 타겟값
t: z의 분위 수 값(quantile)
learning_rate : float, default = 0.1
각 estimater의 loss 값에 곱해져 gradient update 되게하는 비율을 의미한다.
너무 높은 값을 부여하면 gradient의 발산의 우려가 있으며 너무 낮은 경우 과적합이 될 수 있다.
n_estimaters : float, default = 0.1
weak learner 가 상대적으로 strong learner 되기까지에 학습해야될 tree 수를 말한다.
n_estimaters 가 높을 수록 성능은 향상되나 과적합에 우려 또한 증가하게 된다.
subsample : float, default=1.0 (0.1~1.0)
각 n_estimaters 가 학습하는 전체데이터의 비율을 의미하며 과적합을 방지할 수 있는 방법 중 하나이다.
criterion : {‘friedman_mse’, ‘squared_error’, ‘mse’}, default=’friedman_mse’
분할의 품질을 측정하는 방법으로 보통 friedman_mse 가 가장 좋다고 한다.
min_samples_split : int
노드를 분할 할 때 최소 수를 의미한다.
min_samples_leaf : int or float, default=1
최상위 노드의 개수를 지정할 수 있다.
max_depth : int, default=3
tree의 최대 깊이를 의미하며 수가 적을 수록 전체 노드의 수도 줄어 들게 된다.
따라서 과적합 및 과소적합을 막는데사용되는 중요한 하이퍼파라미터이다.
random_state : int, RandomState instance or None, default=None
estimater가 학습을 진행할 때의 무작위 시드를 제어한다. 정해놓지 않는다면 feature spliting이 무작위로 진행될 수
있기 때문에 같은 하이퍼파라미터이더라도 다른 모델이 생성될 수 있다. 따라서 모델 검증 및 튜닝시 꼭 지정해두자.
alpha : float, default=0.9
huber loss 나 quantil loss를 하이퍼라라미터로 선택했을 시 설정해야하는 하이퍼파라미터이다.
verbose : int, default=0
각 estimater 학습마다 관련 학습 내용을 얼마나 출력할 것인지 지정할 수 있습니다.
verbose 0 이면 출력이 없으며 1이면 가끔, 1초과면 매 estimater 마다 학습내용을 출력하게됩니다.
n_iter_no_change : int, default=None
loss 가 tol 하이퍼파라미터에서 지정한 값 만큼 변동없으며 이것이 estimater 개수가
n_iter_no_change 만큼 반복적으로 변동이 없을 시 학습을 조기 중단하게 됩니다.(early_stopping)
tol : float, default=1e-4
n_iter_no_change와 같이 쓰이며 조기 중단하게 해주는 하이퍼파라미터입니다.
'AI' 카테고리의 다른 글
차원의 저주(Curse of Dimensionality) (0) | 2022.09.04 |
---|---|
XGBoost, LightGBM, Catboost (0) | 2022.08.29 |
Gradient Boosting (0) | 2022.08.22 |
벡터 연산 및 가중치 행렬 (0) | 2022.04.14 |
머신러닝을 위한 이산수학 (0) | 2022.04.14 |