xgboost可以处理的特征属性:
输入值可能有连续属性、二元属性、标称属性(类型比二元多)、序数属性(衣码小中大号等)
2. 模型训练1:树的分叉
刚读xgboost原理 https://arxiv.org/pdf/1603.02754.pdf 的时候会有困惑,为什么2.2小节能够同时得到树的结构和书的权值,实际上是先通过3节讲的树的分裂得到树结构,然后才有公式(4)的演进。
传统决策树举例:
CART选择Gini系数划分树杈,Gini系数代表不纯度, 为0时称作0不纯度,用来将样本进行分类后度量不纯度,选取不纯度小的分杈方法,CART用二分法来规避分叉过多带来的零不纯度。
评价函数eval_metric: ,代入sigmoid函数如下:
一阶导数
二阶导数
分类器输出: https://blog.csdn.net/u014033218/article/details/90516849
binary:logistic和 'objective': 'reg:logistic'的输出是一样的,都是预测的概率
binary:logitraw是输出的得分,用sigmoid()函数处理后就和上述两个概率值一致
XGBClassifier里就是把预测的概率值,取阈值0.5,小于这个值的为0,大于这个值的为1,
b. 多元分类器 multi:softmax:
目标函数softmax:
def softmax(x): e =np.exp(x) return e / np.sum(e)
求导: ;
评价函数mlogloss:
只针对第i个样本可以得到
N:样本数; M:类别数; :第i个样本属于分类j时为为1,否则为0;
:第i个样本被预测为第j类的概率 (平均为1/j), 即softmax输出的第j个layer
一阶导数:
二阶导数:
代码: https://github.com/dmlc/xgboost/blob/master/demo/guide-python/custom_softmax.py
多元分类输出: https://blog.csdn.net/phyllisyuell/article/details/81011660
我们这里以标签为0,1,2的三分类数据为例。
每个类别有独立的树,有对应的wjc, j是第几片叶子,c是第几个类别的树。
multi:softmax是使用softmax后产生的分类结果,输出为0,1,2。
multi:softprob是y通过softmax后输出的概率矩阵,输出的是n*3的概率矩阵(n为测试数据的条数)。
选取最大概率的赋予对应的类别eg[0.34,0.56,0.42],对应softmax类别1.
多元分类的泰勒展开:经过推导,改进这篇,多分类原理 https://www.jianshu.com/p/2698db68f2e7