분류모델 하이퍼 파라미터
K-Nearlist-Neighbors(KNN)의 하이퍼 파라미터 :
Decision Tree Classifier의 하이퍼 파라미터 :
min_samples_split : 노드 분할을 위한 최소한의 데이터 수 / 기본값 2 / 작을수록 노드 많아져서 과적합 가능성이 일어남 /
이를 높여서 데이터가 분할하는데 필요한 데이터수를 늘려 과적합 제어
min_samples_leaf : 리프노드가 되기위한 최소한의 데이터 수 /
이를 높여서 리프노드가 되는데 필요한 데이터 수를 늘려서 과적합 제어 /
max_features : 최대 피처의 갯수 / 기본값 None, 즉 모든 피쳐 사용 /
이 값을 조정해서 분할하는데 고려하는 피쳐의 수를 제한하여 과적합 제어 /
max_depth : 트리의 최대깊이 / 기본값 None, 즉 값이 결정되거나 min_samples_split보다 데이터가 작아질떄까지 분할 /
너무 깊어지면 과적합 가능성이 있으므로 깊이를 제한하여 과적합 제어 /
max_leaf_nodes : 리프노드의 최대 갯수
Random Forest의 하이퍼 파라미터 :
min_samples_split : 노드 분할을 위한 최소한의 데이터 수 / 기본값 2 / 작을수록 노드 많아져서 과적합 가능성이 일어남 /
이를 높여서 데이터가 분할하는데 필요한 데이터수를 늘려 과적합 제어
min_samples_leaf : 리프노드가 되기위한 최소한의 데이터 수 /
이를 높여서 리프노드가 되는데 필요한 데이터 수를 늘려서 과적합 제어 /
max_features : 최대 피처의 갯수 / 기본값 None, 즉 모든 피쳐 사용 /
이 값을 조정해서 분할하는데 고려하는 피쳐의 수를 제한하여 과적합 제어 /
max_depth : 트리의 최대깊이 / 기본값 None, 즉 값이 결정되거나 min_samples_split보다 데이터가 작아질떄까지 분할 / 너무 깊어지면 과적합 가능성이 있으므로 깊이를 제한하여 과적합 제어
max_leaf_nodes : 리프노드의 최대 갯수
n_estimators : 결정트리의 갯수를 지정 / 기본값 10 / 갯수가 늘어나면 성능은 좋아질 수 있으나 시간이 오래 걸림
AdaBoost의 하이퍼파라미터 :
n_estimators: 생성할 학습기의 갯수 / 기본값 50 / 커질수록 학습기가 늘어나므로 모델이 복잡해짐
learning_rate : 순차적으로 진행할때 마다 적용하는 학습률 0~1 / 기본값 1 / 줄어들수록 가중치 갱신 변동폭이 줄어들어서 학습기들의 경계차이가 줄어듬
GBM(Gradient Boost Machine)의 하이퍼파라미터 :
min_samples_split : 노드 분할을 위한 최소한의 데이터 수 / 기본값 2 / 작을수록 노드 많아져서 과적합 가능성이 일어남 /
이를 높여서 데이터가 분할하는데 필요한 데이터수를 늘려 과적합 제어
min_samples_leaf : 리프노드가 되기위한 최소한의 데이터 수 /
이를 높여서 리프노드가 되는데 필요한 데이터 수를 늘려서 과적합 제어
max_features : 최대 피처의 갯수 / 기본값 None, 즉 모든 피쳐 사용 /
이 값을 조정해서 분할하는데 고려하는 피쳐의 수를 제한하여 과적합 제어
max_depth : 트리의 최대깊이 / 기본값 None, 즉 값이 결정되거나 min_samples_split보다 데이터가 작아질떄까지 분할 /
너무 깊어지면 과적합 가능성이 있으므로 깊이를 제한하여 과적합 제어
max_leaf_nodes : 리프노드의 최대 갯수
n_estimators : 생성할 트리의 개수를 지정 / 기본값 100 / 많을수록 성능은 좋으나 시간이 오래 걸림
learning_rate : 순차적으로 진행할때 마다 적용하는 학습률 0~1 / 기본값 0.1 / 낮을수록 최소 오류값을 찾아 예측 성능이 높아질 수 이씅나 많은 트리가 필요하게 되서 시간이 많이 걸림
XGBoost의 하이퍼파라미터 :
booster : 어떤 모델을 쓸건지에 대한 파라미터 / 기본값 gbtree / gbtree 트리기반 모델 gblinear 선형모델 /
max_depth :
!!! 가장 먼저 튜닝해줄 하이퍼 파라미터임!!!
트리의 최대깊이 / 0 : 깊이 제한없음 / 기본값은6 /
클수록 학습데이터에 피팅이 잘되지만 너무 크면 과적합 (보통 3 ~ 10) /
이 값을 낮춰서 과적합 제어 (약간의 성능을 포기) /
alpha : L1규제 적용값 / 불필요한 가중치를 0으로 만들어 무시 / 희소데이터가 있거나 피쳐가 많을때 적용 / 기본값 0/
클수록 과적합 감소 /
gamma, lambda 와 함께 튜닝
lambda : L2규제 적용값 / 노이즈데이터나 너무 크게 튀는 데이터를 잡아줌 / 피쳐가 많을때 적용 /기본값 1 /
클수록 과적합 감소 (지나치게 클 경우 과소적합) /
gamma, alpha와 함께 튜닝함 /
gamma : 리프노트 추가분할을 결정할 최소손실 감소값 / 감마보다 손실이 크게 감소할때 분리 / 기본값 0 /
값이 클수록 과적합 감소효과있으므로 과적합 조정에 사용 /
alpha , lambda 와 함께 튜닝
scale_pos_weight : 불균형데이터 균형 유지 / 기본값 1 / 레이블 불균형이 있을때 가중치를 조절해줌 / 데이터 불균형이 심할때 설정
eta : GMB의 학습률과 유사한 것 / 범위 0 ~ 1 /기본값 0.3 / 일반적으로 0.01~0.3정도 설정 (최종학습시에는 0.05이하의 값으로 성능향상에 초점을 맞추고, 튜닝시에는 0.1이상의 값을 사용하여 학습속도를 높이는 것이 좋다) /
eta 값을 낮춰서 과적합 제어 가능
num_boost_around : 생성할 학습기 개수 / 너무 높은 값을 주면 과적합 발생함 /
eta값을 줄여 과적합을 제어할 경우 이 값을 높여줘야 함
early_stoppings : 조기종료조건
GBM은 n_estimators에 지정된 횟수만큼 끝까지 학습하지만 XGBoost는 조기 중단 파라미터 값을 설정하면 반복중 조기중단 횟수에 도달했을떄 더이상 오류가 감소하지않으면 부스팅을 종료함
>> 이 파라미터를 설정할때는 eval_set과 eval_metric를 같이 설정해줘야 함 /
min_child_weight : GBM의min_samples_leaf 와 유사 / 이 값보다 샘플수가 적으면 leaf node가 됨 /
이 값을 높여서 과적합 조절을 위해 사용 but 너무 크면 과소적합
sub_sample : 과적합제어를 위해 데이터 샘플링 비율 지정 / 범위 0 ~ 1 (보통 0.5 ~ 1로 지정) /
값을 낮춰 과적합 제어에 사용
colsample_bytree : GBM의max_features 과 유사 / 피쳐가 많을때 과적합 조정에 사용 / 범위 0 ~ 1 / 각각의 트리마다 사용할 피쳐의 비율 / 보통 0.5 ~ 1 사용 /
값을 낮춰 과적합 제어에 사용