히비스서커스의 블로그

[Concept] 회귀를 위한 다양한 모델 (feat. Regressor) 본문

Theory/Machine Learning

[Concept] 회귀를 위한 다양한 모델 (feat. Regressor)

HibisCircus 2021. 2. 4. 21:19
728x90

회귀를 위한 4가지 모델(GradientBoostingRegressor, XBGRegressor, LGBMRegressor, RandomForestRegressor)들이 사용하였는데 그 중 GradientBoostingRegressorRandomForestRegressor의 개념적인 내용API를 찾아보며 정리해보기로 하였다.

 

Gradient Boosting Regressor

 

앙상블 이전까지의 오차를 보정하도록 예측기를 순차적으로 추가하지만 이전 예측기가 만든 잔여오차에 새로운 예측기를 학습시킨다.

이미지 출처 : (https://www.researchgate.net/figure/Schematical-representation-of-gradient-boosting-regression-in-regards-to-algorithm_fig3_340524896)

 

sklearn 라이브러리의 ensemble 클래스에 저장되어 있어 다음과 같이 불러와야 한다.

from sklearn.ensemble import GradientBoostingRegressor

 

다양한 매개변수가 존재하는데 그 중 일부를 적어보았다.

 

- loss: 최적화할 손실함수를 선택하는 것이다.'ls'는 최소 제곱(Least Square) 회귀를 나타낸다.'lad'(최소 절대 편차)는 입력 변수의 순서 정보만을 기반으로하는 매우 강력한 손실 함수이다.'huber'는이 둘의 조합이다.'quantile'은 분위수 회귀를 허용한다. (default=’ls’)

- learning_rate: 각 트리의 기여도를 나타낸다. (default=0.1)

- n_estimators: 부스팅 단계의 수를 나타낸다. (default=100)

- subsample: 샘플비율을 나타낸다. 1보다 작으면 확률적 그라데이션 부스팅이 발생한다. (default=1.0)

- criterion: 분할하는데의 기준을 선택하는 것이다. 'friedman_mse', 'mse', 'mae'가 존재하며 일반적으로 defalut값인 friedman_mse가 기능이 좋다.

 

 

scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingRegressor.html

 

sklearn.ensemble.GradientBoostingRegressor — scikit-learn 0.24.1 documentation

 

scikit-learn.org

 

 

RandomForestRegressor

랜덤포레스트는 dataset의 다양한 하위 sample에 대한 여러 개의 Decision Tree에서의 평균을 사용하여 predict Accuracy를 높이고 overffing을 제어하는 meta estimator 이다.

이미지 출처 : (https://en.wikipedia.org/wiki/Random_forest)

RandomForestClassifier는 분류문제에 RandomForestRegressor는 회귀문제에 적용할 수 있다.

 

 

sklearn 라이브러리의 ensemble 클래스에 저장되어 있어 다음과 같이 불러와야 한다.

from sklearn.ensemble import RandomForestRegressor

 

다양한 매개변수가 존재하는데 그 중 일부를 적어보았다.

 

- n_estimators: 랜덤포레스트의 트리의 수를 말한다. (default=100)

- criterion: 트리를 구분하는 기준으로 mse와 mae 중 하나를 골라야 한다. (default='mse')

- max_depth: 트리의 최대 깊이를 나타내는 것으로 None이면 모든 잎이 순수해질 때까지나 min_samples_split 샘플 미만이 포함될때까지 노드가 확장된다. (defalut=None)

- min_samples_split: 내부 노드를 분할하는 데 필요한 최소 샘플 수이다. (default=2)

- min_samples_leaf: 리프 노드에 있어야하는 최소 샘플 수이다. 왼쪽과 오른쪽 분기 각각에 최소한 훈련샘플을 남겨두는 경우에 고려되며, 회귀에서 모델을 평활화하는데 효과가 있을 수 있다.

 

 

 

scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestRegressor.html

 

sklearn.ensemble.RandomForestRegressor — scikit-learn 0.24.1 documentation

 

scikit-learn.org

 

 

 

XBGRegressor,LGBMRegressor에 관한 설명은 이곳에 잘 설명되어 있다.

machinelearningkorea.com/2019/09/29/lightgbm-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0/

 

lightGBM / XGBoost 파라미터 설명 – Go Lab

lightGBM에는 무수히 많은 파라미터가 있다. 다만 기억할것은 정답이 없다는것이다. 생각보다 하이퍼파라미터 튜닝에 시간을 많이 쏟지는 않는 이유는, 어차피 ensemble형식이기 때문에 구조자체가

machinelearningkorea.com

 

 

 

-히비스서커스-

728x90