ML&DL&AI/ML

ML AdaBoost(Adaptive Boosting)

Hoon0211 2023. 8. 16. 10:15
728x90

1. AdaBoost(Adaptive Boosting)

  • 랜덤포레스트처럼 의사 결정 트리 기반의 모델
  • 각각의 트리들이 독립적으로 존재 X

 

 

- 동작 순서

1. 첫번째 의사 결정 트리를 생성

  • 위쪽 빨간 원이 3개 있는 곳을 대충 분류
  • 2개의 빨간 원과 1개의 녹색 세모가 잘못 구분

 

2. 잘못된 2개의 빨간 원과 1개의 녹색 세모에 높은 가중치를 부여,

맞은것 (빨간 원 3개와 녹색 세모 4개)에는 낮은 가중치 부여

 

3. 가중치를 부여한 상태에서 다시 분류 시킴

  • 잘못된 3개의 빨간 원에 높은 가중치를 부여하고 맞은 5개의 녹색 세모는 낮은 가중치를 부여

 

4. 가중치를 부여한 상태에서 다시 분류 시킴

 

5. 진행한 분류들을 결합

 

 

2. 사용 방법

  • learning_rata : 학습률 0~1
    • 기본값 : 0.1
       
  • n_estimators : 트리 개수 기본 50
  • random_state
  • max_depth
from sklearn.ensemble import AdaBoostClassifier

 

- 주요 매개 변수(hyperparameter)

  • 결정 트리 분류 모델의 개수
    • n_estimators
    • 사용할 결정 트리 분류 모델의 개수
  • 학습률
    • learning_rate
    • 가중치 갱신의 변동폭을 조정
    • 0과 1사이의 값
    • 기본 설정값 1.0
  • 선택할 데이터의 시드
    • random_state

 

 

 

3. 실습

 

1. 라이브러리 불러오기

# 머쉬룸 중략 ~
# 라이브러리 불러오기
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import AdaBoostClassifier

# 모델 생성
ada_model = AdaBoostClassifier( n_estimators = 100,
                                random_state=7,
                                learning_rate=0.3)

 

2. 교차 검증

# 교차검증 - 일반화 성능평가
rs = cross_val_score(ada_model, X_train,y_train, cv=5)
print(rs)
[0.97802198 0.97802198 0.96703297 0.98901099 0.92307692]

 

3. 모델 학습

# 모델 학습
ada_model.fit(X_train,y_train)

 

4.예측 및 정확도 확인

# 예측 및 정확도 확인
ada_pre = ada_model.predict(X_test)
ada_score = accuracy_score(y_test, ada_pre) # 실제값, 예측값
print('Ada 분류모델의 예측 결과는 {0:0.2f}% 입니다'.format(ada_score*100))
Ada 분류모델의 예측 결과는 97.37% 입니다
728x90