不要再对类别变量进行独热编码了

作者:Andre Ye
编译:ronghuaiyang
导读
还有很多更好的选择 。

不要再对类别变量进行独热编码了

文章插图
 
独热编码,也称为dummy变量,是一种将分类变量转换为若干二进制列的方法,其中1表示属于该类别的行 。
不要再对类别变量进行独热编码了

文章插图
 
很明显,从机器学习的角度来看,它不是分类变量编码的好选择 。最明显的是它增加了大量的维数,这是常识,通常低维数是更好的 。例如,如果我们要用一列表示美国的一个州(例如加利福尼亚、纽约),那么独热编码方案将会导致50个额外的维度 。
它不仅给数据集增加了大量的维数,而且确实没有多少信息 —— 一大堆零中偶尔点缀着几个1 。这导致了一个异常稀疏的现象,这使得它很难进行最优化 。这对于神经网络来说尤其如此,它的优化器在几十个空维度的情况下很容易进入错误的优化空间 。
更糟糕的是,每个信息稀疏列之间都存在线性关系 。这意味着一个变量可以很容易地使用其他变量进行预测,从而导致并行性和多重共线性的问题 。
不要再对类别变量进行独热编码了

文章插图
 
最优数据集由信息具有独立价值的特征组成,而独热编码创建了一个完全不同的环境 。
【不要再对类别变量进行独热编码了】诚然,如果只有3个或者甚至4个类别,独热编码可能不是一个糟糕的选择,但是它可能值得探索其他选择,这取决于数据集的相对大小 。
目标编码是表示分类列的一种非常有效的方法,它只占用一个特征空间 。也称为均值编码,将列中的每个值替换为该类别的均值目标值 。这允许对分类变量和目标变量之间的关系进行更直接的表示,这是一种非常流行的技术(尤其是在Kaggle比赛中) 。
不要再对类别变量进行独热编码了

文章插图
 
这种编码方法有一些缺点 。首先,它使模型更难学习一个平均编码变量和另一个变量之间的关系,它只根据它与目标的关系在一列中绘制相似性,这可能是有利的,也可能是不利的 。
但是,这种编码方法对


    推荐阅读