Tôi nên chọn công cụ hồi quy hoặc phân loại rừng ngẫu nhiên?


11

Tôi phù hợp với một tập dữ liệu với một lớp mục tiêu nhị phân theo rừng ngẫu nhiên. Trong python, tôi có thể làm điều đó bằng Randomforest classifier hoặc Randomforestregressor.

Tôi có thể nhận được phân loại trực tiếp từ phân loại ngẫu nhiên hoặc tôi có thể chạy ngẫu nhiên trước khi đăng ký và nhận lại một tập hợp các điểm ước tính (giá trị liên tục). Sau đó, tôi có thể tìm thấy một giá trị ngưỡng để rút ra các lớp dự đoán trong số các điểm số. Cả hai phương thức đều có thể đạt được cùng một mục tiêu (nghĩa là dự đoán các lớp cho dữ liệu thử nghiệm).

Ngoài ra tôi có thể quan sát rằng

randomforestclassifier.predict_proba(X_test)[:,1]) 

la khac nhau tư

randomforestregressor.predict(X_test)

Vì vậy, tôi chỉ muốn xác nhận rằng cả hai phương pháp đều hợp lệ và sau đó phương pháp nào tốt hơn trong ứng dụng rừng ngẫu nhiên?


1
Phản ứng ngay lập tức của tôi là bạn nên sử dụng trình phân loại vì đây chính xác là những gì nó được xây dựng cho, nhưng tôi không chắc chắn 100% nó có nhiều khác biệt. Sử dụng hồi quy sẽ giống như sử dụng hồi quy tuyến tính thay vì hồi quy logistic - nó hoạt động, nhưng không tốt trong nhiều tình huống. Tôi có thể nhận được một câu trả lời thích hợp nhưng không phải trong một ngày hoặc lâu hơn.
Peter Ellis

Câu trả lời:


7

Sử dụng Trình phân loại. Không, cả hai đều không hợp lệ.

Đầu tiên, tôi thực sự khuyến khích bạn đọc chính mình vào chủ đề Hồi quy vs Phân loại. Bởi vì sử dụng ML mà không biết gì về nó sẽ cho bạn kết quả sai mà bạn sẽ không nhận ra. Và điều đó khá nguy hiểm ... ( hơi giống như hỏi bạn nên cầm súng theo cách nào hoặc nếu điều đó không quan trọng )

Cho dù bạn sử dụng một trình phân loại hay một hồi quy chỉ phụ thuộc vào loại vấn đề bạn đang giải quyết. Bạn có một vấn đề phân loại nhị phân , vì vậy hãy sử dụng trình phân loại.

Tôi có thể chạy Randomforestregressor trước và lấy lại một tập các xác suất ước tính.

KHÔNG. Bạn không nhận được xác suất từ ​​hồi quy. Nó chỉ cố gắng "ngoại suy" các giá trị bạn đưa ra (trong trường hợp này chỉ là 0 và 1). Điều này có nghĩa là các giá trị trên 1 hoặc dưới 0 hoàn toàn hợp lệ dưới dạng đầu ra hồi quy vì nó không chỉ mong đợi hai giá trị riêng biệt là đầu ra (được gọi là phân loại !) Mà là các giá trị liên tục.

Nếu bạn muốn có "xác suất" ( lưu ý rằng các xác suất này không phải được hiệu chỉnh tốt ) cho một điểm nhất định thuộc về một lớp nhất định, hãy đào tạo một trình phân loại (để nó học cách phân loại dữ liệu) và sau đó sử dụng .predict_proba (), sau đó dự đoán xác suất.

Chỉ cần đề cập đến nó ở đây: .predict vs .predict_proba (đối với một phân loại!)
.Predict chỉ mất sản lượng .predict_proba và thay đổi mọi thứ để 0 dưới một ngưỡng nhất định (thường là 0.5) tương ứng tới 1 trên ngưỡng đó.

Ghi chú: chắc chắn, trong nội bộ, chúng rất giống nhau ngoại trừ từ "lớp cuối cùng", v.v.! Tuy nhiên, xem họ (hoặc tốt hơn là vấn đề họ đang giải quyết) là hoàn toàn khác nhau!

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.