你聽過 CatBoost 嗎?本文教你如何使用 CatBoost 進行快速梯度提高

在本文中,咱們將仔細研究一個名爲CatBoost的梯度加強庫。html


在梯度提高中,預測是由一羣弱學習者作出的。與爲每一個樣本建立決策樹的隨機森林不一樣,在梯度加強中,樹是一個接一個地建立的。模型中的先前樹不會更改。前一棵樹的結果用於改進下一棵樹。在本文中,咱們將仔細研究一個名爲CatBoost的梯度加強庫。git

CatBoost 是Yandex開發的深度方向梯度加強庫 。它使用遺忘的決策樹來生成平衡樹。相同的功能用於對樹的每一個級別進行左右拆分。github

(CatBoost官方連接:https://github.com/catboost算法

與經典樹相比,遺忘樹在CPU上實現效率更高,而且易於安裝。bootstrap

處理分類特徵

在機器學習中處理分類的常見方法是單熱編碼和標籤編碼。CatBoost容許您使用分類功能,而無需對其進行預處理。c#

使用CatBoost時,咱們不該該使用一鍵編碼,由於這會影響訓練速度以及預測質量。相反,咱們只須要使用cat_features 參數指定分類特徵便可 。數組

使用CatBoost的優勢

如下是考慮使用CatBoost的一些緣由:dom

  • CatBoost容許在多個GPU上訓練數據。
  • 使用默認參數能夠提供很好的結果,從而減小了參數調整所需的時間。
  • 因爲減小了過分擬合,所以提升了精度。
  • 使用CatBoost的模型應用程序進行快速預測。
  • 通過訓練的CatBoost模型能夠導出到Core ML進行設備上推理(iOS)。
  • 能夠在內部處理缺失值。
  • 可用於迴歸和分類問題。

訓練參數

讓咱們看一下CatBoost中的經常使用參數:機器學習

  • loss_function 別名爲 objective -用於訓練的指標。這些是迴歸指標,例如用於迴歸的均方根偏差和用於分類的對數損失。
  • eval_metric —用於檢測過分擬合的度量。
  • iterations -待建的樹的最大數量,默認爲1000。別名是 num_boost_roundn_estimatorsnum_trees
  • learning_rate 別名 eta -學習速率,肯定模型將學習多快或多慢。默認值一般爲0.03。
  • random_seed 別名 random_state —用於訓練的隨機種子。
  • l2_leaf_reg 別名 reg_lambda —成本函數的L2正則化項的係數。默認值爲3.0。
  • bootstrap_type —肯定對象權重的採樣方法,例如貝葉斯,貝努利,MVS和泊松。
  • depth —樹的深度。
  • grow_policy —肯定如何應用貪婪搜索算法。它能夠是 SymmetricTreeDepthwiseLossguideSymmetricTree 是默認值。在中 SymmetricTree,逐級構建樹,直到達到深度爲止。在每一個步驟中,以相同條件分割前一棵樹的葉子。當 Depthwise 被選擇,一棵樹是內置一步步驟,直到指定的深度實現。在每一個步驟中,將最後一棵樹級別的全部非終端葉子分開。使用致使最佳損失改善的條件來分裂葉子。在中 Lossguide,逐葉構建樹,直到達到指定的葉數。在每一個步驟中,將損耗改善最佳的非終端葉子進行拆分
  • min_data_in_leaf 別名 min_child_samples —這是一片葉子中訓練樣本的最小數量。此參數僅與 LossguideDepthwise 增加策略一塊兒使用。
  • max_leaves alias num_leaves —此參數僅與Lossguide 策略一塊兒使用, 並肯定樹中的葉子數。
  • ignored_features —表示在培訓過程當中應忽略的功能。
  • nan_mode —處理缺失值的方法。選項包括 ForbiddenMin,和 Max。默認值爲 Min。當 Forbidden 使用時,缺失值致使錯誤的存在。使用 Min,缺乏的值將做爲該功能的最小值。在中 Max,缺失值被視爲特徵的最大值。
  • leaf_estimation_method —用於計算葉子中值的方法。在分類中,使用10 Newton 次迭代。使用分位數或MAE損失的迴歸問題使用一次 Exact 迭代。多分類使用一次 Netwon 迭代。
  • leaf_estimation_backtracking —在梯度降低過程當中使用的回溯類型。默認值爲 AnyImprovementAnyImprovement 減少降低步長,直至損失函數值小於上次迭代的值。 Armijo 減少降低步長,直到知足 Armijo條件
  • boosting_type —增強計劃。它能夠plain 用於經典的梯度加強方案,也能夠 用於或 ordered,它在較小的數據集上能夠提供更好的質量。
  • score_function分數類型, 用於在樹構建過程當中選擇下一個拆分。 Cosine 是默認選項。其餘可用的選項是 L2NewtonL2NewtonCosine
  • early_stopping_rounds —當時 True,將過擬合檢測器類型設置爲, Iter 並在達到最佳度量時中止訓練。
  • classes_count —多重分類問題的類別數。
  • task_type —使用的是CPU仍是GPU。CPU是默認設置。
  • devices —用於訓練的GPU設備的ID。
  • cat_features —具備分類列的數組。
  • text_features -用於在分類問題中聲明文本列。

迴歸示例

CatBoost在其實施中使用scikit-learn標準。讓咱們看看如何將其用於迴歸。ide

與往常同樣,第一步是導入迴歸器並將其實例化。

擬合模型時,CatBoost還能夠經過設置來使用戶可視化 plot=true

它還容許您執行交叉驗證並使過程可視化:

一樣,您也能夠執行網格搜索並將其可視化:

結尾

在本文中,咱們探討了CatBoost的優勢和侷限性以及主要的訓練參數。而後,咱們使用scikit-learn完成了一個簡單的迴歸實現。但願這能夠爲您提供有關庫的足夠信息,以便您能夠進一步探索它。

往期精彩連接:

《統計學習基礎:數據挖掘、推理和預測》-斯坦福大學人工智能學科專用教材

相關文章
相關標籤/搜索