Trọng số dữ liệu gần đây hơn trong mô hình Rừng ngẫu nhiên


14

Tôi đang đào tạo một mô hình phân loại với Rừng ngẫu nhiên để phân biệt giữa 6 loại. Dữ liệu giao dịch của tôi có khoảng 60k + quan sát và 35 biến. Đây là một ví dụ về cách nó trông như thế nào.

 _________________________________________________
|user_id|acquisition_date|x_var_1|x_var_2| y_vay  |
|-------|----------------|-------|-------|--------|
|111    | 2013-04-01     | 12    | US    | group1 |
|222    | 2013-04-12     | 6     | PNG   | group1 |
|333    | 2013-05-05     | 30    | DE    | group2 |
|444    | 2013-05-10     | 78    | US    | group3 |
|555    | 2013-06-15     | 15    | BR    | group1 |
|666    | 2013-06-15     | 237   | FR    | group6 |

Khi mô hình được tạo, tôi muốn ghi điểm quan sát từ vài tuần trước. Vì đã có những thay đổi đối với hệ thống, các quan sát gần đây sẽ giống với môi trường của các quan sát hiện tại mà tôi muốn dự đoán hơn. Do đó, tôi muốn tạo một biến trọng số để Rừng ngẫu nhiên sẽ quan trọng hơn đối với các quan sát gần đây.

Có ai biết nếu gói RandomForest trong R có thể xử lý trọng số cho mỗi lần quan sát không?

Ngoài ra, bạn có thể vui lòng đề xuất phương pháp tốt để tạo biến trọng số là gì không? Ví dụ, vì dữ liệu của tôi là từ năm 2013, tôi đã nghĩ rằng tôi có thể lấy số tháng kể từ ngày làm trọng số. Có ai thấy một vấn đề với phương pháp này?

Rất cám ơn trước!


Bạn có thể xem xét đăng một câu hỏi trên stack overflow. Họ sẽ giúp bạn nhiều hơn với các vấn đề thực hiện. Trọng tâm của trang web này là dựa trên lý thuyết.
Alex Williams

Tôi có thể không đủ rõ ràng trong văn bản của tôi, nhưng câu hỏi của tôi không liên quan đến vấn đề thực hiện. Ví dụ, trong phần tôi đang hỏi về việc tạo biến trọng số, tôi không có ý hỏi lệnh nào trong R có thể giúp tôi làm điều đó. Tôi chỉ đơn giản là tự hỏi nếu tôi sẽ vi phạm bất kỳ giả định nào của khu rừng ngẫu nhiên.
Nikolay Nenov

1
Câu trả lời là không, tôi tin. Bạn có thể gán trọng số cho các nhóm khác nhau như tôi đã giải thích trong câu trả lời của tôi dưới đây. Tôi hiểu đây không phải là điều bạn quan tâm, nhưng nó là một ý tưởng tương tự. Bạn có thể thử sử dụng các quan sát trùng lặp như tôi đề nghị.
Alex Williams

Câu trả lời:


5

Các rangergói vào R ( pdf ), mà là tương đối mới, sẽ làm điều này. Việc thực hiện kiểm lâm của các khu rừng ngẫu nhiên có một case.weightsđối số lấy một vectơ với trọng số trường hợp / quan sát riêng lẻ.


Khéo léo! Đường may như giải pháp tôi đang tìm kiếm. Bạn có một liên kết đến các chi tiết về cách xác suất được tính case.weights không?
Nikolay Nenov

1
Tôi không chắc chắn 100% cách họ tính toán xác suất - nhưng tôi nghĩ, nếu bạn muốn bắt đầu, hãy xem bài báo này: Malley, JD, Kruppa, J., Dasgupta, A., Malley, KG, & Ziegler , A. (2012). Máy xác suất: ước tính xác suất phù hợp bằng cách sử dụng máy học không theo tỷ lệ. Phương pháp Inf Med 51: 74-81. dx.doi.org/10.3414/ME00-01-0052
GrantRWHumphries

7

Bạn có thể lấy mẫu lại dữ liệu để đại diện cho các điểm dữ liệu gần đây hơn. Rf liên quan đến một bước thay thế bằng cách thay thế và "đóng bao gần như cân bằng" cho các lớp không cân bằng sử dụng lấy mẫu để vượt qua lớp thiểu số và tạo ra kết quả là rừng ngẫu nhiên có trọng số tốt hơn hoặc tốt hơn theo kinh nghiệm của tôi.

Bạn có thể lấy mẫu lại ở cấp độ xây dựng ma trận đào tạo của bạn ( tham khảo ) thay vì trong quá trình đóng gói để giữ cho việc thực hiện dễ dàng mặc dù tôi sẽ đề nghị thực hiện nhiều lần lặp lại trong trường hợp đó.

Bên trong một số triển khai của rừng ngẫu nhiên bao gồm scikit-learn thực sự sử dụng trọng số mẫu để theo dõi số lần mỗi mẫu trong túi và nó phải tương đương với quá khổ ở cấp độ đóng bao và gần với quá khổ ở cấp độ đào tạo trong xác nhận chéo.


4

Bạn nên xem xét tham số "classwt". Đây dường như không phải là điều bạn quan tâm trực tiếp, nhưng nó có thể mang lại cho bạn cảm giác về những gì bạn muốn làm.

Xem tại đây: Câu hỏi trao đổi ngăn xếp # 1

Và đây: Câu hỏi về Stack Exchange # 2

Bài viết về rừng ngẫu nhiên có trọng số: PDF

Ý tưởng cơ bản là các lớp cân sao cho các nhóm / phân loại hiếm khi được quan sát có nhiều khả năng được chọn trong các mẫu bootstrap của bạn. Điều này hữu ích cho dữ liệu mất cân bằng (khi xác suất trước của các lớp khác nhau là khác nhau).

Dường như với tôi rằng bạn muốn làm một cái gì đó tương tự, nhưng đối với các sự kiện gần đây (không phải cho các nhóm / phân loại nhất định). Một cách đơn giản để làm điều này sẽ là tạo ra các quan sát trùng lặp (nghĩa là đặt vào các hàng lặp lại, giống hệt nhau) cho các quan sát gần đây hơn. Tuy nhiên, điều này có khả năng có thể không hiệu quả. Tôi không biết cách để trực tiếp cân mỗi quan sát trong R, nhưng tôi có thể không biết về nó.

Bạn có thể thử tìm kiếm các triển khai thay thế, ví dụ như trong C - tệ nhất, chúng có thể được tùy chỉnh với một chút mã hóa.


1
Cảm ơn rất nhiều cho các liên kết, Alex. Bài viết đưa ra các ví dụ tốt về các trường hợp bạn muốn cân nhắc phân loại của mình. Tuy nhiên, tôi e rằng điều này không hiệu quả với tôi, vì người ta không thể sử dụng tham số "classwt" cho bất kỳ thứ gì ngoài trọng số của bộ phân loại - tức là bạn cần một trọng số cho mỗi lớp, nếu không, RandomForest sẽ trả về lỗi.
Nikolay Nenov

1
Có, tôi không nghĩ rằng bạn có thể sử dụng "classwt" trực tiếp. Bạn muốn một số tham số như "quan sát" nhưng tôi không nghĩ nó tồn tại.
Alex Williams
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.