수식이 나오지 않는다면 새로고침(F5)을 해주세요
모바일은 수식이 나오지 않습니다.
부스팅 알고리즘에 대해 공부하시는 분들이라면 CATBoost를 들어보셨을 것 같습니다.
CATBoost를 Yandex라는 러시아 검색 엔진 인터넷 기업에서 개발한 그래디언트 부스팅 라이브러리입니다.
범주형 데이터를 다루는데 최적화 되어 있으며, XGBoost와 함께 여러 분야에서 사용하는 모델입니다.
📌 기존 부스팅과의 차이점(Ordered Boosting)
먼저, CATBoost는 Ordered Boosting(순서 부스팅)이라는 기법을 사용하여 데이터의 순서에 따라 모델을 학습시킵니다.
기존의 부스팅 모델들을 모든 훈련 데이터를 대상으로 잔차를 계산하여 트리를 적합해 나간다. CATBoost의 경우 학습 데이터의 일부만을 사용하여 잔차를 계산한 뒤, 해당 결과를 통해 모델을 만들어나간다.
이때 ordeded boosting이라는 이름의 유래가 나온다. 기존의 부스팅 모델들을 모든 행별로 잔차를 계산하여 예측하는 데 사용했다면, CATBoost는 일련의 순서를 가지고 진행해나 간다.
예를 들어보자,
일반적인 부스팅의 방법은 아래와 같다.
$x_1, ...., x_{20}$의 잔차를 학습, 잔차 계산
$r_1,...,r_{20}$($x_1,...,x_{20}$의 잔차)를 학습 한 후, 이들의 잔차 계산
이를 반복
반면, CATBoost는 아래와 같은 과정을 거친다. 20개의 데이터에 대해 5개의 부분집합을 만들어 각각 4개의 데이터를 포함하였다고 가정하자.
$x_1,...,x_4$의 잔차를 학습, $x_5,...,x_8$의 잔차 예측
$x_1,...,x_8$의 잔차를 학습, $x_9,...,x_12$의 잔차 예측
이를 반복
자, 이렇게 학습 데이터의 일부만을 사용하는 것을 어디서 보았을 것이다. 바로 배깅 모델의 Random Forest이다. 기존 배깅 모델의 한계점을 보완하기 위해 데이터의 일부분만을 사용하는 방식이 유사합니다.
추가로 CATBoost에서 순서를 선택하기 전에 데이터를 랜덤하게 섞어주어 오버피팅을 방지한다.
📌 범주형 변수 처리법
CATBoost는 왜 CAT가 붙었을까? 바로 Category에러 파생된 것이다. 범주형 변수가 다수인 데이터를 학습할 때 성능이 우수한 것으로 나타난다.(실제 다수 데이터를 분석했을 때 CATBoost가 성능이 좋게 나오는 경우가 많았다)
해당 알고리즘은 1. Response encoding과 2. Categorical feature Combination을 사용하여 범주형 변수를 처리한다.
1. Response encoding
먼저 response encoding은 범주형 변수를 숫자로 변환하는 방법 중 하나이다. 여타 부스팅 모델들이 범주형 변수를 더미형 변수로 변경하였다면, CATboost는 일반적으로 각 범주의 레이블에 대한 평균을 계산하여 사용한다.
해당 방식은 각 범주가 레이블에 어떤 영향을 미치는지를 반영하기 때문에, 데이터의 정보를 보다 효과적으로 모델에 통합할 수 있다.
예를 들어, 아래와 같은 데이터 feature가 있다고 해봅시다.
i | city | target |
1 | 서울 | 0 |
2 | 부산 | 1 |
3 | 부산 | 0 |
4 | 서울 | 1 |
5 | 서울 | 1 |
6 | 대전 | 1 |
그럼 response encoding에 따라 아래와 같이 city변수가 변환됩니다.
i | city | city_encoded | target |
1 | 서울 | 2/3 | 0 |
2 | 부산 | 1/2 | 1 |
3 | 부산 | 1/2 | 0 |
4 | 서울 | 2/3 | 1 |
5 | 서울 | 2/3 | 1 |
6 | 대전 | 1 | 1 |
데이터를 다뤄보신분들을 아시겠지만, 여기서 문제가 있습니다.
바로 city_encoded 변수에 우리가 예측할 target에 대한 정보가 포함되어 버립니다. 이를 data leakage 문제라고 칭합니다.
그래서 점수를 변환할 때, 해당 데이터 포인트는 제외한 과거의 데이터를 가지고 변환에 임합니다.(해당 방법 말고 다른 방법도 존재합니다.)
예를들어, i=3의 부산의 경우 city_encoded = 1이 될 것이고, i=5의 서울의 경우 city_encoded = 1/2가 되는 것이죠.
2. Categorical feature combination
아래와 같은 열들이 있다고 해봅시다.
피자 | 양식 |
피자 | 양식 |
비빔밥 | 한식 |
비빔밥 | 한식 |
피자 | 양식 |
두개의 열의 정보가 사실상 같다고 볼 수 있습니다.(해석에 목적이 있다면 다를 수 있습니다.)
굳이 같은 열을 사용할 필요가 없기 때문에 이들을 합쳐서 분석에 이용합니다. 이렇게 되면 차원이 줄어들어 계산이 좀더 편이해 질 수 있습니다.
📌 장, 단점
장점
: 과적합의 위험이 적다.
: 범주형 변수를 자동으로 처리해준다.
: 범주형 변수에 대한 적합도가 높다
: 데이터를 효율적으로 처리하여 계산 속도가 빠르다.
단점
: 결측치를 처리해주지 않는다.
: 데이터가 범주형이 아닌 대부분이 수치형일 경우 계산 속도가 느리다.
: 많은 검증이 되지 않은 알고리즘이다.(사실 ML에서 검증이라는게 굉장히 애매한 부분)
다음엔 알고리즘 공식에 대해 살펴보겠습니다.
'🌞 Statistics for AI > Machine learning' 카테고리의 다른 글
가우시안 혼합 모델(Gaussian Mixture model, GMM) (0) | 2024.04.25 |
---|---|
부분 의존성 플롯(Partial Dependence Plot, PD) 그리고 개별 조건부 평균 플롯(Individual Conditional Expectation Plot, ICE) (1) | 2024.02.27 |
Calibration Plot 과 성능 확인 (0) | 2024.02.27 |
불균형 데이터(Imbalanced Data) 처리 : SMOTE, ADASYN (1) | 2024.02.23 |
불균형 데이터(Imbalanced Data) 처리 : 오버 샘플링(over sampling), 언더 샘플링(under sampling) (0) | 2024.02.21 |