最详细的Catboost参数详解与实例应用

更新时间:2023-05-20 08:48:36 阅读: 评论:0

最详细的Catboost参数详解与实例应⽤
集成学习的两⼤准则:基学习器的准确性和多样性。
算法:串⾏的Boosting和并⾏的Bagging,前者通过错判训练样本重新赋权来重复训练,来提⾼基学习器的准确性,降低偏差!后者通过采样⽅法,训练出多样性的基学习器,降低⽅差。
⽂章⽬录
1.CatBoost简介
1.1CatBoost介绍
CatBoost这个名字来⾃两个词“Category”和“Boosting”。如前所述,该库可以很好地处理各种类别型数据,是⼀种能够很好地处理类别型特征的梯度提升算法库。
CatBoost是俄罗斯的搜索巨头Yandex在2017年开源的机器学习库,是Boosting族算法的⼀种。CatBoost和XGBoost、LightGBM并称为GBDT的三⼤主流神器,都是在GBDT算法框架下的⼀种改进实现。XGBoost被⼴泛的应⽤于⼯业界,LightGBM有效的提升了GBDT的计算效率,⽽Yandex的CatBoost号称是⽐XGBoost和LightGBM在算法准确率等⽅⾯表现更为优秀的算法。
CatBoost的主要算法原理可以参照以下两篇论⽂:
Anna Veronika Dorogush, Andrey Gulin, Gleb Guv, Nikita Kazeev,
Liudmila Ostroumova Prokhorenkova, Aleksandr Vorobev “Fighting bias with dynamic boosting”.
arXiv:1706.09516, 2017
Anna Veronika Dorogush, Vasily Ershov, Andrey Gulin “CatBoost:
gradient boosting with categorical features support”. Workshop on ML
Systems at NIPS 2017
1.2CatBoost优缺点
1. 性能卓越:在性能⽅⾯可以匹敌任何先进的机器学习算法
2. 鲁棒性/强健性:它减少了对很多超参数调优的需求,并降低了过度拟合的机会,这也使得模型变得更加具有通⽤性
3. 易于使⽤:提供与scikit集成的Python接⼝,以及R和命令⾏界⾯
4. 实⽤:可以处理类别型、数值型特征
5. 可扩展:⽀持⾃定义损失函数
6. ⽀持类别型变量,⽆需对⾮数值型特征进⾏预处理
7. 快速、可扩展的GPU版本,可以⽤基于GPU的梯度提升算法实现来训练你的模型,⽀持多卡并⾏
8. 快速预测,即便应对延时⾮常苛刻的任务也能够快速⾼效部署模型
CatBoost是⼀种基于对称决策树(oblivious
了解英文
trees)为基学习器实现的参数较少、⽀持类别型变量和⾼准确性的GBDT框架,主要解决的痛点是⾼效合理地处理类别型特征,这⼀点从它的名字中可以看出来,CatBoost是由Categorical和Boosting组成。此外,CatBoost还解决了梯度偏差(Gradient Bias)以及预测偏移(Prediction shift)的问题,从⽽减少过拟合的发⽣,进⽽提⾼算法的准确性和泛化能⼒。
与XGBoost、LightGBM相⽐,CatBoost的创新点有:
1. 嵌⼊了⾃动将类别型特征处理为数值型特征的创新算法。⾸先对categorical
features做⼀些统计,计算某个类别特征(category)出现的频率,之后加上超参数,⽣成新的数值型特征(numerical
features)。
2. Catboost还使⽤了组合类别特征,可以利⽤到特征之间的联系,这极⼤的丰富了特征维度。
3. 采⽤排序提升的⽅法对抗训练集中的噪声点,从⽽避免梯度估计的偏差,进⽽解决预测偏移的问题。
4. 采⽤了完全对称树作为基模型。
1.3CatBoost安装
prepare⽤pip
pip install catboost
或者⽤conda
conda install -c conda-forge catboost
速度极慢,直到下载失败
安装jupyter notebook中的交互组件,⽤于交互绘图
pip install ipywidgets
jupyter nbextension enable --py widgetsnbextension
可以使⽤清华镜像安装:
pip install catboost -i pypi.tuna./simple
后期制作英文
下载速度嗖嗖的,完成了。
2.参数详解
参考官⽹:
2.1通⽤参数:
1. loss_function 损失函数,⽀持的有RMSE, Logloss, MAE, CrossEntropy, Quantile, LogLinQuantile, Multiclass,
东西南北英文
MultiClassOneVsAll, MAPE,Poisson。默认RMSE。
2. custom_metric 训练过程中输出的度量值。这些功能未经优化,仅出于信息⽬的显⽰。默认None。
3. eval_metric ⽤于过拟合检验(设置True)和最佳模型选择(设置True)的loss function,⽤于优化。
4. iterations 最⼤树数。默认1000。
5. learning_rate 学习率。默认0.03。
6. random_ed 训练时候的随机种⼦
7. l2_leaf_reg L2正则参数。默认3
8. bootstrap_type 定义权重计算逻辑,可选参数:Poisson (supported for GPU only)/Bayesian/Bernoulli/No,默认为Bayesian
9. bagging_temperature 贝叶斯套袋控制强度,区间[0, 1]。默认1。
10. subsample 设置样本率,当bootstrap_type为Poisson或Bernoulli时使⽤,默认66
11. sampling_frequency设置创建树时的采样频率,可选值PerTree/PerTreeLevel,默认为PerTreeLevel
12. random_strength 分数标准差乘数。默认1。
13. u_best_model 设置此参数时,需要提供测试数据,树的个数通过训练参数和优化loss function获得。默认Fal。
14. best_model_min_trees 最佳模型应该具有的树的最⼩数⽬。
15. depth 树深,最⼤16,建议在1到10之间。默认6。
16. ignored_features 忽略数据集中的某些特征。默认None。
17. one_hot_max_size 如果feature包含的不同值的数⽬超过了指定值,将feature转化为float。默认Fal
18. has_time 在将categorical features转化为numerical
features和选择树结构时,顺序选择输⼊数据。默认Fal(随机)
19. rsm 随机⼦空间(Random subspace method)。默认1。
20. nan_mode处理输⼊数据中缺失值的⽅法,包括Forbidden(禁⽌存在缺失),Min(⽤最⼩值补),Max(⽤最⼤值补)。默认Min。
21. fold_permutation_block_size数据集中的对象在随机排列之前按块分组。此参数定义块的⼤⼩。值越⼩,训练越慢。较⼤的值可能
导致质量下降。
22. leaf_estimation_method 计算叶⼦值的⽅法,Newton/ Gradient。默认Gradient。
23. leaf_estimation_iterations 计算叶⼦值时梯度步数。
24. leaf_estimation_backtracking 在梯度下降期间要使⽤的回溯类型。
25. fold_len_multiplier folds长度系数。设置⼤于1的参数,在参数较⼩时获得最佳结果。默认2。
26. approx_on_full_history 计算近似值,Fal:使⽤1/fold_len_multiplier计算;True:使⽤fold中前⾯所有⾏计算。默认Fal。
27. class_weights 类别的权重。默认None。
28. scale_pos_weight ⼆进制分类中class 1的权重。该值⽤作class 1中对象权重的乘数。
29. boosting_type 增压⽅案
30. allow_const_label 使⽤它为所有对象训练具有相同标签值的数据集的模型。默认为Fal
2.2默认参数
CatBoost默认参数:
‘iterations’:1000,
‘learning_rate’:0.03,
‘l2_leaf_reg’:3,
‘bagging_temperature’:1,
‘subsample’:0.66,
‘random_strength’:1,
‘depth’:6,
‘rsm’:1,
‘one_hot_max_size’:2
‘leaf_estimation_method’:’Gradient’,
‘fold_len_multiplier’:2,
editortools
‘border_count’:128,
2.3性能参数
1. thread_count=-1:训练时所⽤的cpu/gpu核数
2. ud_ram_limit=None:CTR问题,计算时的内存限制
3. gpu_ram_part=None:GPU内存限制
2.4参数调优
采⽤GridSearchCV的⽅法进⾏⾃动搜索最优参数
⽰例:英语在线课程哪家好
from catboost import CatBoostRegressor
del_lection import GridSearchCV
#指定category类型的列,可以是索引,也可以是列名
cat_features =[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
X = df_ios_droped.iloc[:,:-1]
y = df_ios_droped.iloc[:,-1]
cv_params ={'iterations':[500,600,700,800]}
other_params ={烂漫的意思
'iterations':1000,
'learning_rate':0.03,
'l2_leaf_reg':3,河北工业大学研究生
'bagging_temperature':1,
'random_strength':1,
'depth':6,
'rsm':1,
'one_hot_max_size':2,
colorscheme'leaf_estimation_method':'Gradient',
'fold_len_multiplier':2,
'border_count':128,
}
model_cb = CatBoostRegressor(**other_params)
optimized_cb = GridSearchCV(estimator=model_cb, param_grid=cv_params, scoring='r2', cv=5, verbo=1, n_jobs=2) optimized_cb.fit(X,y,cat_features =category_features)
print('参数的最佳取值:{0}'.format(optimized_cb.best_params_))
print('最佳模型得分:{0}'.format(optimized_cb.best_score_))
print(optimized_cb.cv_results_['mean_test_score'])
print(optimized_cb.cv_results_['params'])
3.CatBoost实战应⽤
CatBoost可以⽤于分类和回归两种类型的应⽤,详细使⽤⽅法⼤家可以参考
3.1回归案例
from catboost import CatBoostRegressor
# Initialize data
train_data =[[1,4,5,6],
[4,5,6,7],
[30,40,50,60]]
eval_data =[[2,4,6,8],
[1,4,50,60]]
train_labels =[10,20,30]
# Initialize CatBoostRegressor
model = CatBoostRegressor(iterations=2,
learning_rate=1,
depth=2)
# Fit model
model.fit(train_data, train_labels)
# Get predictions
preds = model.predict(eval_data)
使⽤Gpu训练
造化弄人英文from catboost import CatBoostClassifier
train_data =[[0,3],
[4,1],
[8,1],
[9,1]]
train_labels =[0,0,1,1]
model = CatBoostClassifier(iterations=1000,
task_type="GPU",
devices='0:1')
model.fit(train_data,
train_labels,
verbo=Fal)
3.2使⽤Pool加载数据集并进⾏预测
Pool是catboost中的⽤于组织数据的⼀种形式,也可以⽤numpy array和dataframe。但更推荐Pool,其内存和速度都更优。

本文发布于:2023-05-20 08:48:36,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/115592.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:特征   参数   默认   训练   类别
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图