CatBoost回归
# 1、作用
CatBoost是一种基于对称决策树算法的GBDT框架,主要解决的痛点是高效合理地处理类别型特征和处理梯度偏差、预测偏移问题,提高算法的准确性和泛化能力。
# 2、输入输出描述
输入:自变量X为1个或1个以上的定类或定量变量,因变量Y为一个定量变量。
输出: 模型输出的决策树结构图及模型的分类效果。
# 3、案例示例
根据房子的户型、电梯、面积、房龄、装修程度、容积率和绿化率,使用catboost回归方法预估该房子的房价。
# 4、案例数据
catboost回归案例数据
# 5、案例操作
Step1:新建分析;
Step2:上传数据;
Step3:选择对应数据打开后进行预览,确认无误后点击开始分析;
step4:选择【catboost回归】;
step5:查看对应的数据数据格式,按要求输入【catboost回归】数据(注:定类变量建议进行编码);
step6:进行参数设置(“更多设置”里的参数在客户端可进行设定)
step7:点击【开始分析】,完成全部操作。
# 6、输出结果分析
输出结果1:模型参数
图表说明: 上表展示了训练该模型的时候,输入的参数以及训练所耗的时间。
输出结果2:特征重要性
图表说明:上柱形图或表格展示了各特征(自变量)的重要性比例。(附:有时候可以利用特征重要性反推该变量在实际生活中的价值,因为该重要性往往决定结果。)
分析:容积率、绿化率和面积是决定房价的重要因素。
输出结果3:模型评估结果
图表说明: 上表中展示了交叉验证集、训练集和测试集的预测评价指标,通过量化指标来衡量决策树的预测效果。其中,通过交叉验证集的评价指标可以不断调整超参数,以得到可靠稳定的模型。
● MSE(均方误差): 预测值与实际值之差平方的期望值。取值越小,模型准确度越高。
● RMSE(均方根误差):为MSE的平方根,取值越小,模型准确度越高。
● MAE(平均绝对误差): 绝对误差的平均值,能反映预测值误差的实际情况。取值越小,模型准确度越高。
● MAPE(平均绝对百分比误差): 是 MAE 的变形,它是一个百分比值。取值越小,模型准确度越高。
● R²: 将预测值跟只使用均值的情况下相比,结果越靠近 1 模型准确度越高。
分析:
训练集中R方为0.984,测试集中为0.952,拟合效果优秀。
输出结果4:测试数据预测结果
图表说明: 上表展示了catboost模型对测试数据的预测情况。
输出结果5:测试预测图
图表说明:上图中展示了catboost模型对测试数据的预测情况。
输出结果6:模型预测与应用(此功能只在客户端支持使用)
注:当无法进行预测功能时,可检查数据集中是否存在定类变量或者缺失值:
●当存在定类变量时,请在用于训练模型的数据集和用于预测的数据集中将变量编码,再进行操作。
(SPSSPRO:数据处理->数据编码->将定类变量编码为定量)
●当用于预测数据的数据集中存在缺失值时,请删去缺失值再进行操作。
情况1:在上面模型评估后,若具有实用性,这时我们可将该模型进行应用。点击【模型预测】上传文件可以直接得到预测结果。
情况2:若是上传的数据包括因变量真实值,不仅仅可以得到预测结果,还可以得到评价效果。
# 7、注意事项
- 由于catboost具有随机性,每次运算的结果不一样。若需要保存本次训练模型,需要使用SPSSPRO客户端进行。
- catboost的参数修改需要使用SPSSPRO客户端进行。
# 8、模型理论
Catboost 总体算法框架与GBDT一致,但是在处理类别特征、Boosting方式以及决策树生长评分方面作了比较大的改进。这三个改进令Catboost能够有效地处理字符串特征,并且相同数据规模下的模型拟合速度要快于 Xgboost和LGBM。
① 类别特征 Catboost 的基础仍是提升树,与传统的梯度提升树不同的是Catboost在处理类别特征时,没有简单 地采用基于贪婪目标统计的方法进行分裂节点的选择。而是创造性地在计算节点增益时考虑先验分布项,有效地排除了类别变量中低频率特征和噪声对生成决策树带来的影响。
式中,σj 为第j数据;xi,k表示训练集中第i行数据的第k列离散特征;a是一个先验权重;p是先验分布项(对于回归问题而言,先验项一般取训练集中预测标签的均值; 对于二分类问题而言,先验项取值为正例也就是为1的项的先验概率);这里的[]为指示函数,满足内部条件则输出1,否则输出0。通过改进后的TS方法,Catboost能够在信息损失最小化的情况下将类别特征转化为数值。
(2) 排序提升(Ordered boosting) 传统的 GBDT 模型采取的是无行列采样的方式,所有的基学习器及即Cart决策树是在一个完整的数据集上进行梯度提升的,每次迭代都使用上一轮树的负梯度进行训练。这样会导致预测偏差( bias)不断累积和过拟合(over fitting) 的现象。Xgboost和微软开发的LGBM采用了行列采样和正则化的处理降低了过拟合的效应。Catboost更进一步提出了Ordered boosting方法。算法伪代码如下:
其中,σ是训练集随机排序的次数; I为需要生成对称决策树的数量也就是学习器的个数。对于所有n个样本,初始化Mi为0。然后通过对随机序列进行采样并在其基础上获得梯度,进行σ次排列的目的是增强算法的鲁棒性并且可以有效地避免过拟合的情况,这些排列与用于计算改进TS的排列相同。对于每个随机排列σ,将对如上所示的n个不同的模型Mi进行训练。然后依次计算前i-1条数据损失函数(Loss)的梯度gj,并将i-1个gj传入对称树建立一颗残差树。并将初始模型Mi从Mi(X1)更新为Mi(Xi)。此过程目的是去除Xi建立模型对X1的预测值,这样可以降低噪点对模型的干扰。对于s次排列中的每次排列而言,我们建立n个模型Mi,整体复杂度约为 O(s×n2) 。为了加速算法运行,对于每个排列Catboost在更新Mi时不是存储和更新O(n2)个Mi(Xi),而是令Mi'(Xj),i=1…,log2(n)),j<2i+1) 。Mi'(Xj)是基于前2i个样本的相同j的近似值。最后,Mi'(Xj)的预测复杂度将不大于。
③快速评分Catboost使用完全对称树(oblivious decision trees,ODT)作为基学习器,它的结构如下图所示,与一 般决策树不同的是,完全对称树对于相同深度的内部节点,分裂时选择的特征以及特征阈值是完全一致的。所以完全对称树也可以变换成具有2^d条目的决策表格,d表示决策树的层数。这种结构的决策树更加平衡并且特征处理速度远快于一般的决策树。此外,通过将浮点特征,统计信息(用户id等)、独热编码特征统一用二进制处理,模型的大大减少了调参需求。 下图为完全对称树结构:
④特征重要度排序Catboost不仅有较高的预测精度,而且同时能够能够甑别不同影响因子(即预测所使用特征)对预测结果的相对贡献度,某个特征在单棵决策树中的相对贡献度用以下公式衡量。
式中,M为迭代次数(树的数量);Jj2代表特征j的全局重要度。
式中,L为树的叶子节点数量;L-1为树的非叶子节点数量;vt是和节点t相关联的特征;it^2是节点t分裂之后平方损失的减少值,it^2减少的越多说明此次分裂的收益越大,意味着此特征对于所属节点的特征重要度越高。
# 9、参考文献
[1]Scientific Platform Serving for Statistics Professional 2021. SPSSPRO. (Version 1.0.11)[Online Application Software]. Retrieved from https://www.spsspro.com.
[2]Dorogush, Anna Veronika , V. Ershov , and A. Gulin . "CatBoost: gradient boosting with categorical features support." (2018).