Để phân loại với Rừng ngẫu nhiên trong R, người ta nên điều chỉnh như thế nào cho kích thước lớp không cân bằng?


16

Tôi đang khám phá các phương pháp phân loại khác nhau cho một dự án mà tôi đang thực hiện và quan tâm đến việc thử Rừng ngẫu nhiên. Tôi đang cố gắng giáo dục bản thân khi đi cùng, và sẽ đánh giá cao bất kỳ trợ giúp nào được cung cấp bởi cộng đồng CV.

Tôi đã chia dữ liệu của mình thành tập huấn luyện / kiểm tra. Từ thử nghiệm với các khu rừng ngẫu nhiên trong R (sử dụng gói RandomForest), tôi đã gặp rắc rối với tỷ lệ phân loại sai cao cho lớp nhỏ hơn của mình. Tôi đã đọc bài viết này liên quan đến hiệu suất của các khu rừng ngẫu nhiên trên dữ liệu mất cân bằng và các tác giả đã trình bày hai phương pháp xử lý sự mất cân bằng lớp khi sử dụng các khu rừng ngẫu nhiên.

1. Rừng ngẫu nhiên có trọng số

2. Rừng ngẫu nhiên cân bằng

Gói R không cho phép tính trọng số của các lớp (từ các diễn đàn trợ giúp R, tôi đã đọc tham số classwt không hoạt động đúng và được lên lịch như là một sửa lỗi trong tương lai), vì vậy tôi có thể chỉ định tùy chọn 2. Tôi có thể chỉ định số lượng đối tượng được lấy mẫu từ mỗi lớp cho mỗi lần lặp của khu rừng ngẫu nhiên.

Tôi cảm thấy không yên tâm về việc đặt kích thước mẫu bằng nhau cho các khu rừng ngẫu nhiên, vì tôi cảm thấy mình sẽ mất quá nhiều thông tin về lớp lớn hơn dẫn đến hiệu suất kém với dữ liệu trong tương lai. Tỷ lệ phân loại sai khi lấy mẫu xuống lớp lớn hơn đã cho thấy sự cải thiện, nhưng tôi đã tự hỏi liệu có cách nào khác để đối phó với kích thước lớp mất cân bằng trong các khu rừng ngẫu nhiên không?


1
Am cũng phải đối mặt với vấn đề tương tự. Bạn có thể vui lòng cung cấp tập lệnh cho Rừng ngẫu nhiên có trọng số và rừng ngẫu nhiên dựa trên số liệu, nếu bạn có ?? Mong nhận được hồi âm của bạn

Câu trả lời:


5

Nếu bạn không thích những lựa chọn đó, bạn đã cân nhắc sử dụng phương pháp tăng cường thay thế chưa? Đưa ra một hàm mất thích hợp, tăng tự động hiệu chỉnh lại các trọng số khi nó đi cùng. Nếu bản chất ngẫu nhiên của các khu rừng ngẫu nhiên hấp dẫn bạn, thì việc tăng cường độ dốc ngẫu nhiên cũng xây dựng điều đó.


Xin chào David, cảm ơn vì lời đề nghị. Sẽ thúc đẩy trong / kết hợp với rừng ngẫu nhiên? Ngoài ra, tôi đã đọc được rằng việc tăng tốc có thể không áp dụng được với dữ liệu nhiễu. Dữ liệu mà tôi đang làm việc chứa nhiều biến "nhiễu" - Tôi hiện đang chạy các khu rừng ngẫu nhiên mà không có lựa chọn tính năng, lấy mẫu lớp lớn hơn để đối phó với sự mất cân bằng. Tôi đã nhận được kết quả chấp nhận được (phân loại chính xác 85% lớp nhỏ hơn và 93% lớp lớn hơn trong tập huấn luyện), nhưng những cải tiến luôn được hoan nghênh.
ialm

