Karar Ağacını özellik ithalatı bağlamında yorumlama


9

Sklearn ile oluşturulmuş bir karar ağacı sınıflandırma modelinin karar sürecini tam olarak nasıl anlamaya çalışıyorum. Baktığım 2 ana yön, ağacın bir grafik temsili temsili ve özellik ithalatları listesidir. Anlamadığım şey, özellik öneminin ağaç bağlamında nasıl belirlendiğidir. Örneğin, özellik ithalatlarımın listesi:

Özellik sıralaması: 1. FeatureA (0.300237)

  1. FeatureB (0.166800)

  2. FeatureC (0.092472)

  3. FeatureD (0.075009)

  4. FeatureE (0.068310)

  5. FeatureF (0.067118)

  6. FeatureG (0.066510)

  7. ÖzellikH (0.043502)

  8. FeatureI (0.040281)

  9. FeatureJ (0.039006)

  10. FeatureK (0.032618)

  11. ÖzellikL (0.008136)

  12. FeatureM (0.000000)

Ancak, ağacın tepesine baktığımda şöyle görünüyor:Ağaç Parçacığı

Aslında, "en önemli" olarak sıralanan özelliklerden bazıları ağacın aşağısına kadar görünmez ve ağacın tepesi en düşük sıralı özelliklerden biri olan FeatureJ'dir. Benim saf varsayımım, en önemli özelliklerin en büyük etkiyi elde etmek için ağacın tepesine yakın sıralanmalarıdır. Bu yanlışsa, bir özelliği "önemli" yapan nedir?


1
ilk düğümün soluna ve sağına kaç örnek atanır?
oW_

Yanıtlar:


4

Bir özellik ne kadar önemli olursa, düğümün karar ağacında o kadar yüksek olması gerekli değildir.

Bunun nedeni, bu iki durumun her birinde (önemine göre bölünme) farklı ölçütlerin (örn. Gini Safsızlığı, Entropi-Bilgi Kazancı, MSE vb.) Kullanılabilmesidir.

Örneğin SkLearn, karar ağacındaki düğümlerin Entropy-Information Gain (Entropi-Bilgi Kazanımı) kriterine (bkz. criterion& 'entropy'At SkLearn) göre bölünmesini tercih ederken, özelliklerin önemi Gini'nin ortalama düşüşü olan Gini Önemi tarafından verilir. Rastgele ormanın tüm ağaçlarında belirli bir değişken için safsızlık (bkz feature_importances_. SkLearnVe burada ).

Ben haklıyım, lütfen adresindeki SkLearnaynı özelliklerin önemi Gini Önemi verilir iken Gini Safsızlık ve Gini Önemi özdeş değildir çünkü sen Gini Safsızlık kriterine göre karar ağacına düğüm bölme yapmayı tercih bile geçerlidir ( Gini Önemi hakkında Stackoverflow ile ilgili olarak buna ve buna bakınız ).


Zaten @oW_ orijinal soruya oldukça doğru bir cevap verdi ama okuyucu için daha özlü ve anlaşılır bir şekilde yazmanın iyi olduğunu düşündüm.
Dışarıda

3

Scikit-learn'da özellik önemi, düğüm safsızlığındaki azalmadır. Anahtar önemini sadece düğüm düzeyinde ölçmesidir. Daha sonra, tüm düğümler o düğüme kaç örnek ulaştığında ağırlıklandırılır.

Bu nedenle, ilk bölünmeden sonra sadece birkaç örnek sol düğümde kalırsa, bu J'nin en önemli özellik olduğu anlamına gelmeyebilir, çünkü sol düğümdeki kazanç sadece çok az örneği etkileyebilir. Ayrıca, her bir düğümdeki örnek sayısını yazdırırsanız, neler olduğunu daha iyi görebilirsiniz.


2

Bir düğümün ağaç üzerinde daha düşük olması, mutlaka daha az önemli olduğu anlamına gelmez. Sci-kitlearn'deki özellik önemi, bir düğümün sınıfları nasıl tamamen ayırdığı ile hesaplanır (Gini indeksi). Kırpılan ağacınızda bile A'nın J'nin bir keresine kıyasla üç kez ayrıldığını ve entropi skorlarının (Gini ile benzer bir saflık ölçüsü) A düğümlerinde J'den biraz daha yüksek olduğunu fark edeceksiniz.

Ancak, yalnızca bir düğümü seçebilseydiniz, J'yi seçersiniz çünkü bu en iyi tahminlerle sonuçlanır. Ancak, birkaç farklı karar vermek için birçok düğüme sahip olma seçeneğiniz olsaydı, A en iyi seçim olurdu.


Yani layman'ın terimleriyle, sadece 2 olası sınıflandırma olduğunu varsayalım (bunlara 0 ve 1 diyelim), ağacın tabanındaki özellik, örnekleri en iyi 2 gruba ayıran özellik olacaktır (yani en iyi bölme işi) 1'ler ağacın bir tarafına ve 0'lar diğer tarafa). Bu doğru mu? Bu bağlamda 0'ları ve 1'leri ayırmanın en iyisi değilse, hangi özellik öneminin sıralandığı konusunda hala net değilim
Tim Lindsey

-2

Değişken önemi, değişken kaldırıldığında model doğruluğundaki azalmayla ölçülür. Değişken olmadan yeni modelle oluşturulan yeni karar ağacı orijinal ağaçtan çok farklı görünebilir. Diyagramınızdaki bölme kararı, modeldeki tüm değişkenler dikkate alınarak yapılır.

Kökte (ve diğer düğümlerde) bölünecek değişken safsızlıkla ölçülür. İyi saflık (örneğin: sol daldaki her şey aynı hedef değere sahiptir) iyi doğruluk için bir garanti değildir. Verileriniz eğri olabilir, sağ dalınızın sol dalınızdan daha fazla yanıtı olabilir. Bu nedenle, sol dalı doğru bir şekilde sınıflandırmak iyi değildir, aynı zamanda doğru dalı da dikkate almamız gerekir. Bu nedenle, bölme değişkeni, genel model doğruluğu için önemli bir değişken olabilir veya olmayabilir.

Değişken önem, değişken seçim için daha iyi bir önlemdir.


2
Scikit-öğrenmede böyle uygulandığını sanmıyorum. Burada özellik önemi "gini önemi" olarak ölçülür, yani düğümün safsızlığında o düğüme ulaşan örneklerin oranı ile toplam azalma.
oW_

"Bir özelliğin önemi, o özelliğin getirdiği kriterin (normalleştirilmiş) toplam azalması olarak hesaplanır. Gini önemi olarak da bilinir." - scikit-learn.org/stable/modules/generated/…
Afflatus
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.