Giriş: Karar Ağaçlarında Categorical Değişkenler Neden Önemli

Karar ağacı modelleri, paydaşların neden bir tahminin yapıldığına izin verir, ancak, karar ağacının performansı ve güvenilirliği, kedinin nasıl işlemlendiğini ve yasal verileri nasıl etkilediğine bağlı olarak, doğrulanmış bir ağaç algoritmalarının (Dönetici) kontrol etmesi için doğru bir şekilde ayarlanabilir.

Categorical Değişkenleri Anlamak

Categorical değişkenler sınırlı, sabit bir sayıda olası değer alabilecek verileri temsil eder. İki ana türe girerler:

  • [FONT=0]Nominal değişkenleri - hiçbir intrinsic düzenle kategoriler (örneğin, renk: kırmızı, mavi, yeşil; şehir: New York, Londra, Tokyo).
  • [FONT:0)Ordinal değişkenler[[Dönemli: 1)) - açık, anlamlı bir düzenle kategoriler (örneğin, eğitim seviyesi: lise, lisans, usta, yüksek, yüksek.

Ayrılık kritiktir, çünkü her tür bir kategorinin mevcut olup olmadığını korumak için farklı bir kodlama stratejisi gerektirir. Karar ağaçları sipariş edilen olarak tam olarak kategorik edilebilir.Bu özellik, kodlama yönteminin belirli bir şekilde seçilmesiyle ilgilidir.

Common Encoding Yöntemleri

Çeşitli kodlama teknikleri var, her biri boyutsallık, yorumlanabilirlik ve karar ağacı algoritmaları ile uyumluluk açısından. Aşağıda en yaygın kullanılan yöntemleri inceleyeceğiz.

Etiket Encoding (Ordinal Encoding)

Etiket kodlama her kategoriye eşsiz bir tamsayı atar, tipik olarak 0, 1, 2, ... K kategorileri için. Bu yöntem basit ve hafıza verimlidir, çünkü “ömertlor”dan “ömertçeli veyadinal bir ilişki anlamına gelir, bu da ayrımı yanlış anlamalı, örneğin nominal bir ağaç, alıntılamanın “0) site level > = 2[FONT) “seçmiş”den ayrıdır.

[FONT:0] Ne zaman kullanılır:[Dönetici:0) Yalnızca tamsayın düzeninin gerçek hiyerarşiyi yansıttığı veya kullanım için doğru siparişi elde etmenizi gerektirir. Birçok scikit-öğrenme uygulamaları, önceden tanımlanmış kategoriler listesi ile manuel olarak tedarik etmenizi gerektirir.

One-Hot Encoding

Birhot kodlama K ikilisi mum değişkenleri yaratır, her biri bir kategorinin varlığına sahip (1) veya yokluğu (0) olarak çalışır ve nominal veriler için genellikle güvenlidir.Sevizyonlar dahil olmak üzere en karar ağacı kütüphaneleri, scikit-do'nun varolt:1'i de dahil olmak üzere, bölünmüşler basit “is kategorisi mevcut testleri”dir.

