Tôi đang làm việc với một vấn đề đa kính với 9 nhãn có thể, trong đó tôi có một bộ dữ liệu bao gồm ~ 50.000 ví dụ và ~ 200 tính năng mỗi nhãn. Mỗi ví dụ chỉ có thể thuộc về một lớp. Dữ liệu khá cân bằng giữa các nhãn khác nhau.
Với sự mạnh mẽ và khả năng mở rộng của nó, tôi quyết định sử dụng Rừng ngẫu nhiên (với một nhóm gồm 1000 cây) làm phương pháp học tập. Để đánh giá độ chính xác hiệu năng của mô hình được cung cấp cho bộ dữ liệu này, tôi đã sử dụng xác thực chéo stratified5Fold (Tôi đang sử dụng scikit-learn 0.18).
Do Random Forest vốn có thể xử lý các bộ dữ liệu đa kính, tôi đã sử dụng nó trực tiếp trên tập dữ liệu đã cho và thu được độ chính xác 79,5 0,3. Tôi cũng muốn biết những tính năng có tầm quan trọng hơn, một cái gì đó có thể dễ dàng chiết xuất từ các thuộc tính feature_importances_ trong RandomForestClassifier của scikit. Tuy nhiên, do bộ dữ liệu được cân bằng tốt và, như mong đợi, có gần 200 số tính năng trong số 200 để đóng góp cho các lớp khác nhau, tôi không thể tách biệt các tính năng nào đóng góp nhiều nhất cho mỗi lớp.
Do đó, tôi đã áp dụng chiến lược một đối một bằng cách sử dụng cùng một thiết lập Rừng ngẫu nhiên (bằng cách nhạy cảm với chi phí, có tính đến sự mất cân đối của dữ liệu khi sử dụng chiến lược oneVsAll), cho phép tôi xem cho từng lớp so với phần còn lại mà các tính năng quan trọng hơn. Kết quả mà tôi thu được về điều này là hợp lý. Hơn nữa, khi nhìn vào hiệu suất của mô hình sử dụng chiến lược này, tôi đã nhận được độ chính xác 88,7 0,2, điều làm tôi ngạc nhiên khi tôi đang mong đợi Rừng ngẫu nhiên đa sắc sẽ phân loại tốt hơn với tính chất đa giác của nó.
Tôi có đúng về điều này? Sự khác biệt về độ chính xác như vậy có thể hợp lý không? Hơn nữa, chiến lược trên có được chấp nhận hay không và công bằng cho rằng Random Forest tự nó có thể giải quyết các vấn đề đa kính mà không có bất kỳ "hack" nào như chiến lược oneVsAll?