Sự khác biệt về toán học giữa GBM, XGBoost, LightGBM, CatBoost?


33

Có tồn tại một số triển khai của họ mô hình GBDT, chẳng hạn như:

  • GBM
  • XGBoost
  • LightGBM
  • Catboost.

Sự khác biệt toán học giữa các triển khai khác nhau là gì?

Catboost dường như vượt trội so với các triển khai khác ngay cả khi chỉ sử dụng các tham số mặc định của nó theo dấu mốc này , nhưng nó vẫn rất chậm.

Tôi đoán là catboost không sử dụng các biến được làm mờ, do đó trọng số cho mỗi biến (phân loại) cân bằng hơn so với các triển khai khác, vì vậy các biến số cardinality cao không có trọng số hơn các biến khác. Nó cho phép phân loại yếu (với số lượng thẻ thấp) đi vào một số cây, do đó hiệu suất tốt hơn. Ngoài ra, tôi không có lời giải thích thêm.


Điểm chuẩn được giới thiệu là bởi đội yandex / catboost, chúng tôi cần một điểm độc lập.
mrgloom

Câu trả lời:


27
My guess is that catboost doesn't use the dummified variables, so the weight given to each (categorical) variable is more balanced compared to the other implementations, so the high-cardinality variables don't have more weight than the others.

https://arxiv.org/abs/1706.09516

Bạn muốn xem bài báo tiếng Anh này từ nhóm Yandex về tính độc đáo toán học của CATBoost.

Tôi đã đọc nó một cách ngắn gọn và trong số ít điều tôi có thể hiểu nhanh là thực tế là họ không sử dụng phần dư thu được trên TRAIN để thực hiện TRAIN , vì những phần dư này tạo ra sự thiên vị lạc quan về chất lượng học tập. ( Cập nhật: tính mới này mang đến một cách để chống lại quá mức, đó là một trong những lý do thuật toán hoạt động tốt hơn so với các chất tương tự của nó, ngoài nhiều cách khác nhau để xử lý các biến phân loại).

Tôi xin lỗi vì đã không cung cấp cho bạn một câu trả lời cụ thể và đầy đủ.

Sự khác biệt về toán học giữa GBM, XGBoost

Đầu tiên tôi khuyên bạn nên đọc một bài báo của Friedman về Gradient Boosting Machine được áp dụng cho các mô hình hồi quy tuyến tính, phân loại và cây quyết định nói riêng. https://statweb.stanford.edu/~jhf/ftp/trebst.pdf

Tôi sẽ không đi vào chi tiết ở đây. Nó chỉ là một bài đọc tốt bao gồm nhiều loại mất mát (L) và bên cạnh khái niệm quan trọng khác nhau. Tất nhiên đây là một bài báo quan trọng về việc thực hiện phương pháp gốc trong không gian của các hàm (mô hình mức thấp) chứ không phải là các tham số để theo đuổi giảm thiểu tổn thất.

Nếu bạn xem tại đây: https://arxiv.org/pdf/1603.02754.pdf

Bạn tìm thấy một họa tiết toán học cho mô hình XGBoost của Tianqi Chen et al. Bây giờ nó trở nên thú vị. Một vài sai lệch toán học của mô hình này tạo thành GBM cổ điển của Friedman là:

  • Các tham số được chuẩn hóa (bị phạt) (và chúng tôi nhớ rằng các tham số trong boossting là hàm, cây hoặc mô hình tuyến tính): L1 và L2 có sẵn.

nhập mô tả hình ảnh ở đây

  • Sử dụng các dẫn xuất thứ hai để tăng tốc quá trình (nếu nó được sử dụng trước khi xin vui lòng sửa cho tôi).

Đến thời điểm này: nhìn vào đây để tìm ra cách thực hiện mất lượng tử trong CATBoost, có ích và cung cấp cả dẫn xuất thứ nhất và thứ hai: https://github.com/catboost/catboost/blob/master/catboost/libs/algo/ error_fifts.h

class TQuantileError : public IDerCalcer<TQuantileError, /*StoreExpApproxParam*/ false> { public:
    const double QUANTILE_DER2 = 0.0;

    double Alpha;
    SAVELOAD(Alpha);

    explicit TQuantileError(bool storeExpApprox)
        : Alpha(0.5)
    {
        CB_ENSURE(storeExpApprox == StoreExpApprox, "Approx format does not match");
    }

    TQuantileError(double alpha, bool storeExpApprox)
        : Alpha(alpha)
    {
        Y_ASSERT(Alpha > -1e-6 && Alpha < 1.0 + 1e-6);
        CB_ENSURE(storeExpApprox == StoreExpApprox, "Approx format does not match");
    }

    double CalcDer(double approx, float target) const {
        return (target - approx > 0) ? Alpha : -(1 - Alpha);
    }

    double CalcDer2(double = 0, float = 0) const {
        return QUANTILE_DER2;
    } };

Mặc dù bạn không thể tìm thấy chức năng mất L1 hữu ích này trong XGBoost, bạn có thể thử so sánh việc triển khai của Yandex với một số chức năng mất tùy chỉnh được viết cho XGB.

  • Bên cạnh đó, CATBoost hoạt động xuất sắc với các tính năng phân loại, trong khi XGBoost chỉ chấp nhận đầu vào số.

Xem xét liên kết này: https://tech.yandex.com/catboost/doc/dg/con accept / alacticm-main-stages_cat-to-numberic-docpage / # al Thuậtm-main-stages_cat-to-numberic

Họ cung cấp nhiều cách khác nhau để cung cấp các tính năng phân loại cho đào tạo mô hình trên cơ sở sử dụng phương pháp tiếp cận nóng và nổi tiếng cũ. Giảm kích thước của một không gian đầu vào mà không mất nhiều thông tin là một trong những lý do có thể khiến mô hình được trang bị ít bị thừa.

Tôi xong rồi Tôi không sử dụng LightGBM, vì vậy không thể làm sáng tỏ nó.


5
Tôi tự hỏi tại sao một người nào đó hạ thấp câu trả lời mà không đưa ra câu trả lời tốt hơn? Chào mừng bạn đến với sân khấu để đưa ra bất kỳ đầu vào nào ngoài việc thực hiện hạ cấp ẩn danh, thưa ông.
Alexey nói Phục hồi lại

nó trả lời chính xác câu hỏi của tôi cho catboost. Bạn có bất kỳ tài liệu bổ sung nào cho LightGBM, XGBoost và GBM không?
Metariat

Vâng, tôi sẽ đưa ra câu trả lời của tôi. Bạn có đối phó tốt với toán học khó hay thích giải thích trực quan hơn?
Alexey nói Phục hồi Monica

Cảm ơn bạn, tôi có thể đối phó tốt với cả hai, giải thích trực quan nhanh hơn để có được, và các chi tiết toán học mất nhiều thời gian hơn nhưng rất có lợi cho sự hiểu biết / triển khai hơn nữa.
Metariat

1
Trả lời phong phú.
Alexey nói Phục hồi Monica
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.