[FONT:0]Drawbacks:[[Dönder:0][Drawbacks:[[DFLT:0)[[FONTDrawbacks:[[DFLT:1)) Bu, 999 sütunlar tarafından özelliği şişirme, artan hafıza kullanımı ve eğitim süresine yol açabilir.

[FONT:0)Uygulamalı ipucu:[Dönetici:[Dönetici:0)) Bir tek kategoriye (örneğin, pandas get dummies) tüm K sütunlarını tutmanın ardından şifreler genellikle iyi olur, çünkü ağaç onları bağımsız olarak tedavi eder.

Frekans / Hedef Encoding

Frekans kodlama, her kategoriyi eğitim setinde (veya göreceli frekansı) olarak değiştirir. Hedef, bu kategori için hedef değişkenin (veya düzgün bir versiyon) anlamına gelen kategorinin yerini alır.Bu yöntemler yüksek kartel özellikleri için popülerdir, çünkü özellik matrisini genişletmekten kaçınırlar.

[FONT:0)Warning:[Dönetici:[Dönlendirme:[Dönlendirme:[Dönlendirme:[Dönlendirme) ve CatBoost, bu riski azaltan düzenlileştirme ile ilgili olarak, hedefin üzerinden ayrı bir giriş seti veya hedefle ilgili bir geçiş planı kullanarak, hedef anlamına gelir.

Frekans kodlama hedefi sızdırmıyor, ancak kategori ve hedef arasındaki korelasyon kaybeder. Frekansın kendisi tahmin edildiğinde en iyi şekilde çalışır (örneğin, nadir kategoriler aşırı davranışları gösterir).

İkili Encoding

İkili kodlama ilk kategorileri tam olarak tam olarak etiketlere dönüştürür (K-1) ve sonra her tamsayı ikili formda temsil eder, log2 (K) yeni sütunlar yaratır.Bir-hot ve etiket encoding arasında bir uzlaşmadır: bir-hot'dan daha az özellik sunar, ancak daha az yorumlanabilir bölünmüşler. Bazı uygulayıcılar yüksek karta dayalı modeller için etkili bulur.

Encoding

Özellik (veya eleme hilesi) her kategoriye bir özellik uygular ve hafıza kısıtlamalarının ciddi ölçüde azaltılması ve kategori sayısı büyük olduğunda kullanışlıdır (örneğin IP adresleri). ancak, çarpışmalar (farklı kategoriler aynı şekilde haritalanabilir).

Karar Ağacı Kütüphanelerinde Yerli Destek

Modern gradient güçlendirme kütüphaneleri genellikle dışlayıcı el kitapçığını anlamak için yerli kategorik kullanım geliştirdi. Her kütüphanenin zaman tasarruf edebileceğini ve doğruluğunu geliştirmek.

scikit learning (DecisionTree / RandomForest / GradientBoosting)

scikitlearn, 0:0)-[Döneticileri) yerli olarak kategorize eden özellikleri doğrudan doğruya doğru kullanan ve bu, klasik karara dayalı uygulama ile sınırlı olmalıdır.

[FONT:0]scikit- OrdinalEncoder Belgeleri).

IşıkGBM

LightGBM, kategorik özellikler için mükemmel bir yerel desteğe sahiptir. Sadece özelliği sadece aritFLT:6 olarak ilan edersiniz (veya yüksek kartel sütunları için).

[FONT:0)IşıkGBM kediciliğisel özellik desteği).

CatBoost

CatBoost özellikle kedisel özellikleri en uygun şekilde işlemek için tasarlanmıştır.It is (19)FLT:0) sipariş edilen hedef, hedef kodlamayı azaltan ve aşırı yüklemeyi sağlayan bir yaklaşımla, CatBoost özellikle küçük veri setleri ile kategorize edilebilir.

[FONT:0)Katalınlık katalyasal özellikleri belgesi).

XGBoost

1.6 versiyonu itibariyle XGBoost, XGBoost, XGBoost ile kategorik özellikler için deneysel destek tanıttı; birçok uygulayıcı XGBoost ile el ele geçirmeye devam ediyor.

Doğru kodlama stratejisini seçin

Bir kodlama yöntemi seçmek çeşitli faktörlere bağlıdır:

  • [FONT=0)Cardinality[[Dönetici:0)[Dönetici için] - Düşük kardinallik nominal özellikler (≤10 kategoriler), bir-hot encoding basit ve etkilidir. orta kartinality (10-100), ikili enkoding veya hedef kodlama (>100), yerel destek (Irak / Boost) veya frekans / hedef kodlama.
  • [FONT=0]Model kütüphanesi – Eğer zaten CatBoost veya LightGBM kullanıyorsanız, kütüphanenin kediciliği ile ilgili işlemleri yapabilmesine izin verin.
  • [[Döneticiler [Döneticiler)[[Döneticiler) veya kodlama olmadan etiketlenmeli etiket nominal veriler için risklidir.
  • [FONT=0) Sorumluluk[Dönetici[Döneticiler)[Döneticiler) - Bir-hot kodlanmış özellikler şeffaf bölmeler (örneğin, 03:11). İkili veya hedef kodlama, tahmin odaklı görevler için kabul edilebilirlik azaltır, ancak düzenleyici gereklilikler için kabul edilebilir.
  • [FONT:0]Tree derinliği ve aşırılık[Dönetici:0)[Dönetici:0)[Dönetici:0)))[Dönetici olmayanlar için aşırı yüklemeye neden olabilir; bir-hot kodlama nadir kategoriler için çok sığ bölmelere yol açabilir. Cross-validation ve hiperparametre ayarlanma ve hiperparametre daha önemli hale gelir.

YüksekCardinality Özellikler

Yüksek kardinallik kategorical özellikler (örneğin, ZIP kodları, kullanıcı kimlikleri, ürün kimlikleri) ünlü olarak zordur. Geleneksel bir tek kullanımlık, binlerce dummy sütunu yaratır, birçok kişi sadece birkaç satırda görünür.

  • hafıza kullanımını ve eğitim süresini dramatik bir şekilde artırın.
  • Ağacın genelleştirilmeyen nadir kategorilere bölünmesi nedeniyle.
  • Model, üretimde görünen yeni kategorilere duyarlı hale getirir (bildikleri bir “göpek” yakalama ile uğraşırsa).

[FONT=0)Ziyaretler şunları içerir:[Dönem: 1 )

  1. [FONT:0]Target, ile uyumlu hale getirmekle birlikte – Hedefle her kategoriyi hedefle değiştirin, ancak küresel sözlere karşı küçük kategoriler için tahminler küçültün.
  2. [FONT:0]Frequency encoding[[DÜT:1) – Her kategorinin sayılarını sayısal bir özellik olarak kullanın. Bu genellikle ağaç modelleriyle iyi çalışır, çünkü sık sık kategoriler güvenilir tahminciler olma olasılığı daha yüksektir.
  3. [FONT:0)Ana Sayfa[Dönetici] - Harita kategorileri sabit bir dizi bine kadar (örneğin, 2^16) bir hash işlevi kullanarak. Bu çok yüksek kardinality için pratik bir seçimdir, ancak çarpışmalardan gürültüyü ortaya çıkarabilir.
  4. [FONT:0) Gruplama nadir kategoriler[[[Dönetici: 1) Daha az görünen tüm kategoriler birleştirin, tek bir “başka” grubuna 5 kez katılın. Bu, kardinality ve modeli azaltır.
  5. [FONT:0] Ağaç özel yöntemleri[[Dönetici:0][Dönetici: 0,3|Döneticileri, özellik matrisi patlamadan birkaç bine kadar etkin bir şekilde idare edebilir, çünkü grup kategorilerine içsel olarak öğrenirler.

Model Performansı ve Yorumability Üzerine Etkisi

Enktör yöntemi doğrudan doğruyu etkiler ve karar ağaçlarının yorumlanabilirliğini etkiler. Örneğin, bir-hot kodlama verimi açıklamak için kolaylaşır: “Eğer meslek daha sonra “mühendislik” dir.

Bir performans perspektifinden, seçim hangi değişkenlerin kök bölmeleri olarak seçildiğini değiştirebilir.Incorrect encoding, ağacı daha sık veya daha yüksek kodlanmış değerlere sahip olan özellikleri lehine, suboptimal bölmelere yol açabilir. Deneyler genellikle doğru veya encoding kullananlar vardır (örneğin, haritalama eğitimi level to 0,1,2,3)

[FONT:0)Araştırma bulguları: [Dönetici:0) A 2020 çalışması, CatBoost'in yerleşik en düşük kartelasyon için en iyi şekilde yapılan en düşük genelleme hatasının çeşitli veri setleri boyunca elde edildiğini tespit etti, hedef kodlama ile takip etti, ancak bir tane en düşük kartelasyon için en iyi performans gösterdi.

Pratik İpuçları ve En İyi Uygulamaları

  • [FONT:0)Always, kodlamadan önce bölünür (Dönetici) – Compute encoding İstatistikler (e.g., hedef, frekanslar) sadece eğitim setinde aynı haritaları test setine uygular.
  • [FONT:0) Bir boru hattını kullanın[[Dönetici: 1). – In scikit-learn, birleştirir.Ücretsizler ve şifreleyicileri bir şekilde veri sızıntılarından ve daha basit bir şekilde eşdeğersizliğe dönüştürmek için.
  • [FONT:0] görünmeyen kategoriler için kontrol edin[[Dönetici: 1) Üretimde, yeni kategoriler bir stratejiye karar verebilir: göz ardı edilebilir (köpücük) özel bir “bilinçli” değerine veya bir düşüşe devam edin (örneğin, küresel hedef kodlama için anlamına gelir).
  • [[Dönetici:0)Test multiple encodings[[Dönder:)) - En iyi yöntem, veri kümesine bağlıdır.Bir hot, etiket, frekans ve hedef kodlama ile küçük bir çapraz-validasyon deneyi çalıştırın.
  • [FONT:0] Mümkün olduğunda yerli destek (Dönetici:0)[Dönetici:0))))) - Model kütüphaneyi seçmek, CatBoost veya LightGBM'yi manuel enkoding baş ağrısından kaçınmak için, özellikle yüksek kardinal özelliklerle.
  • [FONT:0)Pekiz verileri için etiket kodlaması ([Dönetici:0)) – Neredeyse her zaman performansa zarar verir.Eğer etiket kodlaması (örneğin, bellek kısıtlamaları nedeniyle), en azından etiket atamasını dikkatli bir şekilde azaltmak için kullanırsanız, en azından şaşırtıcı sipariş etkisini azaltmak için.
  • [FONT:0]Bin veya grup nadir kategoriler[[Dönem: 1) İyi bir başparma kuralı: eğitim verilerinden% 1'den daha az bir grup haline gelen kategoriler bir araya getiriyor. Bu, gürültüyü azaltır ve modeli stabilize eder.
  • [FONT:0) Hedef kodlama için yapılan veriler için yapılan yönlendirmeler[Dönetici:0) - Hedefi hesaplamak veya ayrı katlamaları kullanmak, veya siparişi uygulayan kütüphaneleri kullanmak (örneğin CatBoost) tarafından kullanılan hedef, geçerlilik ve fakir genelleştirme sırasında aşırı dereceden performansa neden olabilir.

Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç

Categorical değişkenler birçok gerçek dünya veri setlerinin temel bir parçasıdır.Dörtüncü ağaç modellerinin sağlam ve yorumlanabilir olmasına rağmen, başarı kategorik özellikleri doğru şekilde hazırlamakta ve bu makale ana kodlama stratejilerini ele almıştır - label, bir-hot, frekans, hedef, ikili ve popüler ağaç tabanlı kütüphanelerin yerli yeteneklerinin yanı sıra.

  • Değişken türüne (korunma vs. nominal) katılın.
  • Yüksek kardinal özellikler için, hedefin düzenlileştirilmesi veya yerleşik kategorik destekle kütüphaneleri kullanmayı tercih edin.
  • Hesaplama tarafından veri sızıntılarından kaçının sadece eğitim verileri üzerinde.
  • Belirli veri setiniz için en iyi yapılandırma bulmak için çapraz değer kullanarak farklı yöntemler ile deney.

Kedili değişkenleri dikkatlice ele alarak, karar ağacı modellerinin tam potansiyelini açabilirsiniz - ağaçlara bu kadar değerli olan yorumabiliteyi sürdürürken daha iyi tahmin edici doğruluk elde edebilirsiniz.