RandomForest için doğru sampSize değerini belirlemek için bir formül veya kural var mı?


13

Ben randomForest ile oynuyorum ve genellikle sampSize artırmak daha iyi performans yol açtığını bulduk. En uygun örneklemenin ne olması gerektiğini öneren bir kural / formül / vb. Var mı yoksa deneme yanılma mıdır? Sanırım bunu ifade etmenin başka bir yolu; çok küçük veya çok büyük (fazla sığdırma) risklerim nelerdir?


Bu soru, randomForestpaketteki rastgele ormanın R uygulamasına atıfta bulunuyor . İşlevin randomForest, sampSizebelgelerde şu şekilde açıklanan bir parametresi vardır:

Çizilecek numunenin boyutu. Sınıflandırma için, örnek büyüklüğü katman sayısının uzunluğunun bir vektörüyse, örnekleme katmanlar tarafından tabakalandırılır ve örnek büyüklüğü öğeleri katmanlardan çizilecek sayıları gösterir.

Yanıtlar:


21

Genel olarak, rasgele bir ormanın örnek büyüklüğü, ilgili "rasgelelik derecesi" üzerinde bir kontrol görevi görür ve dolayısıyla sapma-varyans dengesini ayarlamanın bir yolu olarak işlev görür. Örneklem büyüklüğünün arttırılması, "daha az rasgele" bir orman ile sonuçlanır ve bu nedenle, fazla uyuma eğilimi vardır. Örneklem büyüklüğünün azaltılması, orman içindeki münferit ağaçlardaki değişimi arttırır, aşırı sığmayı önler, ancak genellikle model performansı pahasına. Yararlı bir yan etki, daha düşük örnek boyutlarının, modeli eğitmek için gereken süreyi azaltmasıdır.

En iyi örnek boyutu için olağan genel kural, bir "bootstrap örneği" dir, orijinal veri kümesine eşit büyüklükte, ancak değiştirme ile seçilir, bu nedenle bazı satırlar seçilmez ve diğerleri birden çok kez seçilir. Bu genellikle en uygun performansı sağlar ve standart R uygulamasında varsayılan değerdir. Ancak, gerçek dünyadaki uygulamalarda, örnek boyutunu ayarlamanın performansın artmasına neden olabileceğini görebilirsiniz. Şüphe duyduğunuzda, çapraz doğrulamayı kullanarak uygun örnek boyutunu (ve diğer model parametrelerini) seçin.


2

Bazı rastgele parametre ayarları ile gece boyunca 4500 rastgele orman çalıştırdım:

Regresyon sorun Ysignal = x1^2+sin(x2*pi) + x3 * x4 + x5 herhangi xbir normal dağılımdan bağımsız olarak örneklenir, ortalama SD = 1, = 1

Ytotal = Ysignal + Yerror

nerede Yerror = rnorm(n.observations,sd=sd(Ysignal))*noise.factor

theoretical.explainable.variance"TEV" = var(Ysignal= / var(Ytotal)

randomForest.performance = explained.variance(OOB cross-validation) / TEV

veri kümeleri regresyon probleminden örneklenmiştir ve eklenen gürültü n.obs1000 ile 5000 n.extra.dummy.variablesarasında 1 ile 20 arasında rastgele bir sayıdır.

ntree her zaman 1000

sample_replacement her zaman true

mtry5 ile 25 n.obs noise.factorarasındadır, 0 ile 9 arasında sınırlıdır

samplesize.ratio % 10 ile% 100 arasında rastgele bir sayı, her bir önyüklemenin oran boyutu

tüm modeller rfo = randomForest(x=X, y=Ytotal, <more args>)

randomForest.performance, en yüksek kısmını açıklamaya kabiliyeti TEVzaman genel olarak artar samplesizedüşürdüğünde TEV% 50'den az olduğunda ve azaltmak TEV% 50 daha yüksektir.

Bu nedenle, randomForest-modelfitraporlarınız örneğin% 15'i OOB-CV tarafından varyansı açıkladıysa ve bu sizin için kabul edilebilir bir model hassasiyeti ise sampsize, verilen gözlemlerin üçte birine inerek muhtemelen performansı biraz daha fazla ayarlayabilirsiniz ntree > 1000.

Moral : Çok gürültülü veriler için, azami büyüklükteki ağaçlar yetiştirerek ağaçların korelasyonunu azaltmak önyargıları azaltmaktan daha iyidir.


1

Rasgele ormanların eğitim verilerinde olduğu gibi yeni verilerde de çalışması için, gerekli örnek boyutu muazzamdır ve genellikle aday özellik sayısının 200 katıdır . Buraya bakın .


2
Harrell, bence OP, veri kümesinin toplam büyüklüğü yerine her bir ağacı oluşturmak için kullanılan yeniden örneklemenin boyutunu soruyor.
Sycorax, Reinstate Monica
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.