当前位置: 首页 > 后端技术 > Python

特征工程:测试特征编码对基于梯度提升的模型的影响

时间:2023-03-26 13:11:43 Python

为梯度提升学习选择默认特征编码策略需要考虑的两个重要因素是训练时间和与特征表示相关的预测性能。Automunge库是处理表格数据的常用库。它可以填充空值,也可以进行分类编码和归一化等操作。默认情况下,Automunge对分类特征执行二值化并执行z-score归一化。本文将通过对一系列不同数据集进行基准测试来验证这些默认值是否是最佳选项。长期以来,特征工程对深度学习应用的有用性一直被认为是一个已解决的负面问题,因为神经网络本身就是通用函数逼近器(Goodfellow等人,2016年)。但即使在深度学习的背景下,表格特征也经常使用某种形式的编码进行预处理。Automunge(Teague,2022a)这个python库最初是为数字和分类特征的基本编码而构建的,例如z-score标准化和单热编码。在迭代开发过程中开始纳入完整的编码选项库,包括一系列数字和分类特征选项,现在还包括自动归一化、二值化、散列和缺失数据填充方案。尽管这些编码选项对于深度学习来说可能是多余的,但这并不排除它们在其他模型中的实用性,包括简单回归、支持向量机、决策树,或者本文的重点,梯度提升模型。本文的目的是介绍梯度提升模型下表格数据中数字和分类特征的各种编码策略之间的基准研究结果。GradientBoosting梯度提升(Friedman,2001)是一种类似于随机森林(Briemen,2001)的决策树学习范式(Quinlan,1986),它通过递归训练迭代的目标来修正前一次迭代的性能来提升优化模型.在实践中,通常使用XGBoost库(Chen&Guestrin,2016)和LightGBM(Keetal,2017)进行建模。到目前为止,梯度提升被认为是Kaggle平台上表格模态竞赛的获胜解决方案,即使用于基于窗口的回归,其效率也已在时间序列顺序学习等更复杂的应用中得到证明(Elsayed,2022).最近的表格基准论文也显示,在大多数情况下,梯度提升可能仍优于复杂的神经架构,例如transformer(Gorishniy,2021)。传统观点认为,对于表格应用程序,梯度提升模型比随机森林具有更好的性能,但在没有超参数调整的情况下会增加过度拟合的可能性(Howard&Gugger,2020)。梯度提升比随机森林对调整参数更敏感,并且使用更多参数进行操作,因此通常需要比简单网格或随机搜索更复杂的调整。这导致了超参数搜索的各种方法,例如,一种可用的折衷方案是通过不同的参数子集进行顺序网格搜索(Jain,2016),Optuna(Akiba,2019)等黑盒优化库可以使用更自动化甚至并行化的方法寻找超参数,这也是业界研究的一个活跃方向。特征编码特征编码是指用于为机器学习准备数据的特征集的转换。特征编码准备的常见形式包括数值特征归一化和分类特征编码。尽管一些学习库(catboost)可能接受字符串表示中的分类特征并在内部对其进行编码,但仍然需要手动进行分类特征转换。在深度学习出现之前,通常使用提取信息的替代表示来补充特征或以某种方式组合特征以扩展特征。这种特征工程仍然可以用于梯度提升学习。因此,本文中这些基准测试的目标之一是评估练习与直接在数据上训练相比的好处。特征编码中的一个重要问题是对领域知识的需求。例如,从填充数值分布派生的bin和基于外部数据库查找提取bin以补充特征之间是否存在很大差异?在Automunge的情况下,内部编码库的编码是基于固有的数字或字符串属性,而不考虑可以从相关应用程序领域推断出的相邻属性。(例外是日期时间格式的功能,在自动化下自动提取工作日、营业时间、节假日等,并根据不同时间尺度的周期对条目进行冗余编码)数字特征值的标准化是最常见的在实践中使用,例如z-score。在实践中可能发现的其他变化包括均值缩放和最大缩放。更复杂的约定可以变换尺度以外的分布形状,例如box-cox幂律变换(Box&Cox,1964)或Scikit-Learn的分位数变换器qttf(Pedregosa,2011),它可以将特征变换为特征集更像是高斯分布。数值归一化在线性模型中比树模型更常用,例如在神经网络中,它们的目的是对跨特征的梯度更新进行归一化,而应用于数值特征的归一化类型似乎会影响性能。Categoricalfeatures分类编码在实践中通常使用one-hotencoding进行转换。这种one-hotencoding方法在高基数的情况下存在缺陷(很多类别导致很多和离散的特征),甚至在梯度提升模型中分类标签过多的情况下也是可能的。导致训练超出内存限制。Automunge库试图通过两种方式规避这种高基数边缘情况,首先是默认使用二进制编码而不是单热编码,其次是通过区分哈希编码的最高基数集(Teague,2020a),减少独特的条目。数量。分类二值化可以理解为模拟信号转换为数字信号过程中的量化。返回的特征中的每个字节表示它是否属于分类表示。第三种常见的编码方法是标签编码,它将分类表示为一个连续的数值变量。基准本文中的基准通过训练时间和模型性能这两个关键性能指标来评估一系列数字和分类编码场景。在配备AMD3970X处理器、128GbRAM和两个Nvidia3080GPU的Lambda工作站上测试了大约1.5周。训练是通过Optuna调整的XGBoost进行的,具有5倍快速交叉验证(Swersky等人,2013年),如果33次调整迭代没有改进,则停止训练。性能指标根据25%的验证集的f1分数进行评估。以上是对分类任务的偏差和方差性能进行平衡评估的良好默认值(Stevens,2020)。循环5次并对来自OpenML基准库的31个表格分类数据集取平均值(Vanschoren,2013)。对于使用用于训练的所有数字或分类特征的每种编码类型,报告的指标是上述31个数据集的5次重复的平均值。数值特征的结果如下:最终模型性能:默认:Automunge默认使用z-score归一化(库中的“nmbr”代码)默认编码已被验证为在调优方面的平均性能最高持续时间和模型表现良好的场景。qttf:Scikit-LearnQuantileTransformerwithNormalOutputDistribution,分位数分布变换的平均表现不如简单的z-score归一化,尽管它仍然是表现最好的。powertransform:根据分布属性(通过Automunge库的powertransform=True设置)在“bxcx”、“mmmx”或“MAD3”之间进行条件编码,这是性能最差的情况。mmmx:minmaxscaling'mnmx'将特征分布转移到0-1范围内,这比z-score归一化表现差得多,可能是由于异常值导致数据在编码空间中“拥挤”在一起”的情况。cappedquantiles:minmaxscalingwithcappedoutliersat0.99and0.01quantiles('mnm3'codeinlibrary),这种情况最好直接与mmmx进行比较,表明设置默认的上限异常值不会提高平均性能。binstransform:z-scorenormalizationcoupled具有5个单热编码标准偏差箱(通过库的binstransform=True设置),此配置除了增加训练时间外似乎没有提高模型性能。分类特征的结果如下:默认值:Automunge的默认值是分类二值化(库中的“1010”代码),默认编码已经被验证在调优持续时间和模型性能方面是最好的。onht:one-hotencoding,经常使用作为主流实践中的默认设置,与二值化相比,它对模型性能的影响出奇地差。基于此测试,建议在特殊用例之外停止使用one-hot编码(例如,出于特征重要性分析的目的)。ord3:Ordinalencodingwithintegerssortedbycategoricalfrequency"ord3",按分类频率而不是字母顺序对序数整数进行排序显着有利于模型性能,在大多数情况下,性能优于one-hot编码,但仍不如二值化。ordl:"ordl"ordinalencodingforalphabeticallysortedintegers,alphabeticallysortedordinalencoding(thedefaultforScikit-Learn'sOrdinalEncoder)doesnotperformwell,建议在应用序数时默认为频率排序的整数。hsh2:Hashordinalencoding(librarydefaultforhigh-cardinalitycategory"hsh2"),这个benchmark主要供参考,对低基数集合有性能影响,因为有些类别可能合并。or19:multi-layerstringparsing"or19"(Teague,2020b),多层字符串解析成功优于one-hotencoding,是第二好的表现者,但与vanillabinarization相比表现不佳,推荐默认值。如果应用程序可能有一些与语法内容相关的扩展结构,你可以尝试一下。总结从训练时间和模型性能的角度,测试了Automunge库的z-score归一化和分类二值化。已经展示了很好的效果,所以如果在处理表格数据的时候可以优先使用Automunge的默认值进行特征处理,如果想自己处理特征,那么z-scorenormalization和classificationbinarization也是首先要考虑的方法。基础测试包包括以下表格数据集,此处显示了它们的OpenMLID号:点击预测/233146C.C.FraudD./233143sylvine/233135jasmine/233134fabert/233133APSFailure/233130MiniBooNE/233126volkert/233124jannis/233123numerai28.6/233120Jungle-Chess-2pcs/233119segment/233117car/233116Australian/233115higgs/233114shuttle/233113connect-4/233112bank-marketing/233110blood-transfusion/233109nomao/233107ldpa/233106skin-segmentation/233104phoneme/233103walking-activity/233102adult/233099kc1/233096vehicle/233094credit-g/233088mfeat-factors/233093arrhythmia/233092kr-vs-kp/233091https://www.overfit.cn/post/32b4d95e1c64425084a53f7ce522c188Author:NicholasTeague