石晔

xgboost 原理个人理解解读

2018-11-15  本文已影响0人  yesski

目前推荐排序线上模型采用基于xgboost得打分模型,来实现个性化的推送,现就模型得原理部分进行梳理

https://blog.csdn.net/guoxinian/article/details/79243307

大部分的图是从这个链接来得,这个链接也是转载的别人得,但是找不到原出处了

现就谈自己得理解

xgboost是个前向相加模型,这也是boost得本质,后一棵树在前一棵树得基础上进行优化

在说xgboost之前就要说gbdt,gbdt实际是xgboost原理得一个特殊化,具体gbdt得原理见下面这个链接

https://blog.csdn.net/zpalyq110/article/details/79527653

在看完gbdt得连接以后,对于下面得推导就会很熟悉,我们继续xgboost得理解

目标函数+detla f(x) 得优化问题,自然用到泰勒展式

xgboost就是用到了二阶导,gbdt用到了一阶导得形式

上面是先讲解了泰勒展示, 如果对上面泰勒展式很熟悉,直接到下面这个图

就是对叶子节点进行了编号,给每个叶子节点一个权重,

然后将训练误差和树结构复杂度 加一起成为最后得目标函数

我得心魔

从而得到了重要性,但是对于重要性,有人有异议,所以没办法做

石晔:

在XGBoost中提供了三种特征重要性的计算方法:

‘weight’ - the number of times a feature is used to split the data across all trees.

‘gain’ - the average gain of the feature when it is used in trees

‘cover’ - the average coverage of the feature when it is used in trees

石晔:

三种方法计算得出的 特征值, 一般哪种更合理?

害怕孤独的兔子先生:

这个特征重要性的参考性不是很大,如果要用的话gain比较好用一些

石晔:

为啥这个特征重要性的参考性不是很大呢, 非深度学习模型里面,这个用的比较多的一个原因 也是能得到他的特征重要性,从而做特征筛选?》

害怕孤独的兔子先生:

特征筛选有好多种方式,xgb中的特征重要性与特征对模型的提高性联系并不是很大,有时候很重要的特征也只提高一点点模型,不重要的特征反而能提高很多,这都是很常见的情况

石晔:

那除了特征重要性以外,大佬你现在用的多的方式 是哪个呢

害怕孤独的兔子先生:

使用皮尔逊系数或者单特征比较看提高用的比较多

石晔:

单特征比较看, 是指 用一个特征去训练 然后看效果

害怕孤独的兔子先生:

用基础特征加一个特征

石晔:

ok

石晔:

皮尔逊系数  这种的, 只能看基础的线性相关性

石晔:

相当于是从基础特征里面找相关性吗?

石晔:

一般很多特征都是非线性关系, 用皮尔逊系数,没啥用呢

害怕孤独的兔子先生:

嗯,所以筛选的时候会用到很多方式,也可以一个一个特征去掉看效果,综合多种方法用吧

上一篇下一篇

猜你喜欢

热点阅读