在本文中,咱們將仔細研究一個名爲CatBoost的梯度加強庫。html
在梯度提高中,預測是由一羣弱學習者作出的。與爲每一個樣本建立決策樹的隨機森林不一樣,在梯度加強中,樹是一個接一個地建立的。模型中的先前樹不會更改。前一棵樹的結果用於改進下一棵樹。在本文中,咱們將仔細研究一個名爲CatBoost的梯度加強庫。git
CatBoost 是Yandex開發的深度方向梯度加強庫 。它使用遺忘的決策樹來生成平衡樹。相同的功能用於對樹的每一個級別進行左右拆分。github
(CatBoost官方連接:https://github.com/catboost)算法
與經典樹相比,遺忘樹在CPU上實現效率更高,而且易於安裝。bootstrap
在機器學習中處理分類的常見方法是單熱編碼和標籤編碼。CatBoost容許您使用分類功能,而無需對其進行預處理。c#
使用CatBoost時,咱們不該該使用一鍵編碼,由於這會影響訓練速度以及預測質量。相反,咱們只須要使用cat_features
參數指定分類特徵便可 。數組
如下是考慮使用CatBoost的一些緣由:dom
讓咱們看一下CatBoost中的經常使用參數:機器學習
loss_function
別名爲 objective
-用於訓練的指標。這些是迴歸指標,例如用於迴歸的均方根偏差和用於分類的對數損失。eval_metric
—用於檢測過分擬合的度量。iterations
-待建的樹的最大數量,默認爲1000。別名是 num_boost_round
, n_estimators
和 num_trees
。learning_rate
別名 eta
-學習速率,肯定模型將學習多快或多慢。默認值一般爲0.03。random_seed
別名 random_state
—用於訓練的隨機種子。l2_leaf_reg
別名 reg_lambda
—成本函數的L2正則化項的係數。默認值爲3.0。bootstrap_type
—肯定對象權重的採樣方法,例如貝葉斯,貝努利,MVS和泊松。depth
—樹的深度。grow_policy
—肯定如何應用貪婪搜索算法。它能夠是 SymmetricTree
, Depthwise
或 Lossguide
。 SymmetricTree
是默認值。在中 SymmetricTree
,逐級構建樹,直到達到深度爲止。在每一個步驟中,以相同條件分割前一棵樹的葉子。當 Depthwise
被選擇,一棵樹是內置一步步驟,直到指定的深度實現。在每一個步驟中,將最後一棵樹級別的全部非終端葉子分開。使用致使最佳損失改善的條件來分裂葉子。在中 Lossguide
,逐葉構建樹,直到達到指定的葉數。在每一個步驟中,將損耗改善最佳的非終端葉子進行拆分min_data_in_leaf
別名 min_child_samples
—這是一片葉子中訓練樣本的最小數量。此參數僅與 Lossguide
和 Depthwise
增加策略一塊兒使用。max_leaves
alias num_leaves
—此參數僅與Lossguide
策略一塊兒使用, 並肯定樹中的葉子數。ignored_features
—表示在培訓過程當中應忽略的功能。nan_mode
—處理缺失值的方法。選項包括 Forbidden
, Min
,和 Max
。默認值爲 Min
。當 Forbidden
使用時,缺失值致使錯誤的存在。使用 Min
,缺乏的值將做爲該功能的最小值。在中 Max
,缺失值被視爲特徵的最大值。leaf_estimation_method
—用於計算葉子中值的方法。在分類中,使用10 Newton
次迭代。使用分位數或MAE損失的迴歸問題使用一次 Exact
迭代。多分類使用一次 Netwon
迭代。leaf_estimation_backtracking
—在梯度降低過程當中使用的回溯類型。默認值爲 AnyImprovement
。 AnyImprovement
減少降低步長,直至損失函數值小於上次迭代的值。 Armijo
減少降低步長,直到知足 Armijo條件 。boosting_type
—增強計劃。它能夠plain
用於經典的梯度加強方案,也能夠 用於或 ordered
,它在較小的數據集上能夠提供更好的質量。score_function
— 分數類型, 用於在樹構建過程當中選擇下一個拆分。 Cosine
是默認選項。其餘可用的選項是 L2
, NewtonL2
和 NewtonCosine
。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完成了一個簡單的迴歸實現。但願這能夠爲您提供有關庫的足夠信息,以便您能夠進一步探索它。
《統計學習基礎:數據挖掘、推理和預測》-斯坦福大學人工智能學科專用教材