상세 컨텐츠

본문 제목

[머신러닝] Regression & Boosting Model(1): Linear Regression, Decision Tree, Random Forest, Extra Tree, GBM

멋사 AISCOOL 7기 Python/INPUT

by dundunee 2022. 11. 24. 17:37

본문

1️⃣ 선형회귀모델(Linear Regression)

종속변수 y와 한개 이상의 독립변수(또는 설명변수) X와의 선형 상관 관계를 모델링하응 회귀분석 기법이다. 선형회귀는 선형 예측함수를 사용해 회귀식을 모델링하며, 알려지지 않은 파라미터는 데이터로부터 추정한다.

1-1. 주요 파라미터

from sklearn.linear_model import LinearRegression
LinearRegression(fit_intercept=True, 
                 normalize='deprecated', 
                 copy_X=True, n_jobs=None, positive=False)

1-2. 특징

  • 다른 모델에 비해 간단한 작동원리를 가진다
  • 학습속도가 매우 빠르다
  • 조정해 줄 파라미터가 적다
  • 이상치에 영향을 크게 받는다
  • 데이터가 수치형변수로만 이루어져 있거나, 데이터의 경향성이 뚜렷할 경우 사용하기 좋다.
  • 선형회귀의 단점을 보완한 모델들에는 Ridge, Lasso, ElasticNet이 있다.

2️⃣ 결정트리모델

결정트리 학습법(decision tree learning)은 어떤 항목에 대한 관측값과 목표값을 연결시켜주는 예측트리로써 결정트리를 사용하며, 이는 통계학과 데이터마이닝 등에서 사용하는 예측 방법 중 하나이다.

트리모델 중 목표 변수가 유한한 값을 가지는 것을 분류트리라고하며, 결정트리 중 목표변수가 연속하는 값, 일반적으로 실수를 가지는 것을 회귀트리라 한다.

2-1. 주요 파라미터

from sklearn.tree import DecisionTreeRegressor
DecisionTreeRegressor(criterion='squared_error', 
					  splitter='best', 
					  max_depth=None, 
					  min_samples_split=2, 
					  min_samples_leaf=1, 
			           min_weight_fraction_leaf=0.0, 
					  max_features=None, 
					  random_state=None, 
					  max_leaf_nodes=None, 
					  min_impurity_decrease=0.0, 
					  ccp_alpha=0.0)

2-2. 장점

  • 결과를 해석하고 이해하기 쉽다 → 만들어진 모델에 대해 시각화가 가능하다
  • 자료를 가공할 필요가 거의 없다
  • 수지 자료와 범주자료에 모두 적용할 수 있다 → 데이터에 구해 받지 않는다
  • 화이트박스 모델을 사용한다
  • 안정적이다
  • 대규모 데이터셋에도 잘 동작한다.
  • 데이터 내에 변수의 종류가 달라도 잘 작동한다
    • 선형회귀는 수치형 변수에서만 사용가능했다
  • 학습용 데이터에 과적합되는 단점이 있다.

3️⃣ Random Forest

랜덤포레스트는 다수의 결정트리들을 학습하는 앙상블 방법이다. 분류, 회귀분석 등에 사용되며, 훈련과정에서 구성한 다수의 결정트리로붜 분류 또는 평균 예측치(회귀분석)을 출력함으로써 동작한다.

3-1. 주요 파라미터

from sklearn.ensemble import RandomForestRegressor
RandomForestRegressor(n_estimators=100,
                      criterion='squared_error', 
                      max_depth=None, 
                      min_samples_split=2, 
                      min_samples_leaf=1, 
                      min_weight_fraction_leaf=0.0, 
                      max_features=1.0, 
                      max_leaf_nodes=None, 
                      min_impurity_decrease=0.0, 
                      bootstrap=True, 
                      oob_score=False, 
                      n_jobs=None, 
                      random_state=None, 
                      verbose=0, 
                      warm_start=False, 
                      ccp_alpha=0.0, 
                      max_samples=None)

3-2. 특징

  • 성능이 뛰어나고 매개변수의 튜닝을 많이 필요로 하지 않는다
  • 결정 트리와 달리 시각화가 불가능하고, 비전문가는 이해하기 어려울 수 있다
  • 데이터의 크기가 커지면 다소 시간이 걸릴 수 있다
  • 랜덤성이 있기 때문에 random_state의 변수를 지정하지 않으면 결과가 달라질 수 있다
  • 차원이 높고 희소한 데이터에는 잘 작동하지 않을 수 있다.

4️⃣ 엑스트라 트리 모델(Extra Tree)

