- 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