xgboost处理二分类问题原理

      博主最近为了准备校招猛看有关gbdt的算法细节,有一个百思不得其解的疑惑,就是xgboost在处理二分类问题时,返回的预测值是0~1之间的概率值,莫非和logistic function有关?

      最终,我查阅了xgboost官网的介绍,得到了一些答案。在这里,具体原理我就不讲了,网上一大堆资料写烂了(具体原理请看这篇文章),我说几个容易忽视的地方。

      1.叶子是以什么指标决定是否分裂的?

      一开始,在网上看资料说xgboost用到的都是CART回归树,自然而言就以为,解决分类问题用到时gini系数,回归问题用的是均方差,实际根本不是这回事!

     首先,我们的obj经过一系列化简得到

这里


这个obj代表了每棵树的要优化的最终目标,应该越小越好。我们前面得到了t-1个函数模型(树),我们要构建第t个模型(树)时,只要求前t-1函数的一阶和二阶导数和前t-1的函数模型的乘积即可。这里的可以控制叶子节点的个数,继而控制模型复杂度,提高范化能力。

那么,如何分裂呢???

大概就是这个公式了:

xgboost处理二分类问题原理_第1张图片

算分数,分数正的就分裂吧。。。或是可以设置阈值?whatever。

     2.二分类问题最后咋得到的概率?

     比如,得到树模型后,输入一个原始数据,经过n个数打分,残差相加,得到的数值要经过logictic function映射,然后就得到概率值了。

    3.多分类问题咋处理的?

    当然是用softmax函数喽,具体细节,看源码吧。。


你可能感兴趣的:(xgboost处理二分类问题原理)