AI VIDEO BRIEFING

CatBoost 원리 정리: 확장 평균 타깃 인코딩과 순서형 부스팅이 과적합을 막는 방법

표 형태 데이터에서 좋은 성능을 내는 CatBoost가 어떻게 동작하는지 살펴본다. 타깃값으로 범주형 변수를 인코딩할 때 생기는 데이터 누수와, 부스팅 반복 자체가 만드는 누수를 막는 두 기법을 정리했다.

범주형 데이터에 강한 CatBoost: 데이터 누수를 막는 두 가지 장치 영상 대표 이미지

핵심 메시지

  • CatBoost는 2017년 얀덱스가 공개한 부스팅 트리 계열 알고리즘으로, 큰 표 형태 데이터에 바로 쓰기 쉬운 편이다.
  • 결측값과 범주형 변수를 알고리즘이 알아서 처리하고 병렬화가 잘 되는 점이 실무에서의 장점으로 꼽힌다.
  • 범주를 타깃 평균으로 바꾸는 인코딩은 편하지만, 학습에 정답을 끌어 쓰는 데이터 누수를 만들어 과적합으로 이어진다.
  • 확장 평균 타깃 인코딩은 현재 행 앞에 등장한 행들만으로 누적합과 누적 개수를 계산해 누수의 영향을 줄인다.
  • 순서형 부스팅은 기울기와 헤시안을 계산할 때 해당 표본을 제외해, 부스팅 반복이 만드는 누수와 과적합을 줄인다.

쉽게 이해하기

CatBoost는 2017년 러시아 기업 얀덱스가 발표한 부스팅 트리 알고리즘이다. 영상은 이 알고리즘이 오늘날 큰 표 형태 데이터에 가장 쓰기 쉬운 지도학습 도구일 수 있다고 소개한다. 병렬화가 잘 되고 결측값과 범주형 변수를 자동으로 처리하며, 학습에 쓸 수 있는 상태로 정리된 데이터라면 별다른 손질 없이도 좋은 결과를 얻는 경우가 많다는 것이다.

CatBoost가 새로 들여온 것은 두 가지다. 하나는 범주형 변수를 효율적으로 숫자로 바꾸는 타깃 인코딩 기법이고, 다른 하나는 순서형 부스팅이다. 두 기법 모두 데이터 누수라는 같은 문제를 겨냥한다. 부스팅은 이전 반복에서 측정한 오차를 다음 학습에 쓰는데, 이 과정에서 같은 정답을 반복해 사용하게 되어 학습 데이터에 과하게 맞춰지는 특수한 형태의 누수가 생긴다.

먼저 타깃 인코딩을 보자. 범주를 그 범주에 해당하는 타깃값의 평균으로 바꾸면 범주형 변수를 타깃에 대해 선형에 가깝게 펼 수 있다. 그러나 정답을 이용해 정답을 학습하는 셈이라, 정답이 없는 새 데이터에서는 같은 인코딩을 만들 수 없다. 자기 행을 빼고 같은 범주의 다른 행 평균을 쓰는 방식도 원리상으로는 누수를 피할 것 같지만, 실제로 적용해 보면 여전히 누수가 크게 남아 학습 데이터에 과적합된다.

CatBoost가 쓰는 확장 평균 타깃 인코딩은 계산 범위를 앞쪽으로 제한한다. 학습 데이터의 순서를 섞은 배열을 여러 개 만들고, 각 트리를 서로 다른 배열로 학습시킨다. 어떤 행의 인코딩값을 구할 때는 그 배열에서 자기 앞에 나온 같은 범주의 행들만 모아 타깃 누적합을 누적 개수로 나눈다. 순서를 섞을 때마다 같은 값의 인코딩이 달라지므로, 이 무작위성이 누수를 막는 방어막 역할을 한다.

순서형 부스팅도 같은 발상을 분할 기준 계산에 적용한다. 트리를 나눌 위치를 정하려면 각 표본의 기울기와 헤시안이 필요한데, 이 값들은 직전 반복의 손실 함수에서 나온다. 순서형 부스팅은 지금 계산 대상인 표본을 포함하지 않은 손실 함수로 그 표본의 기울기와 헤시안을 구한다. 즉 배열에서 자기 앞에 놓인 표본들만 보고 값을 계산해 분할을 학습하며, 그 결과 학습 데이터에 덜 과적합된다.

주요 인사이트

  • CatBoost의 두 기법은 서로 다른 문제를 푸는 것처럼 보이지만 발상이 같다. 자기 자신의 정답을 계산에 넣지 않고, 순서를 섞은 배열에서 앞쪽 정보만 쓴다는 원칙이 인코딩과 분할 학습 양쪽에 똑같이 적용된다.
  • 자기 행을 뺀 평균이면 누수가 없을 것 같지만 실제로는 그렇지 않다는 지점이 이 설명의 핵심이다. 원리상 안전해 보이는 처리도 검증 성능으로 확인해야 한다는 교훈이 된다.
  • 여러 배열을 쓰는 이유는 성능을 높이려는 것이 아니라 같은 값이 매번 다르게 인코딩되도록 만들기 위한 것이다. 트리마다 데이터 순서를 다르게 두어 인위적인 시간 축을 만든 셈이다.
  • 부스팅 계열이 과적합에 취약하다고 알려진 이유가 이 설명으로 분명해진다. 학습 데이터에서 본 패턴을 반복해 재사용하는 구조 자체가 원인이므로, 정규화 항을 더하는 것만으로는 근본 원인이 사라지지 않는다.
  • 손쉽게 좋은 결과가 나온다는 장점은 데이터가 학습 가능한 상태로 정리돼 있다는 전제 위에서만 성립한다. 영상도 이 조건을 분명히 달아두고 있다.

자주 묻는 질문

타깃 인코딩에서 말하는 데이터 누수란 무엇인가요?

범주형 변수를 그 범주의 타깃 평균으로 바꾸면 정답 정보를 입력 변수에 섞어 넣게 됩니다. 정답이 없는 새 데이터에서는 같은 방식으로 값을 만들 수 없으므로, 학습 때만 쓸 수 있는 정보를 이용한 셈이 되어 성능이 부풀려집니다.

확장 평균 타깃 인코딩은 어떻게 계산하나요?

학습 데이터의 순서를 섞은 뒤, 각 행의 값을 그 앞에 등장한 같은 범주 행들의 타깃 누적합을 누적 개수로 나눠 구합니다. 자기 행과 뒤쪽 행은 쓰지 않으며, 트리마다 순서가 다르므로 같은 범주라도 인코딩값이 달라집니다.

순서형 부스팅은 기존 부스팅과 무엇이 다른가요?

기존 방식은 직전 반복의 손실에서 모든 표본의 기울기와 헤시안을 구해 다음 트리를 학습합니다. 순서형 부스팅은 어떤 표본의 값을 구할 때 그 표본이 빠진 손실 함수를 쓰고, 배열에서 앞에 놓인 표본들만 참고해 분할 기준을 정합니다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗

관련 AI 소식