Ultralytics YOLO27: 대기자 명단에 등록하세요.
YOLO 라이선스 받기
Ultralytics 용어집으로 돌아가기

CatBoost

CatBoost는 Yandex의 오픈 소스 그래디언트 부스팅 라이브러리로, 순서가 반영된 타깃 통계로 범주형 특성을 인코딩하고 대칭 트리를 성장시킵니다.

CatBoost는 Yandex가 개발해 2017년에 공개한 결정 트리용 오픈 소스 그래디언트 부스팅 라이브러리입니다. 이름은 "범주형 부스팅"에서 유래했습니다. 도시, 제품 ID, 기기 유형과 같은 범주형 열을 원시 문자열로 받아 내부적으로 숫자로 변환하므로, 학습 전에 테이블형 데이터에 수동 원-핫 인코딩이나 타깃 인코딩을 적용할 필요가 없습니다. NeurIPS 2018 논문의 두 가지 아이디어인 순서형 타깃 통계와 순서형 부스팅은 각 학습 행의 레이블이 해당 행을 학습하는 데 사용되는 숫자에 포함되지 않도록 합니다. 이러한 누출은 일반 타깃 인코딩과 표준 부스팅 모두에 편향을 일으킵니다. CatBoost는 CPU와 GPU에서 학습할 수 있고 Python, R, 명령줄 인터페이스를 제공하며 분류, 회귀, 랭킹을 지원합니다.

CatBoost의 범주형 특징 인코딩 방식#

원-핫 인코딩은 범주마다 열 하나를 만듭니다. 따라서 판매자 ID나 사용자 ID처럼 값이 수천 개에 이르는 특징에서는 관리하기 어려워집니다. 타깃 인코딩은 각 범주를 해당 범주 행의 평균 레이블로 대체합니다. 간결하지만 행 자체의 레이블이 그 행을 설명하는 숫자에 포함되어 정답이 누출되므로, 새 데이터에서 성능이 떨어지는 지름길을 모델이 학습합니다. 이는 데이터 누출의 한 형태이며 과적합으로 나타나고, 희귀 범주에서 가장 심각합니다.

CatBoost의 순서형 타깃 통계는 학습 행을 무작위로 순열해 이 문제를 해결합니다. 각 행의 범주는 순열에서 해당 행보다 앞선 행의 레이블만을 사용해 인코딩하고 사전 확률 쪽으로 평활화하므로 어떤 행도 자체 레이블을 볼 수 없습니다. CatBoost는 여러 순열에 걸쳐 이 작업을 반복하고, 고유 값이 매우 적은 특징은 원-핫 인코딩하며, 학습 중에 도시와 기기 유형의 교차와 같은 범주형 특징 조합을 새로운 특징으로 탐욕적으로 구성합니다.

CatBoost Python 패키지에서는 cat_features을 통해 범주형 열을 이름으로 전달합니다. 다음 예제는 구독 요금제 50개 각각에 숨겨진 이탈률을 부여하고, 원시 요금제 이름만으로 모델이 해당 비율을 알아내는지 확인합니다.

import numpy as np
import pandas as pd
from catboost import CatBoostClassifier

# Synthetic churn data: each of 50 plans has its own hidden churn rate
rng = np.random.default_rng(0)
rates = rng.uniform(0.05, 0.6, size=50)
plan_ids = rng.integers(0, 50, size=5000)
X = pd.DataFrame({"plan": [f"plan_{i}" for i in plan_ids], "tenure_months": rng.integers(1, 60, size=5000)})
y = rng.random(5000) < rates[plan_ids]

# Raw strings go in directly; CatBoost encodes them with ordered target statistics
model = CatBoostClassifier(iterations=200, depth=4, verbose=0, random_seed=0)
model.fit(X, y, cat_features=["plan"])

# Compare true and predicted churn for the safest and riskiest plans
lo, hi = rates.argmin(), rates.argmax()
probe = pd.DataFrame({"plan": [f"plan_{lo}", f"plan_{hi}"], "tenure_months": [30, 30]})
print("True churn rates:     ", rates[[lo, hi]].round(2))
print("Predicted churn rates:", model.predict_proba(probe)[:, 1].round(2))

스크립트는 실제 비율 0.05와 0.60, 예측 비율 0.06과 0.59를 출력합니다. 요금제당 학습 행이 약 100개뿐인데도 모델은 원시 문자열 열에서 각 요금제의 이탈률을 찾아냈습니다.

순서형 부스팅과 대칭 트리#

표준 그래디언트 부스팅은 새로운 트리의 타깃인 손실의 그래디언트를 이전 트리를 학습한 것과 동일한 행에서 계산하므로 그래디언트에 편향이 생깁니다. CatBoost 저자는 이러한 현상을 예측 시프트라고 부릅니다. 순서형 부스팅은 순열 기법을 다시 적용합니다. 각 행의 그래디언트는 순열에서 해당 행보다 앞선 행만으로 학습한 모델에서 가져옵니다. 이는 학습 옵션인 boosting_type="Ordered"이며, 속도가 느려지는 대신 작은 데이터셋의 품질을 대체로 높여 줍니다. CPU의 기본값은 기존 "Plain" 방식이며, GPU 학습에서는 다중 클래스 모드를 제외하고 행이 50,000개 이하인 데이터셋에 "Ordered"이 기본으로 적용됩니다.

CatBoost는 기본적으로 대칭 트리 또는 망각 트리를 생성하며, 이 트리에서는 같은 깊이의 모든 노드가 동일한 분할 조건을 사용합니다. 따라서 기본 깊이인 6의 트리는 예/아니요 테스트 여섯 개에 불과하며, 그 결과는 64개 리프 중 하나를 가리키는 6비트 인덱스를 구성합니다. 이 구조는 예측을 빠르게 하고 각 트리의 복잡도를 제한하는 정규화 방식입니다. 데이터셋에 제약이 더 적은 트리가 필요하면 grow_policy 파라미터를 사용해 깊이별 또는 리프별 성장을 적용할 수 있습니다.

