Tôi nghi ngờ điều bạn thấy khó hiểu là: bạn có thể thấy nơi scikit-learn tính toán độ dốc âm của hàm mất và khớp với một ước lượng cơ sở cho gradient âm đó. Dường như phương pháp _update_terminal_region
có trách nhiệm tìm ra kích thước bước, nhưng bạn không thể thấy bất kỳ nơi nào có thể giải quyết vấn đề giảm thiểu tìm kiếm dòng như được viết trong tài liệu.
Lý do bạn không thể tìm thấy một tuyến tìm kiếm xảy ra là, đối với trường hợp đặc biệt của các biến hồi quy cây quyết định, đó chỉ là các hàm hằng số piecewise, giải pháp tối ưu thường được biết. Ví dụ, nếu bạn nhìn vào phương pháp _update_terminal_region
của hàm mất LeastAbsoluteError
, bạn thấy rằng các lá của cây được cho giá trị của trung bình trọng số của sự khác biệt giữa y
và giá trị được dự đoán cho các ví dụ mà lá đó có liên quan . Trung bình này là giải pháp tối ưu đã biết.
Để tóm tắt những gì đang xảy ra, đối với mỗi gradient descent lặp các bước sau đây được thực hiện:
Tính gradient tiêu cực của hàm tổn thất tại các dự đoán hiện nay.
Phù hợp với DecisionTreeRegressor
với độ dốc âm. Phụ kiện này tạo ra một cây có phân chia tốt để giảm tổn thất.
Thay thế giá trị tại các lá của DecisionTreeRegressor
bằng các giá trị giảm thiểu tổn thất. Chúng thường được tính từ một số công thức đơn giản đã biết, lợi dụng thực tế là cây quyết định chỉ là một hàm hằng số piecewise.
Phương pháp này ít nhất phải được mô tả trong tài liệu, nhưng tôi nghĩ trong một số trường hợp có thể không giống với nó.
Câu hỏi của bạn là nhiều hơn về chính thuật toán Tăng cường Gradient hoặc triển khai sklearn? Bạn có thể xem phần giới thiệu wekipedia (https://en.wikipedia.org/wiki/Gradient_boosting) để biết thêm chi tiết về thuật toán. – hsc
@hsc Sẽ hữu ích hơn nếu bạn đã tham khảo [bài viết wikipedia trên Tìm kiếm dòng] (https://en.wikipedia.org/wiki/Line_search). Tôi đã đọc cả hai bài báo nhiều lần. (Tôi thực sự có một nắm bắt khá tốt về tăng cường gradient vào thời điểm này với tìm kiếm dòng là mảnh duy nhất thoát khỏi tôi.) – Ben
Có lẽ http://stats.stackexchange.com là phù hợp hơn cho câu hỏi này – Sentry