RandomForest - MDS çizim yorumu


14

RandomForest'i 6 hayvan davranışını (örneğin Ayakta, Yürüme, Yüzme vb.) 8 değişkene (farklı vücut duruşları ve hareket) göre sınıflandırmak için kullandım.

RandomForest paketindeki MDSplot bana bu çıktıyı verir ve sonucu yorumlamada sorun yaşıyorum. Aynı veriler üzerinde bir PCA yaptım ve zaten PC1 ve PC2'deki tüm sınıflar arasında güzel bir ayrım yaptım, ancak burada Dim1 ve Dim2 sadece 3 davranışı ayırıyor gibi görünüyor. Bu, bu üç davranışın diğer tüm davranışlardan daha farklı olduğu anlamına mı gelir (bu nedenle MDS, değişkenler arasındaki en büyük farklılığı bulmaya çalışır, ancak ilk adımdaki tüm değişkenleri mutlaka içermez)? Üç kümenin (ör. Dim1 ve Dim2'de olduğu gibi) konumlandırılması neyi gösterir? RI için oldukça yeni olduğum için de bu arsaya bir efsane çizmekte sorun yaşıyorum (ancak farklı renklerin ne anlama geldiğine dair bir fikrim var), ama belki biri yardımcı olabilir mi? Çok teşekkürler!!

RandomForest MDS 6 farklı hayvan davranışı

RandomForest ClassCenter işlevi ile yapılan bir arsa ekleyin. Bu işlev, prototipleri çizmek için yakınlık matrisini (MDS Grafiğindeki ile aynı) kullanır. Ancak sadece altı farklı davranışın veri noktalarına bakarak, yakınlık matrisinin prototiplerimi neden olduğu gibi çizeceğini anlayamıyorum. Ayrıca iris verileri ile classcenter fonksiyonunu denedim ve çalışıyor. Ama verilerim için işe yaramıyor gibi görünüyor ...

İşte bu arsa için kullandığım kod

be.rf <- randomForest(Behaviour~., data=be, prox=TRUE, importance=TRUE)
class1 <- classCenter(be[,-1], be[,1], be.rf$prox)
Protoplot <- plot(be[,4], be[,7], pch=21, xlab=names(be)[4], ylab=names(be)[7], bg=c("red", "green", "blue", "yellow", "turquoise", "orange") [as.numeric(factor(be$Behaviour))])
points(class1[,4], class1[,7], pch=21, cex=2, bg=c("red", "green", "blue", "yellow", "turquoise", "orange"))

Sınıf sütunum ilk, ardından 8 öngörücüdür. En iyi tahmin değişkenlerinden ikisini x ve y olarak çizdim.

6 farklı hayvan davranışı için RandomForest ClassCenter çizimi

Yanıtlar:


10

MDSplot işlevi, yakınlık matrisinin (PCA) grafiğini çizer. RandomForest belgelerinden yakınlık matrisi:

Giriş arasında bir yakınlık matrisi ölçer (veri nokta çiftlerinin aynı terminal düğümlerinde olma sıklığına dayanarak).

Bu açıklamaya dayanarak, farklı grafiklerin ne anlama geldiğini tahmin edebiliriz. K = 4 belirtmişsiniz gibi görünüyor, bu da 4 bileşende yakınlık matrisinin ayrışması anlamına geliyor. Bu grafik matrisindeki her giriş (i, j) için, çizilen şey, i boyutu boyunca PCA ayrışması ile j boyutu boyunca PCA ayrışmasıdır.

Aynı veriler üzerinde bir PCA yaptım ve zaten PC1 ve PC2'deki tüm sınıflar arasında güzel bir ayrım yaptım, ancak burada Dim1 ve Dim2 sadece 3 davranışı ayırıyor gibi görünüyor. Bu, bu üç davranışın diğer tüm davranışlardan daha farklı olduğu anlamına mı gelir (bu nedenle MDS, değişkenler arasındaki en büyük farklılığı bulmaya çalışır, ancak ilk adımdaki tüm değişkenleri mutlaka içermez)?

MDS, analizini yalnızca randomForest'inizin çıktısına dayandırabilir. Daha iyi bir ayrılma bekliyorsanız, randomForest'unuzun sınıflandırma performansını kontrol etmek isteyebilirsiniz. Akılda tutulması gereken bir diğer şey, PCA'nızın 9 boyutlu verilerden 2 boyuta eşlemesidir, ancak MDS, NxN boyutlu bir yakınlık matrisinden 2 boyuta eşlemektir; burada N, veri noktası sayısıdır.

Üç kümenin (ör. Dim1 ve Dim2'de olduğu gibi) konumlandırılması neyi gösterir?

Sadece bu kümelerin birbirinden ne kadar uzakta (nispeten) olduğunu söyler. Bu bir görselleştirme yardımcısı, bu yüzden fazla yorumlamam.

RI için oldukça yeni olduğum için de bu arsaya bir efsane çizmekte sorun yaşıyorum (ancak farklı renklerin ne anlama geldiğine dair bir fikrim var), ama belki biri yardımcı olabilir mi?

R'nin çalışma şekli, efsaneyi gerçeğe göre çizmenin bir yolu yoktur (bu bilginin şekil nesnesinin içinde saklandığı Matlab'dan farklı olarak). Ancak, MDSplot koduna bakarak, ilgili kod bloğunun:

palette <- if (require(RColorBrewer) && nlevs < 12) brewer.pal(nlevs, "Set1")

...

plot(rf.mds$points, col = palette[as.numeric(fac)], pch = pch, ...)

Böylece renkler bu paletten alınır ve hangi sırayla verdiğinizle seviyelere (davranışlar) eşlenir. Bir efsane çizmek istiyorsanız:

legend(x,y,levels(fac),col=brewer.pal(nlevs, 'Set1'), pch=pch)

muhtemelen işe yarar.


Cevabınız için çok teşekkürler, bu gerçekten yararlı! Rasgele orman modelimin sınıflandırma performansı oldukça iyi (OOB hata oranı% 4.94 ve CV ile% 95 doğruluk), bu yüzden MDS grafiğinde daha iyi bir ayrılma bekledim. Ayrıca sınıf prototipleri için classCenter işleviyle bir rakam çizmeye çalıştım (RF kılavuzundaki iris örneğini izledim), ancak işlev aynı zamanda yakınlık matrisini kullandığından, prototipler mantıklı görünmüyor. Ancak bu arsada sınıfların güzel bir şekilde ayrıldığı açıktır, ancak prototipler ayrılmaz.
Pat

ClassCenter grafiğini yukarıdaki soruma ekleyeceğim. Ayrıca, tahmincilerimin farklı ölçeklerinin sorun olabileceğini düşündüm, ancak rastgele orman kullanırken ölçekleme gerekli görünmüyor. Efsane komutunu çabucak denedim ama işe yaramadı, ama sanırım muhtemelen bir hata yapıyorum. Yarın başka bir deneyeceğim. Tekrar teşekkürler!
Pat
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.