실제 적용 사례#

  • 신용 위험: 대출 기관은 수백 개의 직업 코드를 원-핫 인코딩하지 않고도 직업, 지역, 대출 목적과 같은 신청자 범주형 필드와 소득 및 부채 금액 같은 수치형 데이터를 결합해 채무 불이행을 예측합니다.
  • 랭킹 및 추천: CatBoost는 YetiRank와 같은 랭킹 손실 함수를 제공하며, 이는 사용자, 항목, 컨텍스트 특징을 바탕으로 예측 관련성에 따라 검색 결과나 제품 순서를 정하는 추천 시스템에 사용됩니다.
  • 부동산 가치 평가: 맞춤 학습한 YOLO26 탐지기는 매물 사진에서 수영장이나 태양광 패널 같은 편의 시설을 셀 수 있으며, 이 수치는 지역이나 부동산 유형 같은 범주형 열과 함께 CatBoost 가격 모델의 수치형 열로 입력됩니다.

CatBoost와 XGBoost 및 LightGBM 비교#

세 라이브러리는 모두 트리의 앙상블을 순차적으로 구성하고, 각 트리가 이전 트리의 오류를 보정합니다. 이 점에서 각 트리를 독립적으로 학습하는 랜덤 포레스트와 다릅니다.

  • XGBoost: 기본적으로 트리를 레벨별로 성장시키며 목적 함수에 L1 및 L2 정규화를 추가합니다. 네이티브 범주형 지원은 이후 버전에 도입되었으며, 여전히 많은 파이프라인이 학습 전에 범주를 인코딩합니다.
  • LightGBM: 손실을 가장 많이 줄이는 리프를 분할하는 리프별 방식으로 트리를 성장시키고, 특징을 히스토그램으로 구간화해 대규모 데이터셋에서 빠르게 작동합니다. 정수로 인코딩된 범주형 열도 네이티브 방식으로 처리합니다.
  • CatBoost: 대칭 트리를 구성하고 순서형 타깃 통계로 범주를 인코딩하며, 하이퍼파라미터 튜닝 전에 설정을 조정하지 않아도 우수한 결과를 제공합니다. 기본값은 깊이 6의 트리 1,000개이며, 로그 손실, 다중 클래스, RMSE 목적 함수에서는 반복 횟수에 따라 학습률을 자동으로 선택합니다.

솔루션 살펴보기

스포츠 분야의 컴퓨터 비전

스포츠 분야의 컴퓨터 비전

Ultralytics YOLO가 선수 및 공 추적, 경기력 분석, 코칭 인사이트, 선수 재활을 통해 스포츠 비전을 구현하는 방법을 알아보세요.
자세히 알아보기
항공 이미지 컴퓨터 비전

항공 이미지 컴퓨터 비전

Ultralytics YOLO를 활용해 드론 및 항공 이미지를 농업, 양식업, 보전, 지리 공간 분석을 위한 실시간 인사이트로 전환하세요.
자세히 알아보기
항공우주 분야의 컴퓨터 비전

항공우주 분야의 컴퓨터 비전

Ultralytics YOLO를 활용해 항공기 검사, 활주로 FOD 감지, 공항 지상 운영, 복합재 결함 감지 등 항공우주 분야에 컴퓨터 비전을 적용하세요.
자세히 알아보기
보안 분야의 컴퓨터 비전

보안 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 모든 시설을 보호하세요. Vision AI는 경계 모니터링, 위협 감지, 번호판 인식, 작업장 안전을 지원합니다.
자세히 알아보기
로보틱스 분야의 컴퓨터 비전

로보틱스 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 더 스마트한 머신을 구현하세요. 로보틱스 분야의 Vision AI는 자율 주행, 인식, 객체 추적, 실시간 제어를 지원합니다.
자세히 알아보기
물류 분야의 컴퓨터 비전

물류 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 물류를 간소화하세요. 비전 AI는 화물 검사, 분류, 차량 추적, 실시간 창고 안전 모니터링을 지원합니다.
자세히 알아보기
리테일 분야의 컴퓨터 비전

리테일 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 리테일의 새로운 가능성을 열어 보세요. 비전 AI는 재고 추적, 선반 모니터링, 대기열 관리, 더욱 심층적인 고객 인사이트를 지원합니다.
자세히 알아보기
의료 분야의 컴퓨터 비전

의료 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 의료 솔루션을 구축하세요. 의료 분야의 비전 AI는 의료 영상 판독을 가속화하고, 진단을 개선하며, 환자 모니터링을 지원합니다.
자세히 알아보기
제조 분야의 컴퓨터 비전

제조 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 제조 공정을 최적화하세요. 비전 AI는 품질 관리, 결함 탐지, PPE 규정 준수, 조립 라인 자동화를 지원합니다.
자세히 알아보기
자동차 분야의 컴퓨터 비전

자동차 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 자동차 분야에 컴퓨터 비전을 적용하세요. 비전 AI는 도로 안전, 운전자 지원, 차량 자동화를 개선해 더 스마트한 도로를 구현합니다.
자세히 알아보기
농업 분야의 컴퓨터 비전

농업 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 스마트 농업에 비전 AI를 도입하세요. 작물 모니터링, 가축 추적, 정밀 농업을 지원하여 더 높은 수확량과 더 스마트한 농업을 실현합니다.
자세히 알아보기

함께 AI의 미래를 만들어 가세요!

머신러닝의 미래와 함께 여정을 시작하세요