Cây tăng cường độ dốc XGBoost vs Python Sklearn


20

Tôi đang cố gắng để hiểu XGBoost hoạt động như thế nào. Tôi đã hiểu cách cây tăng cường độ dốc hoạt động trên Python sklearn. Điều không rõ ràng với tôi là nếu XGBoost hoạt động theo cùng một cách, nhưng nhanh hơn hoặc nếu có sự khác biệt cơ bản giữa nó và việc thực hiện python.

Khi tôi đọc bài báo này

http://learningsys.org/ con / LearningSys_2015_apers_32.pdf

Đối với tôi có vẻ như kết quả cuối cùng của XGboost giống như trong triển khai Python, tuy nhiên sự khác biệt chính là cách XGboost tìm ra sự phân chia tốt nhất để thực hiện trong mỗi cây hồi quy.

Về cơ bản, XGBoost cho kết quả tương tự, nhưng nó nhanh hơn.

Điều này có đúng không, hay còn thiếu điều gì khác không?

Câu trả lời:


18

Bạn đã đúng, XGBoost ('eXtreme Gradient Boosting') và GradientBoost của sklearn về cơ bản giống nhau vì cả hai đều là các triển khai tăng cường độ dốc.

Tuy nhiên, có sự khác biệt rất đáng kể dưới mui xe trong một ý nghĩa thực tế. XGBoost nhanh hơn rất nhiều (xem http://machinelearningmastery.com/gentle-intributiontion-xgboost-applied-machine-learning/ ) so với sklearn. XGBoost khá hiệu quả về bộ nhớ và có thể song song (tôi nghĩ mặc định sklearn không thể làm như vậy, tôi không biết chính xác về hiệu quả bộ nhớ của sklearn nhưng tôi khá tự tin rằng nó nằm dưới XGBoost).

Đã sử dụng cả hai, tốc độ của XGBoost khá ấn tượng và hiệu suất của nó vượt trội so với GradientBoosting của sklearn.


1
Ngoài ra còn có một sự khác biệt hiệu suất. Xgboost đã sử dụng các dẫn xuất thứ hai để tìm hằng số tối ưu trong mỗi nút thiết bị đầu cuối. Việc thực hiện tiêu chuẩn chỉ sử dụng đạo hàm đầu tiên.
Zelazny7

@ Zelazny7 Bạn có tài liệu tham khảo nào cho tuyên bố của mình không? Người ta kỳ vọng rằng việc tính toán các công cụ phái sinh thứ 2 sẽ làm giảm hiệu suất. Điều đó cũng có nghĩa là một cái gì đó bên cạnh (bất kỳ hương vị nào) của độ dốc được sử dụng.
meh


2
Câu hỏi và trả lời có liên quan về Datascience: Tại sao xgboost lại nhanh hơn sklearn và ở đây os Stats: XGBoost Mất chức năng xấp xỉ với Taylor Expansion
Winks

Xác nhận bài đăng của @ K88, GradientBoostingClassifier của sklearn không có n_jobssẵn tham số giao diện; xử lý song song là không thể trong nội bộ với việc thực hiện thuật toán của sklearn.
bmc

7

Không giống như tăng cường độ dốc của Sklearn, Xgboost cũng thường xuyên hóa cây để tránh bị quá mức và nó cũng xử lý các giá trị bị thiếu một cách hiệu quả. Liên kết sau có thể hữu ích để tìm hiểu chính xác xgboost https://www.youtube.com/watch?v=Vly8xGnNiWs


GBM của SkLearn thực hiện chính quy hóa thông qua tham số learning_rate.
Teja Chebrole

1

XGboost đang triển khai GBDT với randmization (Nó sử dụng lấy mẫu coloumn và lấy mẫu hàng). Có thể lấy mẫu bằng cách không sử dụng tất cả dữ liệu đào tạo cho từng mô hình cơ sở của GBDT. Thay vì sử dụng tất cả dữ liệu huấn luyện cho từng mô hình cơ sở, chúng tôi lấy mẫu một tập hợp con của các hàng và chỉ sử dụng các hàng dữ liệu đó để xây dựng từng mô hình cơ sở. Điều này đảm bảo rằng có ít khả năng bị quá mức, đây là một vấn đề lớn với GBDT đơn giản mà XGBoost cố gắng giải quyết bằng cách sử dụng ngẫu nhiên nà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.