- CatBoost 教程
- CatBoost - 首頁
- CatBoost - 概述
- CatBoost - 架構
- CatBoost - 安裝
- CatBoost - 功能
- CatBoost - 決策樹
- CatBoost - Boosting 過程
- CatBoost - 核心引數
- CatBoost - 資料預處理
- CatBoost - 處理類別特徵
- CatBoost - 處理缺失值
- CatBoost - 分類器
- CatBoost - 迴歸器
- CatBoost - 排序器
- CatBoost - 模型訓練
- CatBoost - 模型評估指標
- CatBoost - 分類指標
- CatBoost - 過擬合檢測
- CatBoost 與其他 Boosting 演算法的比較
- CatBoost 有用資源
- CatBoost - 有用資源
- CatBoost - 討論
CatBoost - 核心引數
CatBoost 是一個非常有用的機器學習庫,用於需要分類和迴歸的應用程式。您可以使用程式碼引數來擬合您的資料集和您正在處理的特定問題。為了提高模型的準確性,避免過擬合併加快訓練速度,您應該在模型中使用這些引數。
核心引數
CatBoost 中的核心引數是主要配置,對模型的行為和功能有重大影響。除其他事項外,這些引數控制整體訓練過程中的訓練迭代次數、學習率、樹深度和損失函式。
使用 CatBoost 時,您可以控制許多引數。下面列出了一些核心引數:
關鍵引數
模型在訓練時學習的內部設定稱為公共引數。例如,決策樹中的分割點和葉值就是引數。CatBoost 的訓練過程可以透過修改許多設定來進行設定。讓我們來看一些重要的 CatBoost 引數及其功能:
iterations: 表示迭代次數。每次迭代都會向整合中新增一個新的模型。
learning_rate: 表示每次迭代的改程序度。較低的學習率意味著更穩定的收斂,但可能延遲收斂。
depth: 表示樹的最大深度。更深的樹允許更復雜的連線,但也可能導致過擬合。
loss_function: 此損失函式用於評估模型在訓練時的效能。常見的選項包括用於迴歸的 RMSE、用於多分類的 CrossEntropy 和用於二元分類的 Logloss。
eval_metric: 在訓練時使用的模型效能指標。
random_seed: 用於確保可重複性的隨機種子。
常用引數
以下是列出的常用引數,主要用於 Python 包、R 包和命令列版本:
1. loss_function
主要用於確定您正在解決哪種問題,例如分類或迴歸,以及要最佳化的指標。要使用此引數,您可以將其設定為諸如“Logloss”(分類)或“RMSE”(迴歸)之類的值。
命令列:
--loss-function
2. custom_metric
使用 custom_metric,您可以在訓練時監控額外的指標。這些指標僅供您參考,不會用於最佳化模型。要使用此引數,您需要列出要跟蹤的指標,但這不會影響整體模型效能。
命令列:
--custom-metric
3. eval_metric
用於檢查模型在訓練時的執行情況以及查詢過擬合。此指標有助於選擇最佳模型。您可以選擇適合您問題的指標,例如分類的“Accuracy”。
命令列:
--eval-metric
4. iterations
此引數設定 CatBoost 將構建的樹(迭代)的數量。更多的迭代可以提高準確性,但也可能增加訓練時間。
命令列:
-i, --iterations
5. learning_rate
學習率控制模型學習的速度。較小的值會導致更高的準確性,但需要更多迭代。
命令列:
-w, --learning-rate
6. random_seed
透過固定隨機種子值來確保每次訓練模型時都能獲得相同的結果。
命令列:
-r, --random-seed
7. l2_leaf_reg
此引數新增 L2 正則化以防止過擬合。增加此值可以幫助減少過擬合。
命令列:
--l2-leaf-reg
8. bootstrap_type
定義訓練期間對物件權重進行取樣的方法。選項包括“Bayesian”、“Bernoulli”等。
命令列:
--bootstrap-type
9. bagging_temperature
這調整了訓練期間資料取樣中的隨機量。較高的值會增加更多的隨機性。
命令列:
--bagging-temperature
10. subsample
此引數控制用於訓練每棵樹的資料百分比。小於 1 的值僅使用一部分資料。
命令列:
--subsample
11. depth
樹的深度決定了模型的複雜程度。更深的樹可以模擬更復雜的模式,但也可能導致過擬合。
命令列:
-n, --depth
12. grow_policy
定義生長樹的策略。可以選擇不同的策略,具體取決於問題和資料集。
命令列:
--grow-policy
13. min_data_in_leaf
這設定了葉節點中必須存在的最小資料點數。透過防止對小樣本進行分割,它有助於避免過擬合。
命令列:
--min-data-in-leaf
14. max_leaves
此引數控制樹中最大葉節點數。僅與特定的樹生長策略一起使用。
命令列:
--max-leaves
15. ignored_features
您可以透過指定其索引或名稱來從模型中排除某些特徵。如果某些特徵不相關,這將非常有用。
命令列:
-I, --ignore-features
16. one_hot_max_size
此引數將獨熱編碼應用於具有少量唯一值(低於指定限制)的類別特徵。
命令列:
--one-hot-max-size
17. class_weights
此引數允許您為不同的類別分配不同的權重,尤其是在資料不平衡(一個類別的示例少得多)時非常有用。
命令列:
--class-weights
使用常用引數的 CatBoost 示例
以下是如何使用一些常用引數構建 CatBoost 模型的示例。此 Python 程式碼示例演示瞭如何使用這些引數:
# Import the necessary libraries
from catboost import CatBoostClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score
# Load the Iris dataset as an example
data = load_iris()
X = data['data']
y = data['target']
# Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Initialize CatBoostClassifier with common parameters
model = CatBoostClassifier(
# Number of trees
iterations=100,
# Learning rate
learning_rate=0.1,
# Depth of the trees
depth=6,
# Loss function for multi-class classification
loss_function='MultiClass',
# Metric for evaluating performance
eval_metric='Accuracy',
# Random seed for reproducibility
random_seed=42,
# L2 regularization to prevent overfitting
l2_leaf_reg=3.0,
# Bootstrap method for bagging
bootstrap_type='Bernoulli',
# Silent mode, no training output
verbose=False
)
# Train the model
model.fit(X_train, y_train, eval_set=(X_test, y_test))
# Make predictions
y_pred = model.predict(X_test)
# Evaluate the model
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.4f}')
輸出
這將生成以下結果
Accuracy: 1.0000