2012-09-11 44 views
6

Tôi đang sử dụng gói randomForest trong nền tảng R để phân loại nhiệm vụ.Đường cong ROC để phân loại từ randomForest

rf_object<-randomForest(data_matrix, label_factor, cutoff=c(k,1-k)) 

trong đó k dao động từ 0,1 đến 0,9.

pred <- predict(rf_object,test_data_matrix) 

Tôi có kết quả từ trình phân loại rừng ngẫu nhiên và tôi đã so sánh nó với nhãn. Vì vậy, tôi có các biện pháp hiệu suất như độ chính xác, MCC, độ nhạy, độ đặc hiệu, vv cho 9 điểm cắt.

Bây giờ, tôi muốn vẽ đường cong ROC và lấy khu vực dưới đường cong ROC để xem hiệu suất tốt như thế nào. Hầu hết các gói trong R (như ROCR, pROC) đều yêu cầu dự đoán và nhãn nhưng tôi có độ nhạy (TPR) và độ đặc hiệu (1-FPR).

Có thể bất kỳ ai đề xuất tôi nếu phương pháp cắt là đúng hay đáng tin cậy để tạo đường cong ROC? Bạn có biết cách nào để có được đường cong và diện tích ROC dưới đường cong bằng TPR và FPR không?

Tôi cũng đã cố gắng sử dụng lệnh sau để đào tạo rừng ngẫu nhiên. Bằng cách này, các dự đoán liên tục và được chấp nhận đối với các gói ROCRpROC trong R. Tuy nhiên, tôi không chắc liệu đây có phải là cách chính xác hay không. Bất cứ ai có thể đề nghị tôi về phương pháp này?

rf_object <- randomForest(data_matrix, label_vector) 
pred <- predict(rf_object, test_data_matrix) 

Cảm ơn bạn đã dành thời gian đọc sự cố của mình! Tôi đã dành nhiều thời gian lướt sóng cho việc này. Cảm ơn bạn đã gợi ý/lời khuyên của bạn.

Trả lời

13

Tại sao bạn không xuất ra xác suất lớp học? Bằng cách này, bạn có một bảng xếp hạng các dự đoán của bạn và bạn có thể trực tiếp nhập dữ liệu đó vào bất kỳ gói ROC nào.

m = randomForest(data_matrix, labels) 
predict(m,newdata_matrix,type='prob') 

Lưu ý rằng, để sử dụng randomForest làm công cụ phân loại, labels phải là vectơ có hệ số.

Các vấn đề liên quan