Random Forest
Rastgele orman, sınıflandırma ve regresyon için her biri önyükleme örneğiyle ve rastgele özellik bölmeleriyle oluşturulmuş çok sayıda karar ağacının sonuçlarının ortalamasını alır.
Rastgele orman, aynı verinin rastgele çeşitleri üzerinde çok sayıda karar ağacı eğiten ve tahminlerini sınıflandırmada oylama ya da ortalama sınıf olasılığıyla, regresyonda ise ortalamayla birleştiren bir denetimli öğrenme algoritmasıdır. Leo Breiman yöntemi, daha önce geliştirdiği bagging tekniği üzerine kurarak 2001 tarihli Random Forests makalesinde açıkladı. Tek bir derin ağaç eğitim satırlarını ezberler; bu nedenle verideki küçük değişiklikler tahminlerini büyük ölçüde değiştirir. Her biri farklı hatalar yapan yüzlerce ağacın ortalamasını almak, bu varyansın büyük bölümünü ortadan kaldırır ve rastgele ormanı tablo verileri için en güvenilir varsayılan modellerden biri yapar. Özellik ölçeklendirmesi gerektirmez, özellikler arasındaki doğrusal olmayan etkileşimleri işler ve daha fazla ağaç eklendikçe test hatası dengelenir.
Rastgele Orman Nasıl Çalışır#
Rastgele orman, ağaç eğitimine iki rastgelelik kaynağı ekler; çünkü bir topluluk, üyeleri farklı hatalar yaptığında işe yarar. Ardından ağaçları birleştirir:
- Bootstrap toplulaştırması (bagging): Her ağaç, eğitim verilerinden yerine koyarak çekilen ve aynı büyüklükte olan satır kümesiyle, yani bir bootstrap örneklemiyle eğitilir. Bazı satırlar birkaç kez görünür; satırların yaklaşık %37'si (1/e oranı) ise belirli bir örnekleme hiç girmez.
- Rastgele özellik alt kümeleri: Her bölmede bir ağaç, özelliklerin yalnızca rastgele bir alt kümesini değerlendirir. Scikit-learn sınıflandırıcısı varsayılan olarak özellik sayısının karekökünü kullanır; bu nedenle 100 özellikli bir veri kümesinde her bölme için 10 aday bulunur. Regresör ise varsayılan olarak tüm özellikleri değerlendirir. Böylece baskın bir özellik her ağacın tepesinde yer alamaz ve ağaçlar arasındaki korelasyon azalır.
- Birleştirme: Breiman'ın özgün yöntemi, ağaçların çoğunluk oyunu alır. Scikit-learn uygulaması bunun yerine tüm ağaçların sınıf olasılıklarının ortalamasını alır; regresyon ormanları ise ağaçların sayısal tahminlerinin ortalamasını hesaplar.
Ağaçlar derinlemesine büyütülür ve budanmaz; bu nedenle her birinin yanlılığı düşük, varyansı yüksektir. Korelasyonsuz çok sayıda ağacın ortalamasını almak, yanlılığı düşük tutarken varyansı azaltır; bu, yanlılık-varyans ödünleşiminde elverişli bir yöndür. Ağaçlar birbirinden bağımsız olduğundan, CPU çekirdekleri arasında paralel olarak da eğitilebilirler.
Torba Dışı Hata ve Özellik Önem Düzeyi#
Bir ağacın hiç görmediği satırlar, yerleşik bir test kümesi görevi görür. Torba dışı (OOB) puan, her eğitim satırını yalnızca bootstrap örneklemlerinde o satırın yer almadığı ağaçları kullanarak tahmin eder; böylece ayrı bir doğrulama kümesini ayırmadan görülmemiş verilerdeki doğruluğu tahmin eder. Ormanlar ayrıca özellik önem düzeyini de bildirir. Varsayılan safsızlık temelli önem ölçüsü, her özelliğin tüm bölmelerde safsızlığı ne kadar azalttığını ölçer ve çok sayıda benzersiz değeri olan özellikleri kayırır. Bu nedenle özellikleri sıralarken, bir özelliği karıştırdıktan sonra puanın ne kadar düştüğünü ölçen permütasyon önem düzeyi daha güvenilir bir tercihtir.
Bu örnek, paket içindeki meme kanseri veri kümesinde 5 katlı çapraz doğrulama kullanarak tam büyütülmüş bir ağacı scikit-learn rastgele ormanıyla karşılaştırır ve ardından ormanın OOB puanını okur:
from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier
# 569 tumors described by 30 numeric features, labeled malignant or benign
X, y = load_breast_cancer(return_X_y=True)
# One fully grown tree vs. a forest of 300 trees on bootstrap samples
tree = DecisionTreeClassifier(random_state=0)
forest = RandomForestClassifier(n_estimators=300, oob_score=True, random_state=0)
# Compare 5-fold cross-validated accuracy
print(f"Single tree: {cross_val_score(tree, X, y, cv=5).mean():.3f}")
print(f"Forest: {cross_val_score(forest, X, y, cv=5).mean():.3f}")
# Out-of-bag score: each row is predicted only by trees that never trained on it
forest.fit(X, y)
print(f"OOB score: {forest.oob_score_:.3f}")Betik, tek ağaç için 0.917, orman için 0.963 ve OOB puanı olarak 0.965 yazdırır. Orman, ağacın hata oranını %8.3'ten %3.7'ye düşürür; OOB tahmini ise tek bir eğitim çalışmasındaki çapraz doğrulanmış doğruluğun 0.002 yakınına ulaşır.
Gerçek Dünya Uygulamaları#
- Kredi riski ve dolandırıcılık tespiti: Bankalar kredi başvurularını ve işlemleri gelir, hesap yaşı ve harcama alışkanlıkları gibi tablo kayıtları üzerinden puanlar; ormanın olasılık çıktısı karar eşiğini belirler.
- Sağlık risk tahmini: Klinik modeller hasta kayıtlarından yeniden hastaneye yatış gibi sonuçları tahmin eder; permütasyon önem düzeyi de her tahmini hangi ölçümlerin belirlediğini gösterir.
- Uydu görüntüsü analizi: Rastgele ormanlar, arazi örtüsü haritalamada uzun süredir tercih edilen bir yöntemdir; her pikseli veya arazi parçasını spektral bant değerlerine ve bitki örtüsü endekslerine göre sınıflandırır.
- Ürün verimi modelleme: Bir YOLO26 algılayıcısı tarla görüntülerindeki meyveleri veya bitkileri sayar; her nesne için bir tespit yapar. Parsel başına bu sayımlar, verimi tahmin eden bir rastgele ormana sütunlar hâlinde eklenen toprak ve hava durumu ölçümlerine katılır.
Rastgele Orman ve İlgili Yöntemler#
- Tek karar ağacı: Bir ağacı if-then kuralları dizisi olarak okumak kolaydır; ancak verideki küçük değişiklikler bambaşka bir ağaç oluşturabilir. Orman, çok daha düşük varyans karşılığında bu okunabilirlikten ödün verir.
- Gradyan artırma: XGBoost, LightGBM ve CatBoost sığ ağaçları art arda kurar; her ağaç, kendisinden önce gelenlerin hatalarını düzeltir. Ayarlama yapıldıktan sonra artırma, tablo verisi kıyaslamalarında sıklıkla daha yüksek puan alır; rastgele ormanın bağımsız ağaçlarıysa paralel olarak eğitilir ve varsayılan ayarlarla güçlü sonuçlar verir.
- Tablo verileri için temel modeller: Önceden eğitilmiş Transformer modelleri, her veri kümesi için ayrı bir model eğitmeden yeni bir tabloda tek ileri geçişte tahmin yapar ve artık küçük tablolarda ayarlanmış ağaç topluluklarıyla yarışır.
- Aşırı rastgeleleştirilmiş ağaçlar: Ek ağaçlar, her aday özellik için en iyi eşiği aramak yerine rastgele bir eşik belirler ve bu rastgele bölmeler arasından en iyisini tutar. Scikit-learn varsayılan olarak ağaçları bootstrap örneklemesi olmadan tüm veri kümesinde eğitir; eşik aramasını atlamak, aynı büyüklükteki rastgele ormana kıyasla daha hızlı eğitilmelerini sağlar.










