lightgbm怎么处理分类变量?

  统计/机器学习 监督式学习 数据预处理    浏览次数:7534        分享
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



  相关讨论

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

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

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

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

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

请问针对Adaboost、GBDT等集成学习同一个特征是否可以入模多次?

lightgbm使用自定义损失函数后,二分类的预测结果不再是【0,1】区间

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

剪枝是什么意思

怎么理解RandomForest中的max_features?

  随便看看

如何调节seaborn里字体大小?

plt.scatter plot怎么让不同的类别有不同的颜色

pandas同时返回一个dataframe的前几行(head)和后几行(tail)

sklearn模型当中的verbose是什么意思?

怎么计算(估计)ROC AUC的置信区间?