lightgbm怎么处理分类变量?

  统计/机器学习 监督式学习 数据预处理    浏览次数:213        分享
0

LGBMClassifier在fit时可以输入categorical_feature,这样所有的分类变量不需要进行one-hot encoding。

那么lgbm到底是怎么处理分类变量的?底层是什么原理?

 

泡椒   2019-11-15 08:14



   2个回答 
7

用独热编码来表示分类特征是很常见的,但是这种方法对于树模型来说不是最优的。特别是对于高基数分类特征,在单一热门特征上构建的树往往是不平衡的,需要增长得非常深才能达到良好的准确性。

最佳解决方案是通过将类别分类为2个子集来对类别特征进行拆分,而不是使用独热编码。 如果特征具有k个类别,则存在2 ^(k-1)-1个可能的分区。 但是对于回归树有一个有效的解决方案[1]。 它需要大约O(k * log(k))来找到最佳分区。

基本思想是在每次分组时根据训练目标对类别进行分类。 更具体地说,LightGBM根据其累积值(sum_gradient / sum_hessian)对直方图(用于分类特征)进行排序,然后在排序的直方图上找到最佳分割。


总结一下,就是加快了训练速度。


[1] Walter D. Fisher. “On Grouping for Maximum Homogeneity.” Journal of the American Statistical Association. Vol. 53, No. 284 (Dec., 1958), pp. 789-798.

参考自官方文档

SofaSofa数据科学社区DS面试题库 DS面经

cabbage   2019-11-17 20:19

2

它的原理是把这个categorical feature下所有的level分成两个子集,如果是3个level,就有3种分法,k个level就有$2^{k-1}-1$个分法,从中挑选最佳的一种分法。

在LGBMClassifier或者LGBMRegressor中,设置categorical_feature时一定要先进行label encoding,也就是分类特征的取值必须是整数。

SofaSofa数据科学社区DS面试题库 DS面经

简Cheng   2019-11-18 15:30



  相关主题

随机森林中增加树的数量对于偏差和方差的影响   2回答

决策树的深度和数据特征个数的关系   1回答

Gradient tree boosting和random forest (随机森林) 有什么区别和联系   1回答

决策树、随机森林中的多重共线性问题   3回答

怎么理解RandomForest中的max_features?   1回答

决策树可以做多元分类吗?   1回答

决策树怎么做增量学习或者online学习?   1回答

随机森林是如何计算测试样本的概率的?   1回答

python sklean中的决策树是用的哪一种决策树算法?   2回答

Adaboost里的树有没有可能权重是负数?   1回答

请教lightGBM中的level wise具体计算步骤是怎样的?   1回答

随机森林警告:A column-vector y was passed when a 1d array was expected   1回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!