머신러닝 분류 알고리즘 정리로 결정트리와 앙상블 학습에 대해 개념 정리로 어떠한 상황에 어떤 학습방법을 사용하는게 좋을까 라는 판단이 가능하도록 유도하는것이 목적인 정리

 

 

1. 결정트리

루트노드와 그아래 규칙 노드와 리프노드로 가지치기를 하듯 분류하는 알고리즘이다

결정트리의 올바른 방향은 지니계수가 작아지고 결정트리가 대칭을 유지하도록 데이터 전처리 및 엔지니어링 하는것이 바람직하다.

 

용어 정리

루트 노드 시작점
규칙 노드 가지 치기 규칙
리프 노드 분류 결정 값을 가짐
지니계수  정보이득 지수값 (값이 크면 불순도가 높음)

 

 

파라미터

min_samples_split  노드를 분할하기 위한 최소 샘플 데이터 수
min_samples_leaf  리프 노드의 최소 샘플 데이터 수
max_features  분할에 사용되는 최대 피쳐 수 (default는 모두사용)
max_depth  트리의 최대 깊이 설정
max_leaf_nodes  리프 노드 최대 개수

 

 

활용 방안

  • 결정 트리 시각화

 

 

  • 피쳐별 중요도 (Featuer Importance) 시각화

 

  • 산포도 기반 시각화

 

 

 

 

2. 앙상블 학습

앙상블 학습은 여러개의 알고리즘을 생성, 학습, 예측 값 처리 후 최종 결과를 도출하는 기법으로 방식에 따라 다음의 4가지로 구분한다. 쉽게보면 위의 결정트리가 학습 결과가 약한 모델이라면 이를 반복 혹은 계속적인 학습, 결합을 통해 강한 모델을 만드는 방식이다

  • 보팅

다른 알고리즘을 여러개 병렬 연결하여 사용하는 방법이다

 

종류에 따라 하드 보팅, 소프트 보팅으로 나눌수 있으며 방법은 아래의 사진과 같다.

하드 보팅 다수결, 최빈값
소프트 보팅 확률값 평균

하드 보팅은 상황에 따라 약한 분류 모델의 다수표를 받아 선정될 수 있기에 약점이 존재하여 소프트 보팅이 주로 성능이 더 높음으로 판단된다.

 

  • 배깅

개별 모델들이 서로 다른 샘플링 데이터를 훈련에 사용하여 병렬 연결하며 동일 알고리즘을 여러개 만들어서 소프트 보팅을 수행한다. 부스팅 모델에 비해 특수한 경우가 아니고선 성능이 좋을 확률이 낮음  EX) 랜덤 포레스트

 

샘플링 데이터는 위의 표처럼 중복된 샘플링일수 있음

 

  • 부스팅

현재는 가장 강한 분류 모델로 여러개의 약한 분류기를 순차적으로 학습 및 예측을 수행하며 잘못 예측한 데이터에 가중치를 부여하여 오류를 개선하여 다음 학습에 반영하는 방식이다.

 

모델 종류

AdaBoost  반복적인 가중치 계산을 통해 값들을 분류하며 성능 향상하는 방식
GBM (Gradient Boost Machine) 1. Ada에서 가중치를 업데이트 하는 방식으로의 개선 
2. 경사하강법 가중치 업데이트 방식
XGBoost 1. GBM의 느린학습속도와 과적합을 보완
2. 병렬 학습
3. 조기학습종료 기능
4. 과적합 방지 파라미터 (L1,L2) 
LGBM 비대칭형 분류
서드파티 CatBoost

 

 

XGBoost

  • 파라미터
booster  부스팅 알고리즘 트리기반 모델 : gbtree or dart
선형기반 모델 : gblinear 
dart : 과적합 방지를 위한 특정 비율 dropout 적용
objective 훈련 목적 회귀 :  reg:squarederror
이진분류 : binary:logistic
다중분류 : multi:softmax
확률값 다중분류 : multi:softprob
eta learning_rate
학습 비율 가중
부스팅을 반복 과정에서 모델 업데이트 비율
default : 0.3
범위 : 0 ~ 1
min_child_weight 과적합 방지 범위 0 ~ 1
하위 노드의 최소 가중치의 합 (리프 노드까지의 모든가중치의 합에 대한 제한값)
값이 크면 과소적합 우려가있음
max_depth 트리의 깊이 과적합 방지
분류가 깊어지면 메모리 사용량 증가로 학습 속도가 저하
max_leaf_nodes 리프 노드의 최대 개수 리프 노드의 최대 개수
gamma 노드 분할 시 최소 감소값 지정 default 0
노드 분할시 필요한 최소 감소값을 지정
손실 감소가 gamma보다 크면 노드 분할
값이 클수록과대 적합 방지 효과 
subsamplt 데이터 샘플링 비율 default 1
범위 0 ~ 1 (0.6~1 사용)
데이터의 샘플링 비율
colsample_bytree 각 트리 샘플링 비율 각 트리 샘플링 비율
범위 0~1
default 1
lambda 가중치에 대한 L2규제 조정값 가중치에 대한 L2규제 조정값 (릿지 알고리즘)
default 1
값이 크면 과대적합 방지효과
alpha 가중치에 대한 L1규제 조정값 가중치에 대한 L1규제 조정값 (라쏘 알고리즘)
값이 크면 과대적합 방지효과
default 1
scale_pos_weight 불균형 데이터 가중치 조정값 label값이 불균형할때 균형을 맞춤
random_state 랜덤 시드값 랜덤 시드

 

LGBM

  • 파라미터

  • 스태킹

2단계를 통해 모델을 생성하는 방법으로 1차 모델의 예측 결과를 2차 모델의 훈련 데이터로 사용하는 형태

 

 

3. 앙상블 학습 시 추가 방안

 

그리드서치 

- 하이퍼파라미터 튜닝

 

K폴드

- 데이터 분할 방식

 

'Python > 머신러닝' 카테고리의 다른 글

[XAI] XGBoost 분류 모델 시각화  (6) 2024.08.28
머신러닝 데이터 교차검증 python  (0) 2024.03.05
머신러닝 피쳐스케일링 python  (0) 2024.03.05

+ Recent posts