RandomForest - Giải thích cốt truyện MDS


14

Tôi đã sử dụng RandomForest để phân loại 6 hành vi của động vật (ví dụ: Đứng, Đi bộ, Bơi, v.v.) dựa trên 8 biến số (tư thế và chuyển động cơ thể khác nhau).

MDSplot trong gói RandomForest cung cấp cho tôi đầu ra này và tôi gặp vấn đề trong việc diễn giải kết quả. Tôi đã thực hiện một PCA trên cùng một dữ liệu và có một sự tách biệt tốt giữa tất cả các lớp trong PC1 và PC2, nhưng ở đây Dim1 và Dim2 dường như chỉ tách biệt 3 hành vi. Điều này có nghĩa là ba hành vi này giống nhau hơn tất cả các hành vi khác (vì vậy MDS cố gắng tìm sự khác biệt lớn nhất giữa các biến, nhưng không nhất thiết là tất cả các biến trong bước đầu tiên)? Định vị của ba cụm (ví dụ như trong Dim1 và Dim2) chỉ ra điều gì? Vì tôi còn khá mới với RI cũng có vấn đề khi vẽ một huyền thoại cho cốt truyện này (tuy nhiên tôi có một ý tưởng về các màu sắc khác nhau có nghĩa là gì), nhưng có lẽ ai đó có thể giúp đỡ? Cảm ơn rất nhiều!!

RandomForest MDSplot của 6 hành vi động vật khác nhau

Tôi thêm một cốt truyện được tạo bằng hàm ClassCenter trong RandomForest. Hàm này cũng sử dụng ma trận lân cận (giống như trong MDS Plot) để vẽ các nguyên mẫu. Nhưng chỉ cần nhìn vào các biểu dữ liệu cho sáu hành vi khác nhau, tôi không thể hiểu tại sao ma trận lân cận sẽ vẽ các nguyên mẫu của tôi như vậy. Tôi cũng đã thử chức năng classcenter với dữ liệu mống mắt và nó hoạt động. Nhưng có vẻ như nó không hoạt động cho dữ liệu của tôi ...

Đây là mã tôi đã sử dụng cho âm mưu này

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

Cột lớp của tôi là cột đầu tiên, theo sau là 8 dự đoán. Tôi đã vẽ hai trong số các biến dự đoán tốt nhất là x và y.

RandomForest ClassCenter âm mưu cho 6 hành vi động vật khác nhau

Câu trả lời:


10

Hàm MDSplot vẽ đồ thị (PCA của) ma trận tiệm cận. Từ tài liệu cho RandomForest, ma trận tiệm cận là:

Một ma trận đo gần giữa các đầu vào (dựa trên tần số mà các cặp điểm dữ liệu nằm trong cùng một nút đầu cuối).

Dựa trên mô tả này, chúng ta có thể đoán ý nghĩa của các ô khác nhau. Dường như bạn đã chỉ định k = 4, có nghĩa là phân tách ma trận lân cận trong 4 thành phần. Đối với mỗi mục (i, j) trong ma trận các ô này, cái được vẽ là phân rã PCA dọc theo chiều i so với phân rã PCA dọc theo chiều j.

Tôi đã thực hiện một PCA trên cùng một dữ liệu và có một sự tách biệt tốt giữa tất cả các lớp trong PC1 và PC2, nhưng ở đây Dim1 và Dim2 dường như chỉ tách biệt 3 hành vi. Điều này có nghĩa là ba hành vi này giống nhau hơn tất cả các hành vi khác (vì vậy MDS cố gắng tìm sự khác biệt lớn nhất giữa các biến, nhưng không nhất thiết là tất cả các biến trong bước đầu tiên)?

MDS chỉ có thể dựa trên phân tích của nó dựa trên đầu ra của RandomForest. Nếu bạn đang mong đợi một sự phân tách tốt hơn, thì bạn có thể muốn kiểm tra hiệu suất phân loại của RandomForest. Một lưu ý khác là PCA của bạn đang ánh xạ từ dữ liệu 9 chiều thành 2 chiều, nhưng MDS đang ánh xạ từ ma trận lân cận NxN sang 2 chiều, trong đó N là số lượng điểm dữ liệu.

Định vị của ba cụm (ví dụ như trong Dim1 và Dim2) chỉ ra điều gì?

Nó chỉ cho bạn biết các cụm này cách xa nhau (tương đối) như thế nào. Đó là một trợ giúp trực quan, vì vậy tôi sẽ không diễn giải nó quá mức.

Vì tôi còn khá mới với RI cũng có vấn đề khi vẽ một huyền thoại cho cốt truyện này (tuy nhiên tôi có một ý tưởng về các màu sắc khác nhau có nghĩa là gì), nhưng có lẽ ai đó có thể giúp đỡ?

Cách R hoạt động, không có cách nào để vẽ huyền thoại sau thực tế (không giống như Matlab nói, nơi thông tin này được lưu trữ bên trong đối tượng hình). Tuy nhiên, nhìn vào mã cho MDSplot, chúng ta thấy khối mã có liên quan là:

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

...

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

Vì vậy, màu sắc sẽ được lấy từ bảng màu đó và được ánh xạ tới các cấp độ (hành vi) theo bất kỳ thứ tự nào bạn đã đưa ra. Vì vậy, nếu bạn muốn vẽ một huyền thoại:

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

có lẽ sẽ làm việc


Cảm ơn rất nhiều cho câu trả lời của bạn, điều này thực sự hữu ích !! Hiệu suất phân loại của mô hình rừng ngẫu nhiên của tôi khá tốt (tỷ lệ lỗi OOB 4,94% và độ chính xác 95% với CV), đó là lý do tại sao tôi mong đợi sự phân tách tốt hơn trong âm mưu MDS. Tôi cũng đã cố gắng vẽ một hình với lớp chức năng Trung tâm cho các nguyên mẫu của các lớp (tôi đã làm theo ví dụ về mống mắt trong hướng dẫn RF), nhưng vì hàm này cũng sử dụng ma trận tiệm cận, các nguyên mẫu dường như không có ý nghĩa. Nhưng trong cốt truyện này, rõ ràng các lớp tách biệt độc đáo, nhưng các nguyên mẫu thì không.
Pat

Tôi sẽ thêm cốt truyện ClassCenter vào câu hỏi của tôi ở trên. Tôi cũng nghĩ rằng các thang đo khác nhau của các yếu tố dự đoán của tôi có thể là vấn đề, nhưng có vẻ như việc chia tỷ lệ là không cần thiết khi sử dụng rừng ngẫu nhiên. Tôi chỉ nhanh chóng thử lệnh huyền thoại nhưng nó không hoạt động, nhưng tôi nghĩ có lẽ tôi đã phạm sai lầm. Sẽ thử lại vào ngày mai. Cảm ơn một lần nữa!
Pat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.