CatBoost详解
CatBoost简介
CatBoost中处理类别特征的方法
算法实现
修正梯度偏差
快速评分
基于GPU快速学习
CatBoost的参数
CatBoost简介
CatBoost: 基本原理类似于常规的Gradient Boosting算法,只是在处理类别特征时,效果较好。一方面,可以自动处理分类特征,并且在训练过程中处理这些类别特征有优势;另一方面,使用了一种新的方式计算leaf-values(可降低过拟合)。它有两个版本,学习算法基于GPU实现,打分算法基于CPU实现。
categorical features: 类别特征,CatBoost中专指不必相互比较的特征,如城市名称、用户ID等等。常规的操作是在训练模型之前,将这些类别特征转换为数值型特征,如One-Hot编码。而在CatBoost中,基于统计量,将类别特征转换为数值型特征。
CatBoost中处理类别特征的方法
与One-Hot处理类别特征的方法不同,另一种处理类别特征的方法是使用样本的label value来计算一些统计量。
假设数据集D={(Xi,Yi}i=1,…,n D={(X_i,Y_i}i=1,…,nD={(X
i
,Y
i
}
i
=1,…,n,whereXi=(xi,1,…,xi,m),Yi∈R where X_i=(x{i,1},…,x_{i,m}),Y_i∈RwhereX
i
=(x
i,1
,…,x
i,m
),Y
i
∈R是label value。m个特征,有些是数值型特征,有些是类别特征。
1、处理类别特征值的最简单方法是在整个数据集上,用平均的label value来代替。则:
xi,k=∑nj=1[xj,k=xi,k]∗Yj∑nj=1[xj,k=xi,k] x_{i,k}=\frac{\sum_{j=1}{n}[x_{j,k}=x_{i,k}]*Y_j}{\sum_{j=1}{n}[x_{j,k}=x_{i,k}]}
x
i,k
∑
j=1
n
[x
j,k
=x
i,k
]
∑
j=1
n
[x
j,k
=x
i,k
]∗Y
j