Karar ağaçları için nasıl bir ROC eğrisi çizebiliriz?


13

Normalde karar ağaçları gibi ayrı sınıflandırıcılar için bir ROC eğrisi çizemeyiz. Haklı mıyım? Dtrees için bir ROC eğrisi çizmenin bir yolu var mı?



[R'de “eğitim seti” ve “test seti” için karar ağacı model değerlendirmesi] [1] [1]: stats.stackexchange.com/questions/49416/… Cevabınızı burada bulabilirsiniz.
Sangram

@ rapaio Maalesef bağlantınız 1 ve 0 (sürekli değer) arasında çıktı üreten bir sınıflandırıcıda bir eşik bulmak için bir ROC eğrisi gösteriyor.
DataMiner

@Sangram Bunlar R'deki çözümler ancak nasıl çalıştığını anlamak istiyorum.
DataMiner

Yanıtlar:


15

Sınıflandırıcınız, puanlar olmadan yalnızca faktör sonuçları (yalnızca etiketler) üretirse, yine de bir ROC eğrisi çizebilirsiniz. Ancak bu ROC eğrisi sadece bir noktadır. ROC alanı göz önüne alındığında, bu noktalar , burada - yanlış pozitif oran ve - gerçek pozitif oran.(x,y)=(FPR,TPR)FPRTPR

Bunun Wikipedia sayfasında nasıl hesaplandığı hakkında daha fazla bilgi edinin .

Bu noktayı dan noktanıza ve oradan e bir çizgi çizerek ROC eğrisine benzeyecek şekilde genişletebilirsiniz . Böylece bir eğriniz var.(0,0)(1,1)

Ancak, bir karar ağacı için bir etiket çıktısından sayısal bir çıktıya genişletmek kolaydır. Bir karar ağacı ile öngörüldüğünüzde, kök düğümden bir çoğunluk sınıfı ile tahmin ettiğiniz bir yaprak düğümüne ineceğinizi unutmayın. Bu sınıf yerine, o yaprak düğümdeki sınıfların oranını döndürürseniz, her sınıf için bir puanınız olur. İki sınıf ve sınıfınız olduğunu ve yaprak düğümünüzde ile 10 örneğiniz ve ile 5 örneğiniz olduğunu varsayalım, bir puan vektörü döndürebilirsiniz :TFTF(scoreT,scoreF)=(countTcountT+countF,countFcountT+countF)=(10/15,5/15)=(0.66,0.33). Bunun gerçekten doğru bir puanlama kuralı olduğuna dikkat edin (bu olasılıklar için en iyi tahmin edici değildir), ancak inandığım hiçbir şeyden daha iyidir ve karar ağaçları için genellikle puanlar bu şekilde alınır.


13

Bir Karar Ağacı için, sınıflar hala bir miktar kesinlik ile tahmin edilmektedir. Cevap zaten @ rapaio tarafından verildi, ancak biraz daha genişleteceğim.

(Bu biraz değiştirilmiş bir versiyonu aşağıdaki karar ağacı düşünün biri )

karar ağacı örneği

Her düğümde sadece çoğunluk sınıfı etiketleri değil, aynı zamanda bu yaprağa neden olan diğerleri de vardır, bu nedenle etiketi öngördüğümüz yaprağa kesinlik derecesi atayabiliriz.

Örneğin, aşağıdaki verileri göz önünde bulundurun

veri

Çalıştırırız ve puanları gerçek etiketlere değil, çıktıya atarız. Bununla, burada önerildiği gibi bir ROC eğrisi çizebiliriz

roc eğrisi

Bununla birlikte, eşiğinizi ayarlamak için kullanmak çok az mantıklıdır (çünkü elbette Karar Ağaçlarında eşik diye bir şey yoktur), ancak yine de bu durumda 0,92 olan AUC'yi hesaplamak için kullanılabilir.

Burada kullanılan R kodu:

outlook = c('rain', 'overcast', 'rain', 'sunny', 'rain', 
            'rain', 'sunny', 'overcast', 'overcast', 'overcast', 
            'sunny', 'sunny', 'rain', 'rain', 'overcast',
            'sunny', 'overcast', 'overcast', 'sunny', 'sunny',
            'sunny', 'overcast')
humidity = c(79, 74, 80, 60, 65, 79, 60, 74, 77, 80, 
             71, 70, 80, 65, 70, 56, 80, 70, 56, 70,
             71, 77)
windy = c(T, T, F, T, F, T, T, T, T, F, T, F, F, F, T, T, F, T, T, F, T, T)
play = c(F, F, T, F, T, F, F, T, T, T, F, F, T, T, T, T, T, T, F, T, F, T)

game = data.frame(outlook, humidity, windy, play)
game$score = NA

attach(game)
game$score[outlook == 'sunny' & humidity <= 70] = 5/8
game$score[outlook == 'sunny' & humidity > 70] = 1 - 3/4
game$score[outlook == 'overcast'] = 4/5
game$score[outlook == 'rain' & windy == T] = 1 - 2/2
game$score[outlook == 'rain' & windy == F] = 3/3
detach(game)

game$predict = game$score >= 0.5
game$correct = game$predict == game$play

library(ROCR)

pred = prediction(game$score, game$play)
roc = performance(pred, measure="tpr", x.measure="fpr")
plot(roc, col="orange", lwd=2) 
lines(x=c(0, 1), y=c(0, 1), col="red", lwd=2)

auc = performance(pred, 'auc')
slot(auc, 'y.values')
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.