@Jonathan Tôi không có ý thức tốt về việc cần bao nhiêu tiếng ồn trước khi các khu rừng ngẫu nhiên bắt đầu vượt qua các phương pháp tăng cường khác nhau, nhưng ấn tượng của tôi là nó rất nhiều. Các gbmgói trong Rcó một "trọng lượng" hạn hoạt động, và bạn có thể làm tăng tính ngẫu nhiên trong một thời trang rất giống với rừng ngẫu nhiên bằng cách giảm với thuật ngữ "bag.fraction". Có vẻ như nó đáng để thử.
David J. Harris

@ DavidJ.Harris Boosting cũng bị mất cân bằng lớp học, đặc biệt là trong trường hợp hiếm có tuyệt đối, khi thông tin về các nhóm thiểu số còn thưa thớt
Antoine

2

Tôi nghĩ rằng các đối tượng trọng số bằng cách nào đó tương đương với việc nhân đôi chúng. Có lẽ bạn nên thử sửa đổi bước bootstrap bằng cách lấy mẫu thích hợp các lớp khác nhau của bạn.

0,5


0

Thay vì lấy mẫu các lớp lớn, bạn có thể mở rộng các lớp nhỏ! Nếu các lớp lớn có nhiều lần quan sát hơn thì nhỏ, thì biase sẽ nhỏ. Tôi hy vọng bạn có thể xử lý tập dữ liệu siêu lớn đó.

Bạn cũng có thể xác định các tập hợp con của các quan sát xử lý nhiều thông tin nhất về các lớp lớn, có nhiều quy trình có thể, đơn giản nhất tôi nghĩ là dựa trên phương pháp lân cận gần nhất - lấy mẫu quan sát dựa trên cấu trúc biểu đồ lân cận đảm bảo rằng mẫu sẽ có mật độ xác suất giống với Ban đầu.

RandomForest được viết bằng Fortran và c, mã nguồn có sẵn (http://cran.r-project.org/src/contrib/randomForest_4.6-2.tar.gz) nhưng tôi không thể phát hiện ra nơi tính toán enthropy, ps. Up ngẫu nhiên sử dụng Gini thay vì enthropy


Xác định tập hợp con của các quan sát trong lớp lớn hơn có vẻ như là một ý tưởng thú vị. Phần thứ hai của dự án thực sự là phân biệt lớp lớn hơn thành các nhóm nhỏ hơn, hữu ích có thể hữu ích cho nghiên cứu trong tương lai. Đối với các tính toán entropy trong mã, tôi chưa thực sự đào sâu vào mã và chỉ xem xét một số lý thuyết đằng sau rf, vì vậy tôi không thể nhận xét về điều đó.
ialm

Tôi muốn sửa đổi mã đó từ lâu, nhưng thiếu thời gian cho việc đó, việc thêm trọng lượng sẽ không khó khăn về mặt khái niệm.
Qbik

Rừng ngẫu nhiên trong R có thể được sử dụng làm công cụ hồi quy, có thể nó cũng hữu ích cho việc phân loại không giám sát. Tôi muốn sửa đổi mã của RandomForest từ lâu, nhưng thiếu thời gian cho việc đó, việc thêm trọng lượng sẽ khó khăn về mặt khái niệm. Thời gian trước, tôi đã tự hỏi làm thế nào để sử dụng rừng ngẫu nhiên cho việc phân cụm không giám sát và tôi đã có một ý tưởng nhưng chưa thử nghiệm điều đó, thật không may, nó dường như khá đòi hỏi một cách thận trọng - Numofobservations ^ 2.
Qbik

0

(1) Bạn đúng chức năng cân không hoạt động và không chắc nó đã được sửa chưa.

(2) Hầu hết sử dụng tùy chọn 2 với dữ liệu cân bằng. Chìa khóa để không mất quá nhiều dữ liệu là lấy mẫu phân tầng. Bạn lấy mẫu ngẫu nhiên một bộ cân bằng duy nhất cho mỗi cây.


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.