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? :)
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:
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).
NA
Her 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 NA
değ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 mtry
rastgele seçilen değişkenleri kullandığını unutmayın .
http://www.ime.unicamp.br/~ra109078/PED/Data%20Minig%20with%20R/Data%20Mining%20with%20R.pdf
. 115-116. Sayfalarda yazarlar variable importance
teknik göstergeleri seçmek için RF kullanırlar .
"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 tree
vardır? Vesample
eğer örnekleringroups
ağaçların verileri böldüğü gözlemler olduğunu anlarsam doğru bir şekilde anlıyor muyum ?