全文共2380字,预计学习时长6分钟
图源:unsplash
独热编码(又称虚拟变量)是一种将分类变量转换为若干二进制列的方法,其中1表示存在属于该类别的行。显然,从机器学习的角度来看,它并不适合对分类变量进行编码。
很明显,它增加了大量的维度,但通常来说维数越小越好。例如,如果设置一个列代表美国的州(例如加利福尼亚州、纽约州)的话,那么独热编码方案将会多出50个维度。
这样做不仅会为数据集增加大量维度,而且实际上并没有太多信息——大量0中零散分布着几个1。这造成了一个异常稀疏的景观,使得优化难以进行。对于神经网络来说尤其如此,其优化器在大量的空白维度中很容易进入错误的空间。
更糟糕的是,每个信息稀疏列之间都具有线性关系。这意味着一个变量可以很容易地使用其他变量进行预测,从而可能导致高维的并行性和多重共线性问题。
最佳数据集包含了信息具有独立价值的特征,而独热编码可创建一个完全不同的环境。当然,如果只有三个或甚至四个类,那么独热编码可能不是一个糟糕的选择。不过根据数据集的相对大小,其他的替代方法有可能值得一探。
目标编码可以有效表示分类列,而且仅占用一个特征空间。它也称为均值编码,该列中的每个值都被该类别的平均目标值代替。这样可以更直接地表示分类变量和目标变量之间的关系,并且这也是一种非常流行的技术(尤其是在Kaggle比赛中)。
这种编码方法有一些缺点。首先,它使模型更难以学习均值编码变量和另一个变量之间的关系。它只能根据它与目标的关系在在列中绘制相似性,这有利有弊。
这种编码方法对y变量非常敏感,会影响模型提取编码信息的能力。