1、对数损失函数:
查阅了很多博客,都在说对数损失函数和交叉熵损失函数是等价的,具体是啥情况,先存疑???
其中, M表示类别数,当M=2时,退化为逻辑回归的损失函数:
二分类的对数损失的由来:是由最大似然估计推到而来的(参考网址:https://blog.csdn.net/JustKian/article/details/83117170,以逻辑回归为例)
关键在于模型中参数的估计,从而使得预测出来的值得误差最小,而且其可导,所以使用极大似然估计来得到参数的无偏估计,上式转换为统一的概率表达式为,所以可以得到最大似然函数
(然后就是取对数求导,从而在极值点的参数使其最小)。取对数为
。
又由于为了统一损失函数的概念(损失函数值最小的时候即为最佳方案),整个训练集的损失函数只是所有训练实例的平均值,于是最终的Log对数损失函数如下:
2、GBDT原理介绍
接下来正式介绍GBDT模型:
介绍GBDT前,介意大家先去了解一下boost模型、AdaBoost模型,都是串行的加法模型,可参考李航的《统计学方法 第二版》的第八章。
注意事项:
①只能使用CART树,
GBDT的流程伪代码如下所示:
首先,要初始化,表示第0棵树的预测值,这个主要取决于loss function的选择,可以分为一下几种(参考文章:https://zhuanlan.zhihu.com/p/92837676):
①损失函数为MSE时,;
②损失函数为MAE时,,即取中位数;
③损失函数为逻辑回归的对数损失时,,其中
取0或1;
其次,就是在第二步中,拟合第棵树之前残差
的计算,不同的损失函数,求解出来的残差计算公式也不完全一致,大致以上述三种损失函数分别进行分析(参考文章:https://blog.csdn.net/qq_22238533/article/details/79185969):
①损失函数为MSE时,,负梯度为
,所以当前模型的负梯度为
;
②损失函数为MAE时,,负梯度为
③损失函数为逻辑回归的对数损失时,,其中
(具体为什么是
没搞清楚,待定),其负梯度化简为
(化简方法就是将
的计算公式带入损失函数中然后求导,化简就行,在整个过程中要把
看作一个固定的参数),然后就不断拟合,训练出m棵树。
④这篇文章https://www.cnblogs.com/pinard/p/6140514.html的第五部分介绍了多种损失函数下所对应的负梯度的计算公式(下图为多分类的损失函数);
然后就接下来训练一颗具体的CART树;多次往复完成模型的训练。
案例:在参考文章2里面有相应的负梯度的计算案例;
第三步,根据算出来的负梯度,拟合一颗树(涉及到节点的划分,具体树的节点划分会在决策树中补充出来);
第四步,得到第t棵树所对应的预测值
案例分析:https://mp.weixin.qq.com/s/XP5z_BEeFr6oJp9VmVJRqQ,这篇文章的GBDT部分有详细的案例计算过程,可以参考学习
3、GBDT的优缺点及使用场景
优点:
- 可以进行多维度的特征组合;
缺点:
- 不能处理高纬度稀疏性数据
4、调参
GBDT主要分为两种参数(参考文章:https://www.cnblogs.com/nxf-rabbit75/p/10593524.html):
- Tree-specific parameters:max_depth、max_features、min_samples_split、min_samples_leaf、min_leaf_nodes、loss function
- Boosting specific paramters:n_estimators、learning_rate、subsamle
4、参考文章