Ước tính lỗi xuất túi để tăng?


9

Trong Rừng ngẫu nhiên, mỗi cây được trồng song song trên một mẫu dữ liệu độc đáo. Bởi vì mỗi mẫu boostrap dự kiến ​​sẽ chứa khoảng 63% các quan sát duy nhất, điều này để lại khoảng 37% các quan sát, có thể được sử dụng để kiểm tra cây.

Bây giờ, có vẻ như trong Stochastic Gradient Boosting, cũng có một ước tính tương tự như trong RF:ÔiÔiBerror

Nếu bag.fraction được đặt lớn hơn 0 (khuyến nghị 0,5), gbm sẽ tính toán ước tính vượt túi về sự cải thiện hiệu suất dự đoán. Nó đánh giá việc giảm độ lệch đối với những quan sát không được sử dụng trong việc chọn cây hồi quy tiếp theo.

Nguồn: Ridgeway (2007) , phần 3.3 (trang 8).

Tôi gặp khó khăn trong việc hiểu làm thế nào nó hoạt động / là hợp lệ. Nói rằng tôi đang thêm một cây trong chuỗi. Tôi đang trồng cây này trên một mẫu con ngẫu nhiên của tập dữ liệu gốc. Tôi có thể kiểm tra cây duy nhất này trên các quan sát không được sử dụng để trồng nó. Đã đồng ý. NHƯNG , vì Boosting là tuần tự, tôi thay vì sử dụng toàn bộ chuỗi cây được xây dựng cho đến nay để đưa ra dự đoán cho những quan sát còn sót lại. Và, có khả năng cao là nhiều cây trước đó đã nhìn thấy những quan sát này. Vì vậy, mô hình không thực sự được thử nghiệm ở mỗi vòng trên các quan sát chưa thấy như với RF, phải không?

Vì vậy, làm thế nào mà cái này được gọi là ước tính lỗi "hết túi"? Đối với tôi, nó dường như không "nằm ngoài" bất kỳ chiếc túi nào vì những quan sát đã được nhìn thấy?


1
Xem cuộc thảo luận ở đây github.com/scikit-learn/scikit-learn/pull/1806 . Bạn không đơn độc trong việc thể hiện mối quan tâm về cách tính toán ước tính OOB.
mpiktas

cảm ơn vì liên kết, nhưng thật không may, tất cả những người đóng góp chủ đề dường như bị mất như tôi!
Antoine

1
Thật ra là không. Xem github.com/scikit-learn/scikit-learn/pull/2188 . Trong cam kết này, điểm OOB được thay đổi thành OOB cải thiện cách gbm thực hiện. Tôi không biết ý tưởng này hoạt động chính xác như thế nào, nhưng từ những gì tôi thu thập được, mẫu oob cho cây hiện tại được sử dụng để tính toán cải thiện OOB. Tôi đã không quản lý để tìm các công thức toán học, vì vậy cần phải đào sâu vào mã gbm để xem chính xác sự cải thiện này được tính toán như thế nào.
mpiktas

@Antoine Câu hỏi thực sự thú vị! một câu trả lời dứt khoát được tìm thấy?
Soren Havelund Welling

1
Không, không may. Một số gợi ý được đưa ra bởi các liên kết ở trên (trong các bình luận), chủ đề này và chủ đề khác . Điều này đang khiến tôi phát điên hoàn toàn. Một ngày nào đó nên gửi email cho Tiến sĩ Friedman / Hastie ... Cảm ơn vì sự chú ý của bạn.
Antoine

Câu trả lời:


2

Chỉ trả lời một phần (và thêm một câu hỏi mới vào câu hỏi của bạn).

Việc triển khai gbm trong R http://www.rdocumentation.org/packages/gbm/fifts/gbm có hai tham số để điều chỉnh một số lỗi.

a) train.fractionsẽ xác định tỷ lệ dữ liệu được sử dụng để huấn luyện tất cả các cây và do đó 1- train.fractionsẽ là dữ liệu OOB (ngoài túi) thực sự.

b) bag.fractionsẽ xác định tỷ lệ dữ liệu huấn luyện sẽ được sử dụng trong việc tạo cây tiếp theo trong đợt tăng. Do đó, có thể có một số dữ liệu không bao giờ được sử dụng để tạo bất kỳ cây nào và chúng có thể thực sự được sử dụng làm dữ liệu OOB. (Nhưng không chắc, hãy xem câu hỏi dưới đây)

0,37ntreeSntreeerr.rateconfusion

Tôi không biết làm thế nào để trả lời câu hỏi đó (và tôi cảm ơn bạn (+1) vì đã đặt câu hỏi và khiến tôi nhận ra tôi không hiểu khía cạnh này của RandomForests). Giải pháp khả thi là chỉ có một bootstrap - và tất cả các cây được xây dựng từ nó - nhưng theo tôi biết, đó không phải là trường hợp.


Đối với RF / Đóng bao, không có vấn đề gì: tại bất kỳ bước nào trong quy trình xây dựng quần thể, mọi quan sát trong bộ dữ liệu ban đầu đều có thể được cung cấp cho tất cả các cây được đào tạo trên các mẫu boostrap không có quan sát này. Khoảng một phần ba (~ 37%) tổng số cây sẽ đáp ứng điều kiện này. Hơn nữa, bằng cách để những cây này bỏ phiếu và tham gia lớp phổ biến nhất, có thể dự đoán được cho việc quan sát. Số lần dự đoán khác với nhãn thực của quan sát trung bình trên tất cả các lớp, đưa ra ước tính lỗi ngoài túi
Antoine

1
Ngoài ra, có vẻ như những gì mang lại cho khả năng ước tính lỗi OOB trong Boosting không đến từ train.fractiontham số (vốn chỉ là một tính năng của hàm gbm nhưng không có trong thuật toán gốc) mà thực sự chỉ là một mẫu phụ của dữ liệu được sử dụng để huấn luyện từng cây theo trình tự, bỏ qua các quan sát (có thể được sử dụng để thử nghiệm). Mà quay trở lại câu hỏi ban đầu của tôi. Làm thế nào những quan sát này có thể được sử dụng để thử nghiệm vì có thể chúng đã được nhìn thấy nhiều lần bởi nhiều cây trước đó trong chuỗi?
Antoine

quên đề cập rằng mỗi cây trong RF thực sự được xây dựng từ mẫu bootstrap độc đáo, rất riêng của dữ liệu gốc
Antoine

@ user2835597 cảm ơn bạn đã giải thích về RF. Do đó, lỗi OOB của RF thực sự chỉ đánh giá 1/3 số cây trong rừng (điều đó có vẻ không hữu ích lắm đối với tôi). Vâng, học một cái gì đó hàng ngày.
Jacques Wainer

Dù sao, tham số train.fraction dường như là câu trả lời cho câu hỏi của bạn. Việc triển khai sklearn cũng có một tham số tương tự, mẫu phụ (xem scikit-learn.org/urdy/modules/generated/ Kẻ
Jacques Wainer

-2

Tôi tin rằng họ làm ra ước tính túi trên mỗi bước. Vì kết quả của tất cả các bước được thêm vào (với các hệ số), lỗi OOB cũng có thể được thêm vào với cùng hệ số.

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.