Rastgele orman ve tahmin


14

Random Forest'ın nasıl çalıştığını anlamaya çalışıyorum. Ağaçların nasıl yapıldığına dair bir kavrayışım var ama Rastgele Orman'ın torba örneği üzerinde nasıl tahmin yaptığını anlayamıyorum. Biri bana basit bir açıklama yapabilir mi lütfen? :)

Yanıtlar:


17

Ormandaki her ağaç, eğitim verilerinizdeki gözlemlerin bir önyükleme örneğinden oluşturulur. Bootstrap örneğindeki bu gözlemler ağacı oluşturur, bootstrap örneğinde olmayanlar ise torba dışı (veya OOB) örnekleri oluşturur.

Bir ağacı oluşturmak için kullanılan verilerdeki OOB örneğindeki durumlarla aynı değişkenlerin mevcut olduğu açık olmalıdır. OOB örneği için tahminler almak üzere, her biri geçerli ağaçtan geçirilir ve ağacın kuralları bir terminal düğümüne gelene kadar takip edilir. Bu, o ağaç için OOB tahminlerini verir.

Bu işlem çok sayıda kez tekrarlanır, her ağaç eğitim verilerinden yeni bir önyükleme örneği üzerinde eğitilir ve türetilen yeni OOB örnekleri için tahminler yapar.

Ağaç sayısı arttıkça, herhangi bir örnek OOB örneklerinde bir kereden fazla olacaktır, bu nedenle her eğitim örneği için OOB tahmini olarak OOB'de bir numunenin OOB'da olduğu N ağaçlarına ilişkin tahminlerin "ortalaması" kullanılır. ağaçlar 1, ..., N. "Ortalama" olarak, sürekli bir yanıt için tahminlerin ortalamasını kullanırız veya çoğunluk oyu kategorik bir yanıt için kullanılabilir (çoğunluk oyu, ağaçlar 1, ..., N).

Örneğin, 10 ağaç üzerinde eğitim setinde 10 örnek için aşağıdaki OOB tahminlerine sahip olduğumuzu varsayalım

set.seed(123)
oob.p <- matrix(rpois(100, lambda = 4), ncol = 10)
colnames(oob.p) <- paste0("tree", seq_len(ncol(oob.p)))
rownames(oob.p) <- paste0("samp", seq_len(nrow(oob.p)))
oob.p[sample(length(oob.p), 50)] <- NA
oob.p

> oob.p
       tree1 tree2 tree3 tree4 tree5 tree6 tree7 tree8 tree9 tree10
samp1     NA    NA     7     8     2     1    NA     5     3      2
samp2      6    NA     5     7     3    NA    NA    NA    NA     NA
samp3      3    NA     5    NA    NA    NA     3     5    NA     NA
samp4      6    NA    10     6    NA    NA     3    NA     6     NA
samp5     NA     2    NA    NA     2    NA     6     4    NA     NA
samp6     NA     7    NA     4    NA     2     4     2    NA     NA
samp7     NA    NA    NA     5    NA    NA    NA     3     9      5
samp8      7     1     4    NA    NA     5     6    NA     7     NA
samp9      4    NA    NA     3    NA     7     6     3    NA     NA
samp10     4     8     2     2    NA    NA     4    NA    NA      4

Burada NAörnek, o ağacın eğitim verilerindeydi (diğer bir deyişle OOB örneğinde değildi).

NAHer satır için değer olmayanların ortalaması, her bir örnek için tüm orman için OOB tahmini verir

> rowMeans(oob.p, na.rm = TRUE)
 samp1  samp2  samp3  samp4  samp5  samp6  samp7  samp8  samp9 samp10 
  4.00   5.25   4.00   6.20   3.50   3.80   5.50   5.00   4.60   4.00

Her ağaç ormana eklendikçe, OOB hatasını o ağacı dahil ederek hesaplayabiliriz. Örneğin, her örnek için kümülatif araçlar aşağıdadır:

FUN <- function(x) {
  na <- is.na(x)
  cs <- cumsum(x[!na]) / seq_len(sum(!na))
  x[!na] <- cs
  x
}
t(apply(oob.p, 1, FUN))

> print(t(apply(oob.p, 1, FUN)), digits = 3)
       tree1 tree2 tree3 tree4 tree5 tree6 tree7 tree8 tree9 tree10
samp1     NA    NA  7.00  7.50  5.67  4.50    NA   4.6  4.33    4.0
samp2      6    NA  5.50  6.00  5.25    NA    NA    NA    NA     NA
samp3      3    NA  4.00    NA    NA    NA  3.67   4.0    NA     NA
samp4      6    NA  8.00  7.33    NA    NA  6.25    NA  6.20     NA
samp5     NA     2    NA    NA  2.00    NA  3.33   3.5    NA     NA
samp6     NA     7    NA  5.50    NA  4.33  4.25   3.8    NA     NA
samp7     NA    NA    NA  5.00    NA    NA    NA   4.0  5.67    5.5
samp8      7     4  4.00    NA    NA  4.25  4.60    NA  5.00     NA
samp9      4    NA    NA  3.50    NA  4.67  5.00   4.6    NA     NA
samp10     4     6  4.67  4.00    NA    NA  4.00    NA    NA    4.0

