RandomForest - interpretasi plot MDS

14

Saya menggunakan randomForest untuk mengklasifikasikan 6 perilaku hewan (mis. Berdiri, Berjalan, Berenang dll) berdasarkan 8 variabel (postur tubuh dan gerakan yang berbeda).

MDSplot dalam paket randomForest memberi saya hasil ini dan saya memiliki masalah dalam menafsirkan hasilnya. Saya melakukan PCA pada data yang sama dan mendapat pemisahan yang bagus antara semua kelas di PC1 dan PC2, tetapi di sini Dim1 dan Dim2 tampaknya hanya memisahkan 3 perilaku. Apakah ini berarti bahwa ketiga perilaku ini lebih berbeda daripada semua perilaku lain (jadi MDS mencoba menemukan perbedaan terbesar antara variabel, tetapi tidak harus semua variabel pada langkah pertama)? Apa yang dimaksud dengan penentuan posisi ketiga kluster (seperti misalnya pada Dim1 dan Dim2)? Karena saya agak baru ke RI juga punya masalah merencanakan legenda untuk plot ini (namun saya punya ide apa arti warna yang berbeda), tetapi mungkin seseorang dapat membantu? Terima kasih banyak!!

MDSplot RandomForest dari 6 perilaku hewan yang berbeda

Saya menambahkan plot yang dibuat dengan fungsi ClassCenter di RandomForest. Fungsi ini juga menggunakan matriks kedekatan (sama seperti dalam MDS Plot) untuk memplot prototipe. Tetapi hanya dari melihat titik data untuk enam perilaku yang berbeda, saya tidak bisa mengerti mengapa matriks proximity akan memetakan prototipe saya seperti halnya. Saya juga mencoba fungsi classcenter dengan data iris dan berfungsi. Tapi sepertinya itu tidak berfungsi untuk data saya ...

Berikut adalah kode yang saya gunakan untuk plot ini

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"))

Kolom kelas saya adalah yang pertama, diikuti oleh 8 prediktor. Saya merencanakan dua variabel prediktor terbaik sebagai x dan y.

RandomCest ClassCenter plot untuk 6 perilaku hewan yang berbeda

Menepuk
sumber

Jawaban:

10

Fungsi MDSplot memplot (PCA) dari matriks proximity. Dari dokumentasi untuk randomForest, matriks proximity adalah:

Matriks pengukuran kedekatan di antara input (berdasarkan frekuensi pasangan titik data berada di node terminal yang sama).

Berdasarkan uraian ini, kita bisa menebak apa arti berbagai plot. Anda tampaknya telah menentukan k = 4, yang berarti dekomposisi dari matriks kedekatan dalam 4 komponen. Untuk setiap entri (i, j) dalam matriks plot ini, yang diplot adalah dekomposisi PCA sepanjang dimensi i versus dekomposisi PCA sepanjang dimensi j.

Saya melakukan PCA pada data yang sama dan mendapat pemisahan yang bagus antara semua kelas di PC1 dan PC2, tetapi di sini Dim1 dan Dim2 tampaknya hanya memisahkan 3 perilaku. Apakah ini berarti bahwa ketiga perilaku ini lebih berbeda daripada semua perilaku lain (jadi MDS mencoba menemukan perbedaan terbesar antara variabel, tetapi tidak harus semua variabel pada langkah pertama)?

MDS hanya dapat mendasarkan analisisnya pada output randomForest Anda. Jika Anda mengharapkan pemisahan yang lebih baik, maka Anda mungkin ingin memeriksa kinerja klasifikasi randomForest Anda. Satu hal yang perlu diingat adalah bahwa PCA Anda memetakan dari data 9 dimensi ke 2 dimensi, tetapi MDS memetakan dari matriks proximity dimensi NxN ke 2 dimensi, di mana N adalah jumlah titik data.

Apa yang dimaksud dengan penentuan posisi ketiga kluster (seperti misalnya pada Dim1 dan Dim2)?

Ini hanya memberitahu Anda seberapa jauh jarak (relatif) cluster ini dari satu sama lain. Ini bantuan visualisasi, jadi saya tidak akan menafsirkannya secara berlebihan.

Karena saya agak baru ke RI juga punya masalah merencanakan legenda untuk plot ini (namun saya punya ide apa arti warna yang berbeda), tetapi mungkin seseorang dapat membantu?

Cara R bekerja, tidak ada cara untuk merencanakan legenda setelah-fakta (tidak seperti dalam katakanlah Matlab, di mana informasi ini disimpan di dalam objek gambar). Namun, melihat kode MDSplot, kami melihat bahwa blok kode yang relevan adalah:

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

...

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

Jadi warna akan diambil dari palet itu, dan dipetakan ke level (perilaku) sesuai urutan yang Anda berikan. Jadi, jika Anda ingin merencanakan legenda:

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

mungkin akan bekerja.

FrankD
sumber
Terima kasih banyak atas jawaban Anda, ini sangat membantu !! Kinerja klasifikasi model hutan acak saya cukup baik (tingkat kesalahan OOB 4,94%, dan akurasi 95% dengan CV), itu sebabnya saya mengharapkan pemisahan yang lebih baik dalam plot MDS. Saya juga mencoba memplot gambar dengan classCenter fungsi untuk prototipe kelas (saya mengikuti contoh iris dalam manual RF), tetapi karena fungsinya juga menggunakan matriks proximity, prototipe sepertinya tidak masuk akal. Tetapi dalam plot ini jelas kelas terpisah dengan baik, tetapi prototipe tidak.
Pat
Saya akan menambahkan plot ClassCenter ke pertanyaan saya di atas. Saya juga berpikir bahwa skala yang berbeda dari prediktor saya mungkin menjadi masalah, tetapi sepertinya penskalaan tidak diperlukan saat menggunakan hutan acak. Saya hanya cepat mencoba perintah legenda tetapi tidak berhasil, tapi saya pikir itu mungkin saya membuat kesalahan. Akan mencoba lagi besok. Terima kasih lagi!
Pat