CatBoost
CatBoost, kategorik özellikleri sıralı hedef istatistikleriyle kodlayan ve simetrik ağaçlar büyüten, Yandex'in açık kaynaklı gradyan artırma kütüphanesidir.
CatBoost, Yandex tarafından geliştirilen ve 2017'de yayımlanan, karar ağaçları için açık kaynaklı bir gradyan artırma kütüphanesidir. Adı "kategorik artırma"dan gelir: şehir, ürün kimliği veya cihaz türü gibi kategorik sütunları ham metin olarak kabul edip dâhili olarak sayılara dönüştürür; böylece tablo verilerinin eğitim öncesinde manuel tek sıcak veya hedef kodlamasıyla dönüştürülmesi gerekmez. NeurIPS 2018 makalesindeki sıralı hedef istatistikleri ve sıralı artırma adlı iki fikir, her eğitim satırının kendi etiketini o satırı uydurmak için kullanılan sayılardan çıkarır; bu sızıntı hem basit hedef kodlamasını hem de standart artırmayı yanlı hâle getirir. CatBoost, CPU'larda ve GPU'larda çalışır; Python, R ve komut satırı arayüzleri sunar ve sınıflandırma, regresyon ve sıralama işlemlerini destekler.
CatBoost Kategorik Özellikleri Nasıl Kodlar?#
Tek sıcak kodlama her kategori için bir sütun oluşturur; bu, satıcı veya kullanıcı kimliği gibi binlerce değere sahip bir özellikte kullanışsız hâle gelir. Hedef kodlama her kategoriyi o kategorideki satırların ortalama etiketiyle değiştirir. Bu yöntem yer kazandırır ama yanıtı sızdırır: bir satırın kendi etiketi, onu tanımlayan sayının parçasıdır; dolayısıyla model yeni verilerde başarısız olan bir kestirme öğrenir. Bu, aşırı öğrenme olarak ortaya çıkan bir veri sızıntısı türüdür ve en çok nadir kategorilerde görülür.
CatBoost'un sıralı hedef istatistikleri, eğitim satırlarının rastgele bir permütasyonunu kullanarak bu sorunu çözer. Her satırın kategorisi yalnızca permütasyonda ondan önce gelen satırların etiketleriyle kodlanır ve bir önsel değere doğru yumuşatılır; böylece hiçbir satır kendi etiketini görmez. CatBoost bunu birkaç permütasyon üzerinde yineler, çok az sayıda farklı değere sahip özelliklere tek sıcak kodlama uygular ve şehir ile cihaz türünün birleşimi gibi kategorik özellik kombinasyonlarını eğitim sırasında yeni özellikler olarak açgözlü biçimde oluşturur.
CatBoost Python paketinde, kategorik sütunlar cat_features aracılığıyla adlarıyla aktarılır. Bu örnek, 50 abonelik planının her birine gizli bir müşteri kaybı oranı atar ve modelin bu oranları ham plan adlarından çıkarıp çıkaramadığını denetler:
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))Betik, 0.05 ve 0.60 gerçek oranlarını, 0.06 ve 0.59 tahmin oranlarını yazdırır. Model, plan başına yalnızca yaklaşık 100 eğitim satırı kullanarak her planın müşteri kaybı oranını ham metin sütunundan çıkardı.
Sıralı Artırma ve Simetrik Ağaçlar#
Standart gradyan artırmada her yeni ağacın hedefleri, yani kayıp gradyanları, önceki ağaçların uydurulduğu satırlardan hesaplanır; bu da CatBoost yazarlarının tahmin kayması dediği bir etkiyle gradyanları yanlı hâle getirir. Sıralı artırma permütasyon yöntemini yeniden uygular: her satırın gradyanı, yalnızca permütasyonda ondan önceki satırlarda eğitilmiş bir modelden gelir. Bu, boosting_type="Ordered" adlı bir eğitim seçeneğidir; hız pahasına küçük veri kümelerinde kaliteyi genellikle artırır. CPU'da varsayılan olarak klasik "Plain" şeması kullanılır; GPU eğitiminde ise çok sınıflı kip hariç, 50.000 satıra kadar olan veri kümeleri için varsayılan "Ordered" şemasıdır.
CatBoost varsayılan olarak simetrik veya oblivious ağaçlar büyütür; bu ağaçlarda aynı derinlikteki her düğüm aynı bölme koşulunu kullanır. Bu nedenle varsayılan derinliği 6 olan bir ağaç, yanıtları 64 yaprak için 6 bitlik bir dizin oluşturan altı evet-hayır testinden ibarettir. Bu yapı tahmini hızlandırır ve her ağacın karmaşıklığını sınırlandırarak bir tür düzenlileştirme sağlar. grow_policy parametresi, veri kümesinin daha az kısıtlı ağaçlara ihtiyaç duyması hâlinde derinlik öncelikli veya yaprak öncelikli büyümeye geçer.
Gerçek Dünya Uygulamaları#
- Kredi riski: Kredi verenler, yüzlerce meslek kodunu tek sıcak kodlamayla dönüştürmeden temerrüt tahmini yapmak için meslek, bölge ve kredi amacı gibi kategorik başvuru sahibi alanlarını sayısal gelir ve borç değerleriyle birleştirir.
- Sıralama ve öneriler: CatBoost, bir öneri sisteminde kullanıcı, öğe ve bağlam özelliklerinden tahmin edilen ilgi düzeyine göre arama sonuçlarını veya ürünleri sıralamak için kullanılan YetiRank gibi sıralama kayıpları sunar.
- Gayrimenkul değerleme: Özel eğitilmiş bir YOLO26 algılayıcısı, ilan fotoğraflarındaki havuz veya güneş paneli gibi olanakları sayabilir; bu sayılar da mahalle ve mülk türü gibi kategorik sütunların yanında, CatBoost fiyat modeline sayısal sütunlar olarak girer.
CatBoost, XGBoost ve LightGBM Karşılaştırması#
Her üç kütüphane de ağaçlardan oluşan bir topluluk oluşturur ve her ağaç kendinden önceki ağaçların hatalarını düzeltir; bu yönüyle bağımsız eğitilmiş ağaçlara sahip rastgele ormandan ayrılırlar.
- XGBoost: Varsayılan olarak ağaçları katman katman büyütür ve amaç fonksiyonuna L1 ve L2 düzenlileştirmesi ekler. Yerel kategorik özellik desteği sonraki sürümlerde geldi; birçok işlem hattı hâlâ kategorileri eğitim öncesinde kodlar.
- LightGBM: Kaybı en çok azaltan yaprağı bölerek ağaçları yaprak öncelikli büyütür ve özellikleri histogramlara ayırır; bu da büyük veri kümelerinde hız sağlar. Tamsayılarla kodlanmış kategorik sütunları da yerel olarak kabul eder.
- CatBoost: Simetrik ağaçlar oluşturur, kategorileri sıralı hedef istatistikleriyle kodlar ve hiperparametre ayarı yapılmadan da güçlü sonuçlar verir. Varsayılanları 1.000 ağaç ve 6 derinliktir; öğrenme oranı, log loss, çok sınıflı ve RMSE amaçlarında iterasyon sayısına göre otomatik seçilir.