엑스트라 트리 모델은 극도로 무작위화(Extremely Randomized Tree)된 모델이다. 랜덤포레스트에서와 같이 후보 기능의 무작위 하위집합이 사용되지만 가장 차별적인 임계값을 찾는 대신 각 후보에 대해 임계값이 무작위로 그려지고 무작위로 생성된 임계값 중 가장 좋은 것이 분할 규칙으로 선택된다. 이러한 방법은 일반적으로 약간 더 큰 편향 증가를 희생시키면서 모델의 분산을 좀 더 줄일 수 있다

4-1. 주요 파라미터

from sklearn.ensemble import ExtraTreesRegressor

ExtraTreesRegressor(n_estimators=100,
                    criterion='squared_error',
                    max_depth=None,
                    min_samples_split=2,
                    min_samples_leaf=1, 
                    min_weight_fraction_leaf=0.0, 
                    max_features=1.0, 
                    max_leaf_nodes=None, 
                    min_impurity_decrease=0.0, 
                    bootstrap=False, 
                    oob_score=False, 
                    n_jobs=None,  
                    random_state=None, 
                    verbose=0, 
                    warm_start=False, 
                    ccp_alpha=0.0, 
                    max_samples=None)

4-2. 특징

  • 분기 지점을 랜덤으로 선택하기 때문에 랜덤포레스트보다 속도가 더 빠르다
  • 1과 동일한 이유로 랜덤포레스트보다 더 많은 특성을 고려할 수 있다.
  • 랜덤포레스트와 동일한 원리를 이용하기 때문에 많은 특징을 공유하며, 성능이 미세하게 우위에 있다.

5️⃣ GBM(Gradient Boosting Machine)

회귀 또는 분류 분석을 수행할 수 있는 예측 모형이며, 예측모형의 앙상블 방법론 중 부스팅계열에 속하는 알고리즘이다. 흔히 GBT라고 줄여 부르며, 트리를 앙상블한 모델이다.

머신러닝에서도 가작 예측 성능이 높다고 알려진 알고리즘으로, 계산량이 상당히 많이 필요한 알고리즘이기때문에 이를 하드웨어 효율적으로 구현하는 것이 중요하다.

5-1. Residual fitting

출처: https://towardsdatascience.com/boosting-in-machine-learning-and-the-implementation-of-xgboost-in-python-fb5365e9f2a0

  • tree1을 통해 예측하고 남은 잔차를 tree2를 통해 예측하고, 이를 반복하여 점차 잔차를 줄인다.
  • 이때 tree1, 2, 3을 약한 분류기(week learner)라 하며, 보통 의사결정나무를 사용한다
  • tree1, 2, 3을 결합한 분류기를 강한 분류기(strong learner)라 하며, 이를 Gradient boosting tree라 한다.
  • 대표적인 구현 모델로 XGBoost, Catbooet, LightGBM등이 있다.

 

5-2. 주요 파라미터

from sklearn.ensemble import GradientBoostingRegressor
GradientBoostingRegressor(loss='squared_error',
					      learning_rate=0.1, 
                          n_estimators=100, 
                          subsample=1.0, 
                          criterion='friedman_mse', 
                          min_samples_split=2, 
                          min_samples_leaf=1, 
                          min_weight_fraction_leaf=0.0, 
                          max_depth=3, 
                          min_impurity_decrease=0.0, 
                          init=None, 
                          random_state=None, 
                          max_features=None, 
                          alpha=0.9, verbose=0, 
                          max_leaf_nodes=None, 
                          warm_start=False, 
                          validation_fraction=0.1, 
                          n_iter_no_change=None, 
                          tol=0.0001, 
                          ccp_alpha=0.0)

✏️ Loss

출처: https://www.researchgate.net/figure/Continuous-loss-functions-A-L-2-squared-loss-function-B-L-1-absolute-loss_fig17_259653472

그래디언트 부스팅에서 내장하고 있는 손실함수들로 squared loss는 MSE, absolute loss는 MAE와 같다고 볼 수 있다. absolute loss는 기울기의 방향만 다를 뿐 기울기 값이 모두 동일하므로 이를 보완하기 위해 Huber loss와 Quantile loss를 사용하기도 한다.

 

5-3. 특징

  • 랜덤포레스트와 다르게 무작위성이 없다
    • 부스팅 계열 자체가 무작위 성이 없다. 왜냐하면 이전 오차를 보완해가며 순차적으로 학습하기 때문이다.
  • 매개변수를 잘 조정해야 하고 훈련시간이 길다
    • 성능고려없이 훈련시간을 줄이려면 보폭을 크게 하면 훨씬 빨리 걷게 된다. 이를 위해 learning rate을 올리면 학습시간을 줄어들지만 손실(loss)가 0이되는 지점을 제대로 찾지 못할 수 있다.
  • 데이터의 스케일에 구애받지 않는다
  • 고차원의 희소한 데이터에서 잘 작동하지 않는다.

관련글 더보기