facebook中使用GBDT组合特征是否有同学尝试过?我考虑要做这件事,需要保存训练得到的树结构,然后记录下每个观测被每棵树分的类别,然后把某些结点作为一个特征,落在这些结点的观测标注为1,其它样本为0,如此产生一些特征。这样的话也就必须自己实现GBDT吧?是否可以通过R或python现有的包或模块辅助实现呢?


1. 首先要切分数据集,一部分用于训练GBDT,另一部分使用训练好的GBDT模型

2. GBDT模型的apply方法生成x在GBDT每个数中的index,然后通过onehot编码做成特征。

3. 新的特征输入到分类(如LR)模型中训练分类器。

具体可以参考:

GBDT原理及利用GBDT构造新的特征-Python实现 - AaronChou的博客 - 博客频道 - GBDT原理及利用GBDT构造新的特征-Python实现 - CSDN博客


辅助包模块跑GBDT肯定没问题的,但是要看一下是否支持树的输出。

自己实现GBDT也是一个很好的实践,并且可以在实现过程中通过设计达到输出树作为特征的目的(这点我们在工作中也是自己搞得)。但是自己实现GBDT需要一个好的baseline用于测试,保证效果。

另外你中间说的特征加工的一段,肯定是要自己实现的。

python的scikit库以及xgboost都可轻松实现。

先占坑,有时间了来贴代码

如果你是用 scikit-learn的话,gbdt有个apply方法可以返回叶子节点的index


请问你这个问题解决了吗?
python 的scikit-learn 可以筛选组合特征

求问R语言怎么实现?


sklearn 已经提供了一个实现,参考 Feature transformations with ensembles of trees


推荐阅读:
相关文章