XGBoost öneminin çıktısını nasıl yorumlayabilirim?


36

Bir xgboost modeli koştum. Çıktısını nasıl yorumlayacağımı tam olarak bilmiyorum xgb.importance.

Kazanç, Kapak ve Frekansın anlamı nedir ve bunları nasıl yorumluyoruz?

Ayrıca, Split, RealCover ve RealCover% ne anlama geliyor? Burada bazı ekstra parametrelerim var

Özellik ithalatı hakkında daha fazla bilgi verebilecek başka parametreler var mı?

R belgelerine göre, Kazanç'ın Bilgi kazanımına benzer bir şey olduğunu ve Frekansın tüm ağaçlarda bir özelliğin kullanılma sayısı olduğunu anladım. Cover'ın ne olduğu hakkında hiçbir fikrim yok.

Bağlantıda verilen örnek kodu koştum (ve üzerinde çalıştığım problemde de aynı şeyi yapmaya çalıştım), ancak orada verilen ayırma tanımı hesapladığım sayılarla eşleşmedi.

importance_matrix

Çıktı:

           Feature         Gain        Cover    Frequence
  1:            xxx 2.276101e-01 0.0618490331 1.913283e-02
  2:           xxxx 2.047495e-01 0.1337406946 1.373710e-01
  3:           xxxx 1.239551e-01 0.1032614896 1.319798e-01
  4:           xxxx 6.269780e-02 0.0431682707 1.098646e-01
  5:          xxxxx 6.004842e-02 0.0305611830 1.709108e-02

214:     xxxxxxxxxx 4.599139e-06 0.0001551098 1.147052e-05
215:     xxxxxxxxxx 4.500927e-06 0.0001665320 1.147052e-05
216:   xxxxxxxxxxxx 3.899363e-06 0.0001536857 1.147052e-05
217: xxxxxxxxxxxxxx 3.619348e-06 0.0001808504 1.147052e-05
218:  xxxxxxxxxxxxx 3.429679e-06 0.0001792233 1.147052e-05

Yanıtlar:


38

Sorunuzdan, ikili sınıflandırma için yükseltilmiş ağaçlara uyması için xgboost kullandığınızı farz ediyorum. Önem matrisi aslında yükseltilmiş ağaçlarda kullanılan tüm özelliklerin adlarını listeleyen ilk sütuna sahip bir data.table nesnesidir.

Önem veri tablosunun anlamı aşağıdaki gibidir:

  1. Kazanç modelinde her ağaç için her özelliğin katkısını alarak hesaplanan modele tekabül özelliği göreceli katkısını göstermektedir. Bu metriğin bir başka özelliğe kıyasla daha yüksek bir değeri, bir tahmin oluşturmak için daha önemli olduğu anlamına gelir.
  2. Kapak metrik araçlar, bu özellikle ilgili gözlemlerin göreceli sayısı. Örneğin, 100 gözleminiz varsa, 4 özellik ve 3 ağaç varsayalım ve özellik 1'in ağaç1, ağaç2 ve ağaç3'teki sırasıyla 10, 5 ve 2 gözlem için yaprak düğümüne karar vermek için kullanıldığını varsayalım; o zaman metrik bu özelliğin kapsamını 10 + 5 + 2 = 17 gözlem olarak sayar. Bu, tüm 4 özellik için hesaplanacak ve kapak, tüm özelliklerin kapak ölçümleri için yüzde olarak ifade edilecektir.
  3. Frekans (/ 'Frekans'), belirli bir özellik modeli ağaçlar meydana gelme nispi sayısını temsil eden yüzdesidir. Yukarıdaki örnekte, özellik1 2 bölmede meydana gelirse, her bir ağaç1, ağaç2 ve ağaç3'te 1 bölme ve 3 bölme; o zaman özellik 1 için ağırlık 2 + 1 + 3 = 6 olacaktır. Özellik1 için frekans, tüm özelliklerin ağırlık yüzdesi olarak hesaplanır.

Kazanç, her özelliğin göreceli önemini yorumlamak için en uygun özelliktir.

Önlemlerin tümü görecelidir ve bu nedenle hepsi R'ye bir takılı xgboost modelinden bir örnek olarak toplanır:

> sum(importance$Frequence)
[1] 1
> sum(importance$Cover)
[1] 1
> sum(importance$Gain)
[1] 1

1
Kapak sadece yaprak düğümlerine veya tüm yarıklara göre hesaplanır?
fanfabbb

3

Ayrıntılı cevabınız için teşekkürler Sandeep. Bu örtünün sadece yaprak düğümleri değil tüm bölmeler arasında hesaplandığını düzeltmek istiyorum.

Xgboost kütüphanesi tarafından sağlanan verilerle basit bir örnek verelim.

library('xgboost')

data(agaricus.train, package='xgboost')
data(agaricus.test, package='xgboost')

train <- agaricus.train
test <- agaricus.test

X = train$data

y = train$label

bst <- xgboost(data = X, label = y, max.depth = 2,
           eta = 1, nthread = 2, nround = 2,objective = "binary:logistic",
           reg_lambda = 0, reg_alpha = 0)

xgb.model.dt.tree(agaricus.train$data@Dimnames[[2]], model = bst)

xgb.importance(agaricus.train$data@Dimnames[[2]], bst)

Çıktı -

Ağaç dökümü

Önem matrisi

Diyelim ki koku örtüsünü = ağaç kütlesinden önem matrisinde (0.495768965) yok.

Koku = hiçin kullanılmadığı her bölmenin kapağı, Düğüm ID 0-0'da 1628.2500 ve Düğüm ID 1-1'de 765.9390'dır.

Tüm bölmelerin toplam kapağı (ağaç çöplüğündeki kapak sütununun toplamı) = 1628.2500 * 2 + 786.3720 * 2

Koku örtüsü = önem matrisinde yok = (1628.2500 + 765.9390) / (1628.2500 * 2 + 786.3720 * 2)

Dolayısıyla, örtünün tüm bölmelerde hesaplandığından eminiz!

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.