Rastgele Ormanlarda yanlış sınıflandırma maliyeti nasıl kontrol edilir?


21

RandomForest R paketindeki yanlış sınıflandırma maliyetini kontrol etmek mümkün müdür ?

Kendi işimde yanlış negatifler (örneğin, bir insanın bir hastalığa sahip olabileceği gibi yanlış) eksik, yanlış pozitiflerden çok daha maliyetlidir. Rpart paketi , kullanıcının farklı sınıflandırma ağırlıklarına göre farklılıklar için bir kayıp matrisi belirleyerek yanlış sınıflandırma maliyetlerini kontrol etmesine izin verir. Benzer bir şey var mı randomForest? Örneğin, classwtGini kriterini kontrol etmek için bu seçeneği kullanmalı mıyım ?

Yanıtlar:


8

Gerçekten değil, eğer el ile rpartmodelleme yaparken RF klonu elle yaparak .

Bazı seçenek, RF çıktısının, kesin bir karardan ziyade sürekli bir puan olması, yani bir sınıfa oy veren ağaçların kesri olması gerçeğinden geliyor. Bu ile ekstre edilebilir predict(rf_model,type="prob")ve yapmak için de kullanılır, (daha sonra RF eğitim dahil edilebilir .5 daha iyi bir eşik açığa çıkaracak bir ROC eğrisi cutoffparametresi).

classwt Yaklaşım da geçerli gözüküyor, ancak pratikte çok iyi çalışmıyor - dengeli tahmin ile aynı sınıfın önemsiz bakışı arasında geçiş yapma arasındaki geçiş, kullanılamayacak kadar keskin olma eğilimindedir.


MBQ. Çok teşekkürler. (i) ROC Eğrisi: Bu durumda, maliyet ağırlığının ne olması gerektiğine dair kendi önceliklerim olduğu için ROC eğrisini istemiyorum. (ii) classwt: Evet, pratikte ve diğer kullanıcılarla paralel sonuçların beklendiği gibi olmadığını buldum. (iii) cutoff: cutoffBu durumda nasıl kullanılacağı konusunda net değilim ve daha fazla öneriyi rica ediyorum.
kullanici5944

3

Maliyetleri dahil etmenin birkaç yolu vardır.
(1) Torbalanmış her ağaç için örneklemenin altında / altında (tabakalı örnekleme), maliyetlerin en yaygın olarak kullanıldığı yöntemdir. kasten dengesizlik veri kümesi.
(2) Ağırlıklandırma. Asla işe yaramaz. Bunun belgelerde vurgulandığını düşünüyorum. Bazıları, Gini ayırma ve son oylama dahil, tüm aşamalarda kilo almanız gerektiğini iddia ediyor. Eğer işe yarayacaksa, zor bir uygulama olacak.
(3) Weka'da Metacost işlevi.
(4) Rastgele bir ormanın olasılıksal bir sınıflandırıcı olarak ele alınması ve eşiğin değiştirilmesi. Bu seçeneği en az sevdim. Muhtemelen bilgi eksikliğimden kaynaklanıyor, ancak algoritma olasılıkları ortaya çıkarsa da, onlara olasılıklı bir modelmiş gibi davranmak bana mantıklı gelmiyor.

Ama eminim ki ek yaklaşımlar vardır.


3

Tahmin etmeye çalıştığınız değişken% class 150 ve % 50 değilse class 2(çoğu durumda olduğu gibi), cutoffparametreyi OOBözeti gerçek olarak temsil edecek şekilde ayarlamanız önerilir .

Örneğin,

randomForest(data=my_data, formula, ntree = 501, cutoff=c(.96,.04))

Bu durumda bir değere sahip olma olasılığı class 1 olan .96bir değere sahip iken class 2bir .04.

Aksi takdirde rastgele ormanlar bir eşik kullanır 0.5.


1

Bir dahil edebilirsiniz costMatrixiçinde randomForestaracılığıyla açıkça parmsparametre:

library(randomForest)
costMatrix <- matrix(c(0,10,1,0), nrow=2)
mod_rf <- randomForest(outcome ~ ., data = train, ntree = 1000, parms = list(loss=costMatrix))

0

Paketteki sampsizeişlevi kullanarak maliyet hassasiyetini dahil edebilirsiniz randomForest.

model1=randomForest(DependentVariable~., data=my_data, sampsize=c(100,20))

Sahip olduğunuz (100,20)verilere ve üzerinde çalıştığınız varsayımlara / iş kurallarına göre rakamları değiştirin .

Sınıflandırma hatasının maliyetini yansıtan bir karışıklık matrisi elde etmek biraz deneme yanılma yaklaşımını gerektirir. Richard Berk'in Kriminal Risk Tahminlerine Bakın : Bir Makine Öğrenimi Yaklaşımı , s. 82.

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.