如何使用 CatBoost 進行快速梯度提升
我們將仔細研究一個名為CatBoost的梯度增強庫。
在梯度提升中,預測是由一群弱學習者做出的。與為每個樣本建立決策樹的隨機森林不同,在梯度增強中,樹是一個接一個地建立的。模型中的先前樹不會更改。前一棵樹的結果用於改進下一棵樹。在本文中,我們將仔細研究一個名為CatBoost的梯度增強庫。
CatBoost 是Yandex開發的深度方向梯度增強庫 。它使用遺忘的決策樹來生成平衡樹。相同的功能用於對樹的每個級別進行左右拆分。
(CatBoost官方連結:)
與經典樹相比,遺忘樹在CPU上實現效率更高,並且易於安裝。
處理分類特徵
在機器學習中處理分類的常見方法是單熱編碼和標籤編碼。CatBoost允許您使用分類功能,而無需對其進行預處理。
使用CatBoost時,我們不應該使用一鍵編碼,因為這會影響訓練速度以及預測質量。相反,我們只需要使用cat_features 引數指定分類特徵即可 。
使用CatBoost的優點
以下是考慮使用CatBoost的一些原因:
- CatBoost允許在多個GPU上訓練資料。
- 使用預設引數可以提供很好的結果,從而減少了引數調整所需的時間。
- 由於減少了過度擬合,因此提高了精度。
- 使用CatBoost的模型應用程式進行快速預測。
- 經過訓練的CatBoost模型可以匯出到Core ML進行裝置上推理(iOS)。
- 可以在內部處理缺失值。
- 可用於迴歸和分類問題。
訓練引數
讓我們看一下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標準。讓我們看看如何將其用於迴歸。
與往常一樣,第一步是匯入迴歸器並將其例項化。
擬合模型時,CatBoost還可以透過設定來使使用者視覺化 plot=true:
它還允許您執行交叉驗證並使過程視覺化:
同樣,您也可以執行網格搜尋並將其視覺化:
我們還可以使用CatBoost繪製樹。這是第一棵樹的情節。從樹上可以看到,每個級別的葉子都在相同的條件下被分割,例如297,值> 0.5。
CatBoost還為我們提供了包含所有模型引數的字典。我們可以透過遍歷字典來列印它們。
結尾
在本文中,我們探討了CatBoost的優點和侷限性以及主要的訓練引數。然後,我們使用scikit-learn完成了一個簡單的迴歸實現。希望可以給你提供有關庫的足夠資訊,以便進一步探索它。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69923331/viewspace-2728410/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- R:梯度提升器梯度
- 如何快速對影像進行分幅?
- UI小白如何快速提升自己UI
- APPCAN 如何快速的進行除錯?APPPCA除錯
- 使用DBMS_PARALLEL_EXECUTE進行快速更新Parallel
- 梯度提升樹(GBDT)原理小結梯度
- 如何快速開始進行echart元件開發元件
- 使用Excel進行快速模糊查詢的方法Excel
- 資料庫使用flashback進行快速回退資料庫
- 使用RMAN進行快速Dataguard資料庫建立資料庫
- 如何快速提升你的技術能力
- 一文讀懂:GBDT梯度提升梯度
- 【小白學AI】GBDT梯度提升詳解AI梯度
- 機器學習中的 CatBoost機器學習
- AI作畫—如何快速進行遊戲人物設計AI遊戲
- 提升團隊效能:如何與下屬進行有效溝通
- Python機器學習:PCA與梯度上升:008使用PCA對資料進行降噪Python機器學習PCA梯度
- PHP進階,使用互動模式進行快速測試實驗?PHP模式
- 使用JMeter進行負載測試快速入門JMeter負載
- 快速使用 vscode 進行 Java 程式設計VSCodeJava程式設計
- 如何快速打造BI大屏進行資料賦能
- 如何使用CVS進行版本控制
- 如何在MLlib中實現隨機森林和梯度提升樹(GBTs)?隨機森林梯度
- 對梯度提升樹GBDT最通俗的介紹梯度
- 如何快速進行資料整合,推動資訊化建設
- 低程式碼如何快速提升客戶體驗
- <<快速入手Rust>>1.使用playlaygroud進行簡單快速的線上rust開發Rust
- catboost庫作用與安裝
- 【Zabbix】如何使用Zabbix進行IPMI監控?
- 如何使用 apt 進行 Linux 包管理APTLinux
- 如何使用lerna進行多包(package)管理Package
- 使用javascript如何給url進行編碼JavaScript
- 使用LDAP查詢快速提升域許可權LDA
- 用c#進行快速排序C#排序
- 快速進行安裝工作(轉)
- scikit-learn 梯度提升樹(GBDT)調參小結梯度
- Spark Gradient-boosted trees (GBTs)梯度提升樹Spark梯度
- PMO如何對專案經理進行能力提升管理和能力評價?