GBM so với XGBOOST? Sự khác biệt chính?


40

Tôi đang cố gắng tìm hiểu sự khác biệt chính giữa GBM và XGBOOST. Tôi đã cố gắng google nó, nhưng không thể tìm thấy bất kỳ câu trả lời hay nào giải thích sự khác biệt giữa hai thuật toán và tại sao xgboost hầu như luôn hoạt động tốt hơn GBM. Điều gì làm cho XGBOOST nhanh như vậy?


XGBoost không phải là rằng fast.Refer để thí nghiệm này
agcala

Câu trả lời:


36

Trích dẫn của tác giả xgboost:

Cả xgboost và gbm đều tuân theo nguyên tắc tăng cường độ dốc. Tuy nhiên, có sự khác biệt trong chi tiết mô hình. Cụ thể, xgboost đã sử dụng một mô hình chính quy hóa thường xuyên hơn để kiểm soát sự phù hợp quá mức, mang lại hiệu suất tốt hơn.

Chúng tôi đã cập nhật một hướng dẫn toàn diện về giới thiệu về mô hình mà bạn có thể muốn xem qua. Giới thiệu về cây Boosted

Tuy nhiên, tên xgboost thực sự đề cập đến mục tiêu kỹ thuật để đẩy giới hạn tài nguyên tính toán cho các thuật toán cây được tăng cường. Đó là lý do tại sao nhiều người sử dụng xgboost. Đối với mô hình, nó có thể phù hợp hơn khi được gọi là tăng cường độ dốc thường xuyên.

Chỉnh sửa: Có một hướng dẫn chi tiết về xgboost cho thấy nhiều sự khác biệt.

Tài liệu tham khảo

https://www.quora.com/What-is-the-difference-b between-the-R-ggb-nâng cấp

https://xgboost.readthedocs.io/en/latest/tutorials/model.html


2
Câu trả lời tốt. OP cũng hỏi tại sao xgboost lại nhanh đến vậy. Lý do là vì mặc dù không thể làm tê liệt bản hòa tấu vì mỗi cây phụ thuộc vào trước đó, bạn có thể làm tê liệt việc xây dựng một số nút trong mỗi độ sâu của mỗi cây. Những loại chi tiết này là những gì làm cho xgboost rất nhanh.
Ricardo Cruz

13

Ngoài câu trả lời được đưa ra bởi Icyblade, các nhà phát triển của xgboost đã thực hiện một số cải tiến hiệu suất quan trọng cho các phần khác nhau của việc triển khai, điều này tạo ra sự khác biệt lớn về tốc độ và việc sử dụng bộ nhớ:

  1. Sử dụng ma trận thưa thớt với các thuật toán nhận biết thưa thớt
  2. Cải thiện cấu trúc dữ liệu để sử dụng bộ đệm bộ xử lý tốt hơn giúp nhanh hơn.
  3. Hỗ trợ tốt hơn cho xử lý đa lõi làm giảm thời gian đào tạo tổng thể.

Theo kinh nghiệm của tôi khi sử dụng GBM và xgboost trong khi đào tạo bộ dữ liệu lớn (5 triệu + bản ghi), tôi đã giảm đáng kể việc sử dụng bộ nhớ (trong R) cho cùng một tập dữ liệu và thấy việc sử dụng nhiều lõi dễ dàng hơn để giảm thời gian đào tạo.


10

Một sự khác biệt rất quan trọng là xgboostđã triển khai DART, việc bỏ chuẩn hóa cho cây hồi quy .

Tài liệu tham khảo

Rashmi, KV, & Gilad-Bachrach, R. (2015). Phi tiêu: Người bỏ học gặp nhiều cây hồi quy phụ gia. bản in sẵn arXiv arXiv: 1505.01866.


1
Dart cũng được thực hiện trong LGBM bao gồm xgboost_dart_mode .
agcala

0

Tôi nghĩ rằng sự khác biệt giữa tăng cường độ dốc và Xgboost là trong xgboost, thuật toán tập trung vào sức mạnh tính toán, bằng cách song song với sự hình thành cây mà người ta có thể thấy trong blog này .

Tăng cường độ dốc chỉ tập trung vào phương sai chứ không phải đánh đổi giữa sai lệch khi tăng xg cũng có thể tập trung vào yếu tố chính quy.


-1

XGBoost thực hiện là lỗi. Tai nạn âm thầm khi đào tạo về GPU trên phiên bản 082 . Nó cũng xảy ra với tôi vào ngày 0.90 , vì vậy vấn đề chưa được giải quyết cho đến nay và "cách khắc phục" được cung cấp trong GitHub không hiệu quả với tôi.

LGBM 2.3.1 hoạt động như một bùa mê, mặc dù việc cài đặt nó đòi hỏi nhiều nỗ lực hơn một chút. Cho đến nay không có vấn đề đào tạo về GPU.

Về XGBoost là " quá nhanh ", bạn nên xem qua các điểm chuẩn này .


OP không hỏi về xgboost so với lightgbm.
oW_
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.