点击上方“Datawhale”,选择“星标”公众号
第一时间获取价值内容
CatBoost
-
无需调参即可获得较高的模型质量,采用默认参数就可以获得非常好的结果,减少在调参上面花的时间 -
支持类别型变量,无需对非数值型特征进行预处理 -
快速、可扩展的GPU版本,可以用基于GPU的梯度提升算法实现来训练你的模型,支持多卡并行 -
提高准确性,提出一种全新的梯度提升机制来构建模型以减少过拟合 -
快速预测,即便应对延时非常苛刻的任务也能够快速高效部署模型
-
Anna Veronika Dorogush, Andrey Gulin, Gleb Gusev, Nikita Kazeev, Liudmila Ostroumova Prokhorenkova, Aleksandr Vorobev "Fighting biases 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
Categorical features
One-hot encoding
: 将原来的特征删除,然后对于每一个类别加一个0/1的用来指示是否含有该类别的数值型特征。
One-hot encoding
可以在数据预处理时完成,也可以在模型训练的时候完成,从训练时间的角度,后一种方法的实现更为高效,CatBoost对于低势类别特征也是采用后一种实现。
user ID
,这种编码方式会产生大量新的特征,造成维度灾难。 一种折中的办法是可以将类别分组成有限个的群体再进行
One-hot encoding
。 一种常被使用的方法是根据目标变量统计(Target Statistics,以下简称TS)进行分组,目标变量统计用于估算每个类别的目标变量期望值。 甚至有人直接用TS作为一个新的数值型变量来代替原来的类别型变量。 重要的是,可以通过对TS数值型特征的阈值设置,基于对数损失、基尼系数或者均方差,得到一个对于训练集而言将类别一分为二的所有可能划分当中最优的那个。 在LightGBM当中,类别型特征用每一步梯度提升时的梯度统计(Gradient Statistics,以下简称GS)来表示。 虽然为建树提供了重要的信息,但是这种方法有以下两个缺点:
-
增加计算时间,因为需要对每一个类别型特征,在迭代的每一步,都需要对GS进行计算; -
增加存储需求,对于一个类别型变量,需要存储每一次分离每个节点的类别。
One-hot encoding
还是好不少。 不过如果采用TS特征,那么对于每个类别只需要计算和存储一个数字。
One-hot encoding
和GS放一边。