简介
CatBoost是一种以对称决策树(oblivious trees)为基学习器实现的参数较少、支持类别型变量和高准确性的GBDT框架,是俄罗斯搜索公司Yandex在2017年开源的机器学习框架,属于Boosting算法族。Catboost和XGBoost、LightGBM并称为GBDT三大主流神器,都是基于GBDT算法的一种改进实现。
Catboost和XGBoost、LightGBM的联系与区别
-
最早的XGBoost算法首次于2014年3月被陈天奇提出,2017年1月微软发布了LGBM的第一个稳定版本,2017年4月Yandex开源了Catboost。后两者是对XGBoost的一种改进。
-
CatBoost擅长处理类别型特征,可直接传入类别型特征的列标识,模型会自动对其进行独热编码,还可以通过设置
one_hot_max_size
参数来限制独热特征向量的长度。如果不传入类别型特征的列标识,那么CatBoost会把所有列视为数值特征。对于独热编码超过设定的one_hot_max_size
值的特征来说,CatBoost将会使用一种高效的encoding方法,与mean encoding类似,但是会降低过拟合。处理过程如下:- 将输入样本数据随机排序,并生成多组随机排列的情况;
- 将浮点型或属性值标记转化为整数;
- 将所有类别型特征结果都根据以下公式,转化为数值结果:
a v g _ t a r g e t = c o u n t I n C l a s s + p r i o r t o t a l C o u n t + 1 avg\_target = \frac{countInClass + prior}{totalCount + 1} avg_target=