CatBoost 與其他提升演算法



如今,訓練結構化(表格)資料最有效的方法之一是提升演算法。以下三種廣為人知的提升演算法的使用,為贏得機器學習競賽提供了多種方法:CatBoost、XGBoost 和 LightGBM。

本章的主要內容將是 CatBoost,以及它與其他演算法相比的效能,以及何時應在其他方法之上使用它。

這三種演算法(CatBoost、XGBoost 和 LightGBM)評估的基礎是梯度提升技術。在繼續進行之前,很好地理解梯度提升將非常有用。梯度提升演算法有兩種型別,分別用於預測連續變數和類別變數,它們是分類器和迴歸器。

除了自適應提升(Adaboost)之外,此方法還包括基於使用梯度下降最佳化過程減少弱學習器的差異損失函式來訓練學習器。因此,每個學習器都獲得權重的相等分佈。梯度提升使用串聯的決策樹作為弱學習器。

由於其順序構建方式,其中決策樹一次新增一個,而不影響已存在的決策樹,因此它是一個階段性加性模型。

梯度提升的主要目標是減少模型的偏差誤差。由於其貪婪演算法,該演算法可以根據偏差方差權衡非常快地過擬合訓練資料集。但是,為了減少這種過擬合,可以應用正則化、收縮、樹限制和隨機梯度提升。

CatBoost 概述

與 XGBoost 和 LightGBM 排序器類似,CatBoost 也具有稱為 CatBoostRanking 的排序模式,但 CatBoost 提供比 XGBoost 和 LightGBM 更多強大的版本。差異包括 -

  • 排序 (YetiRank, YetiRankPairwise)

  • 成對 (PairLogit, PairLogitPairwise)

  • 排序 + 分類 (QueryCrossEntropy)

  • 排序 + 迴歸 (QueryRMSE)

  • 選擇前 1 個候選 (QuerySoftMax)

此外,CatBoost 提供排序基準,比較 CatBoost、XGBoost 和 LightGBM 的幾種排序變體,例如 -

  • CatBoost:RMSE、QueryRMSE、PairLogit、PairLogitPairwise、YetiRank、YetiRankPairwise

  • XGBoost:reg:linear、xgb-lmart-ndcg、xgb-pairwise

  • LightGBM:lgb-rmse、lgb-pairwise

CatBoost 引數

儘管 XGBoost 和 CatBoost 使用相同的訓練引數,但它具有更靈活的引數調整介面。下表提供了這三種提升方法提供的引數的快速比較。

功能 CatBoost XGBoost LightGBM
控制過擬合的引數 learning_rate、depth、l2_reg learning_rate、max_depth、min_child_weight learning_rate、Max_depth、Num_leaves、min_data_in_leaf
處理類別值的引數 cat_features、one_hot_max_size N/A Categorical_feature
控制速度的引數 rsm、iteration colsample_bytree、subsample、n_estimators feature_fraction、bagging_fraction、num_iterations

CatBoost 與 XGBoost 與 LightGBM 的比較

本節將比較演算法、特性、效能和速度、過擬合控制引數、速度控制引數和社群支援。因此,請查看下錶以瞭解差異 -

因素 CatBoost XGBoost LightGBM
演算法基礎 專為類別資料設計,CatBoost 本身可以處理類別特徵,無需對其進行預處理。 專注於梯度提升並有效地處理缺失資料。以其在競賽中的準確性和速度而聞名。 專門用於大型資料集,並透過使用基於直方圖的方法加快訓練速度,使其能夠高效處理大型和稀疏資料集。
處理類別特徵 強大的優勢,因為它可以使用 cat_features 直接處理類別特徵,無需手動轉換。 本身不處理類別特徵,需要將其轉換為數值格式,如獨熱編碼。 支援使用 Categorical_feature 引數的類別特徵,但效率不如 CatBoost。
速度和效能 通常比 LightGBM 慢,但在處理類別資料時針對速度和準確性進行了最佳化。 與 LightGBM 相比速度較慢,但在各種資料集上提供更穩定和準確的結果。 以其速度而聞名,尤其是在大型資料集上。由於其葉節點增長策略,它訓練速度更快。
過擬合控制引數 使用 learning_rate、depth 和 l2_reg 等引數避免過擬合。 使用 learning_rate、max_depth 和 min_child_weight 控制過擬合。 使用 learning_rate、Max_depth、Num_leaves 和 min_data_in_leaf 來管理過擬合,並進行精確的樹控制。
速度控制引數 rsm 和 iteration 等引數有助於控制模型訓練的速度。 可以使用 colsample_bytree、subsample 和 n_estimators 調整速度。 使用 feature_fraction、bagging_fraction 和 num_iterations 控制速度調整。
社群支援 很受歡迎,但與 XGBoost 和 LightGBM 相比,社群規模較小。 非常受歡迎,擁有廣泛的社群支援、教程和預構建模型。 在大型任務中因速度而廣受歡迎,擁有強大的使用者社群。
結論 最適合直接處理類別特徵,無需預處理。 非常適合需要準確性的通用任務,而訓練時間不是主要問題。 非常適合大型資料集,尤其是在需要快速訓練和可擴充套件效能的情況下。
廣告