Python/Deep Learning

[Python DL]그래디언트 부스팅(Gradient Boosting)_Classifier, Regressor

sohyunkimmm 2023. 1. 27. 11:20
728x90

* 그래디언트 부스팅(Gradient Boosting)

Gradient Boosting (사진 출처: https://m.blog.naver.com/luvwithcat/222103025023)

- 앙상블에서 대표적인 부스팅 방식

  (부스팅? 모형을 하나 뽑고 잘못한것을 학습해서 다음 모델로 넘긴다 -> '순차적인 직렬구조')

- 이전 학습의 결과에서 나온 오차를 다음 학습에 전달해 이전의 오차(잔여 오차)를 점진적으로 개선하는 기법

- '회귀'(Regressor), '분류'(Classifier)모형 모두 사용 가능

- 매게변수 설정에 민감하지만, 잘 조정하면 더 높은 정확도를 보여줌

- 그래디언트 부스팅의 중요 매게변수: 'learning_rate'

  (높을수록 트리의 오차 보정을 강하게 함, 복잡한 모델 생성 / 너무 높으면 Overfitting 위험)

- 종류: XGBoost, LightGbm, CatBoost

 

 

* Gradient Boosting에 대해 더 알고 싶다면..

https://www.youtube.com/watch?v=3CC4N4z3GJc 

 

 

 

* Gradient Boosting 코딩하기

1) 분류예측_GradientBoostingClassifier

변수선택, 데이터 분할, 데이터 전처리(StandardScaler, OneHotEncoder), 오버샘플링(SMOTE)

 

- 모형 생성

model = GradientBoostingClassifier(random_state = 0, n_estimators = 100, max_depth = 4, learning_rate = 0.1)

 

Using a low learning rate can dramatically improve the perfomance of your gradient boosting model. Usually a learning rate in the range of 0.1 to 0.3 gives the best results.
 
➡️ 0.1 ~ 0.3 사이의 값이 가장 좋은 결과값을 준다

결과값: accuracy = 0.933, f1-score = 0.93

 

 

2) 회귀예측_GradientBoostingRegressor

변수선택, 데이터 분할, 데이터 전처리(StandardScaler, OneHotEncoder)

 

- 모형 생성

model = GradientBoostingRegressor(random_state = 0, n_estimators = 100, max_depth = 4, learning_rate = 0.1)

결과값: accuracy(R2) = 0.916, RMSE = 0.413

 

 

 

728x90
반응형