이번 게시글 Gradient Boosting Algorithm(GBM) 개념과 SAS Viya에서 Gradient Boosting Algorithm(GBM) option에 대해서 알아보겠습니다.
Ensemble
앙상블(Ensemble)은 조화와 통일이라는 의미를 가집니다.
앙상블 기법은 여러 개의 약 분류기(Weak Classifier)를 결합하여 강 분류기(Strong Classifier)를 만드는 것 입니다.
예를 들어 설명하면 여러개의 Decision Tree를 결합하여 하나의 Decision Tree 보다 더 좋은 성능을 내는 머신러닝 기법입니다.
앙상블 학습법으로 Bagging과 Boosting이 있습니다.
Boosting 대표적인 방법으로는 AdaBoost와 GBM이 있습니다
GBM은 회귀분석 또는 분류 분석을 수행할 수 있는 예측모형으로 앙상블 방법 중 부스팅 계열에 속하는 알고리즘 입니다.
Boosting
앞서 Ensemble이란 약 분류기(Weak Classifier)를 결합하여 강 분류기(Strong Classifier)를 만드는 과정이라고 설명하였습니다.
예를 들어, 3개의 분류기(Classifier) 각각의 accuracy가 0.3이면 ensemble은 0.7정도의 accuracy를 얻는게 기본적인 앙상블의 원리입니다.
Boosting은 이 과정을 순차적으로 실행합니다. A 분류기를 만든 후, 그 정보를 바탕으로 B 분류기를 만들고, 그 정보를 바탕으로 C분류기를 만듭니다. 그리고 최종적으로 만들어진 분류기를 모두 결합하여 최종 모델을 만드는 것이 Boosting의 기본 원리입니다.
GBM
가중치를 업데이트를 경사하강법(Gradient Descent)를 이용하여 최적화된 결과를 얻는 알고리즘입니다.
경사하강법(Gradient)
오류값은 "실제 값 - 예측 값"입니다.
분류의 실제 결과값을 y라 하고, 데이터 값을 x1,x2,x3,...,xn , 데이터 값을 기반한 예측 함수가 F(x)함수라고 하면 오류식은 h(x) = y - F(x)입니다. 이 오류식 h(x) = y - F(x)를 최소화하는 방향성을 가지고 반복적으로 가중치를 업데이트 하는 것이 경사 하강법 입니다.
Gradient Boosting Option in SAS Viya
다음은 SAS Viya에서 GBM 옵션에 대해서 알아보겠습니다.
[ 일반 속성 ]
① [트리 수] 100(기본값) : 부스팅 시리즈에서 반복 수 지정. 타겟이 binary인 경우 트리 수와 같음. 타겟이 nominal인 경우 반복마다 타겟의 범주 수 만큼의 트리가 생성됨.
② [학습률] 0.1(기본값) : Gradient Descent 최적화 알고리즘의 스텝 사이즈.
③ [부분 표본 비율] 0.5(기본값) : 트리를 학습시키는데 사용될 training 샘플의 비율 지정. 각 반복마다 다른 training 샘플이 사용됨.
④ [L1 정규화] 0(기본값) : L1 정규화 모수값 지정.
⑤ [L2 정규화] 0(기본값) : L2 정규화 모수값 지정.
⑥ [시드] 12345(기본값) : 난수 생성을 위한 시드 지정. 부분 표본 비율 옵션에서 training 샘플을 선택할 때 사용됨.
[ 트리 분할 옵션 ]
① [최대 가지 수] 2~4, 2(기본값) : 트리에서 노드가 분리될 때 최대 가지의 수 지정.
② [최대 깊이] 1~50, 6(기본값) : 트리에서 최대 노드 생성 수 지정. 부모 노드는 0이고, 뿌리 노드에서 분리된 자녀 노드가 1임.
③ [최소 리프 크기] 5(기본값) : 리프(leaf)가 가질 수 있는 최소 관측치 수 지정.
④ [결측값] : 노드를 분리할 때 결측값 처리 방법 지정.
•검색에 사용(기본값) : 학습과정에서 결측값을 개별적인 하나의 값으로 사용. interval 입력변수인 경우 다른 값들과 다른 독특한 범주(special level)로 처리.
•기계 최솟값으로 사용 : 학습과정에서 결측값을 개별적인 하나의 값으로 사용. inteval 입력변수인 경우 다른 값들보다 작은 범주로 처리.
•무시: 학습과정에서 결측이 있는 개체는 제외됨.
⑤ [검색에 사용할 최소 결측값] 0(기본값) : [결측값] 옵션을 ‘검색에 사용’으로 지정했을 때만 활성화 됨. 지정된 숫자 이상의 결측값이 있을 때만 결측을 다른 노드로 분리하고, 그렇지 않으면 결측을 다수 노드로 할당함.
[ 트리 분할 옵션 ]
⑥ [Interval 구간 수] 20(기본값) : interval 입력변수를 나눌 구간의 수 지정.
⑦ [Interval 구간화 방법] : interval 변수의 구간화 방법 지정.
• 버킷(기본값) : interval 입력변수를 일정한 너비로 구간화함.
• 분위수 : interval 입력변수를 분위수로 구간화 함.
각 구간에 동일한 수의 개체가 속하게 됨.
⑧ [분할 당 고려할 기본 입력변수 수 사용] 100(기본값) : 노드를 분할할 때 고려할 입력변수의 수.
• 분할당 고려할 입력변수 수 : [분할 당 고려할 기본 입력변수 수 사용] 옵션의 체크박스를 해제했을 때만 활성화 됨. 기본값은 100.
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.