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