【Python】特征工程:数值特征的缩放与编码
数值特征是结构化竞赛中重要的特征,也是需要处理的特征。一般而言数值特征的操作,包括如下几个方面:
离群点处理 缺失值填充 缩放处理 编码处理
缺失值填充
如果使用非树模型,则需要考虑对数值特征进行填充。缺失值填充的基础方法包括:
使用统计值填充(均值/中位数/常数) 最近邻样本填充(行维度) 基于模型的填充
缩放处理
数值特征在归一化后直接加到深度模型中,直接对原始特征做归一化,或者通过BN层来做归一化。
RankGuass
将数值进行排序,然后将转换到[-1, 1]范围内,然后使用逆误差函数进行转换。
详细案例见:https://zhuanlan.zhihu.com/p/330333894
标准化
最大最小缩放
最大绝对值缩放
鲁邦缩放
计算数值具体的分位点Q1和Q3,
对数转换
分位点转换
计算数值分布的分位点,将分布转为均匀分布或正态分布。
幂变换
将数值转换为更加偏向正态分布的形态
Box-Cox 变换 Yeo-Johnson 变换
编码处理
原始特征
用原始的数值作为特征,或者在数值上面做一些计算。
二值化/分箱处理
对数值按照大小进行划分,可以直接使用pd.cut
实现。
Rank值
统计数值具体大小次序。
离散嵌入
利用分点可以将数值进行离散化,然后作为ID类特征加到模型中,正常参与模型训练。离散化有两个好处:一是引入非线性,二是可以过滤一些异常值。
域嵌入
将一个域内的数值型特征共享一个field embedding,可以理解为使用一个向量来转换。
树编码
通过树模型节点的划分对不同特征值划分到不同的节点,从而对其进行离散化。
往期精彩回顾 本站qq群851320808,加入微信群请扫码:
评论