Bu şekilde tahminin ormandaki N ağaç üzerinde belirli bir yinelemeye kadar nasıl biriktiğini görüyoruz. Satırları okursanız, en sağdaki NAdeğer olmayan , yukarıda OOB tahmini için gösterdiğim değerdir. OOB performansının izleri bu şekilde yapılabilir - N ağaçları üzerinde birikmiş OOB tahminlerine dayanarak OOB örnekleri için bir RMSEP hesaplanabilir.

Gösterilen R kodunun, R için randomForest paketindeki randomForest kodunun içlerinden alınmadığına dikkat edin - Her bir ağaçtan tahminler belirlendikten sonra olanları takip edebilmeniz için basit bir kod attım.

Çünkü her ağaç bir önyükleme örneğinden yapılmıştır ve rastgele bir ormanda çok sayıda ağaç vardır, böylece her eğitim seti gözlemi bir veya daha fazla ağaç için OOB örneğinde olur, herkes için OOB tahminleri sağlanabilir eğitim verilerindeki örnekler.

Bazı OOB vakaları için eksik veri gibi sorunlar üzerinde göz kamaştırdım, ancak bu sorunlar da tek bir regresyon veya sınıflandırma ağacı ile ilgilidir. Ayrıca ormandaki her ağacın yalnızca mtryrastgele seçilen değişkenleri kullandığını unutmayın .


Harika cevap Gavin! Eğer yazarken "To get predictions for the OOB sample, each one is passed down the current tree and the rules for the tree followed until it arrives in a terminal node", ne basit bir açıklama var mı rules for the treevardır? Ve sampleeğer örneklerin groupsağaçların verileri böldüğü gözlemler olduğunu anlarsam doğru bir şekilde anlıyor muyum ?
user1665355

@ user1665355 Regresyon veya sınıflandırma ağaçlarının nasıl inşa edildiğini anladığınızı varsaydım? RF'deki ağaçlar farklı değildir (belki de durdurma kuralları hariç). Her ağaç, eğitim verilerini yanıt için benzer "değerlere" sahip örnek gruplarına böler. Ağaçtaki ilk bölünmeyi veya kuralı en iyi tahmin eden (yani "hatayı" en aza indiren) değişken ve bölünmüş konum (örn. PH> 4.5). Bu bölünmenin her dalı daha sonra dikkate alınır ve ağacın "hatasını" en aza indiren yeni bölünmeler / kurallar tanımlanır. Bu ikili özyinelemeli bölümleme algoritmasıdır. Bölmeler kurallardır.
Monica'yı eski durumuna getirin - G. Simpson

@ user1665355 Evet, özür dilerim ben bir örnek bir gözlem, veri kümesinde bir satır olduğu bir alandan geliyor. Ancak, bir önyükleme örneği hakkında konuşmaya başladığınızda, bu, eğitim verilerinden değiştirilerek çizilmiş bir dizi N gözlemidir ve bu nedenle N satırı veya gözlemi vardır. Daha sonra terminolojimi temizlemeye çalışacağım.
Monica'yı eski durumuna getirin - G. Simpson

Teşekkürler! RF için çok yeniyim, belki aptalca sorular için çok üzgünüm :) Sanırım yazdığınız hemen hemen her şeyi anlıyorum, çok iyi bir açıklama! Sadece merak ediyorum Değişken ve bölünmüş konum (örneğin pH> 4.5) en iyi tahmin (yani "hata" minimize) ağaçtaki ilk bölünme veya kural oluşturur ... Hatanın ne olduğunu anlayamıyorum. : / Okuyorum ve anlamaya çalışıyorum http://www.ime.unicamp.br/~ra109078/PED/Data%20Minig%20with%20R/Data%20Mining%20with%20R.pdf. 115-116. Sayfalarda yazarlar variable importanceteknik göstergeleri seçmek için RF kullanırlar .
user1665355

"Hata" hangi ağacın takıldığına bağlıdır. Sapma, sürekli (Gauss) yanıtlar için olağan önlemdir. Rpart paketinde, Gini katsayısı kategorik yanıtlar için varsayılan değerdir, ancak farklı modeller vb. İçin başkaları da vardır. Başarılı bir şekilde dağıtmak istiyorsanız, kendinizi Ağaçlar ve RF hakkında iyi bir kitaptan yararlanmalısınız. Değişken Hata Önleme ölçüleri farklı bir şeydir - bu değişken bir ağaca sığacak şekilde kullanıldığında ve bu değişken kullanılmadığında bir şeyin ne kadar değiştiğini görerek veri kümesindeki her değişkenin "önemini" ölçer.
Monica'yı eski durumuna getirin - G. Simpson
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.