在以前读书的时候,机器学习中就提到对于离散的特征往往采用独热编码对特征进行预处理。但是从机器学习的角度来看,one-hot 编码并不是一种良好的分类变量编码方法。
- one-hot 编码却增加了大量的维度,且这些特征维度是稀疏的,有用的信息零散地分布在大量数据中。比如一个20类的离散特征,通过独热编码之后,产生20列特征,但是这些特征中95%都是0;这种稀疏的特征对于神经网络来说很难优化。
- 每个信息稀疏列之间都具有线性关系。比如20列特征之和为1。这意味着一个变量可以很容易地使用其他变量进行预测,导致高维度中出现并行性和多重共线性的问题。
其他可选的编码方式
目标编码
离散特征编码主要存在的问题是,类别特征难以量化和比较。那么就可以采用目标编码的方式。将原本是类别的离散量变为预测目标在该离散量上的均值。
这种定义方式人为的展示了分类变量和目标变量之间的关系。
缺点也很明显:这种编码方法对目标变量 y非常敏感,这会影响模型提取编码信息的能力。如果Y中有异常值,那么目标编码会出现问题。
留一法编码
留一法(Leave-one-out)编码试图通过计算平均值(不包括当前行值)来弥补对 y 变量的依赖以及值的多样性。这使异常值的影响趋于平稳,并创建更多样化的编码值。
由于模型不仅要面对每个编码类的相同值,还要面对一个范围值,因此它可以更好地泛化。
实现类似效果的另一种策略是将正态分布的噪声添加到编码分数中,其中标准差是可以调整的参数。
贝叶斯目标编码
贝叶斯目标编码(Bayesian Target Encoding)是一种使用目标作为编码方法的数学方法。仅使用均值可能是一种欺骗性度量标准,因此贝叶斯目标编码试图结合目标变量分布的其他统计度量。例如其方差或偏度(称为高阶矩「higher moments」)。
然后通过贝叶斯模型合并这些分布的属性,从而产生一种编码,该编码更清楚类别目标分布的各个方面,但是结果的可解释性比较差。
网友评论