独热编码用一个恰好只有一个分量为1、其余分量均为0的向量来表示类别值。向量的每个位置对应一个不同的类别。在机器学习中,它将离散标签转换为数值输入,而不会人为赋予类别顺序。在数字电子技术中,同样的原理通过不同的有效比特来表示状态。向量的分量数等于所表示的类别数或状态数。(developers.google.com)
定义与数学结构
对于类别集合 ,独热编码将 映射为向量 ,其定义为
每个坐标都是一个示性函数,表示某个值是否属于相应类别。例如,将类别表按红、绿、蓝的顺序排列,可得到:
| 类别 | 红 | 绿 | 蓝 |
|---|---|---|---|
| 红 | 1 | 0 | 0 |
| 绿 | 0 | 1 | 0 |
| 蓝 | 0 | 0 | 1 |
类别的排列顺序确定了各坐标的含义,但并不代表类别之间存在等级关系。(developers.google.com)
在实向量空间中,这些向量构成 的标准正交基。因此,不同类别对应向量的内积为零,欧几里得距离为 。这些数学性质说明,这种表示能够区分类别身份,却无法自行表达语义相似性:关系密切的两个类别,其初始距离与毫不相关的两个类别完全相同。(developers.google.com)
类别特征与统计模型
独热编码是一种常见的特征工程变换,适用于产品类型、地理区域等名义变量。如果为这些类别分配连续的整数,而模型又将这些编码视为数量,就可能引入原本不存在的数值关系。独热编码则为每个类别提供单独的特征,使模型能够为不同类别设置各自的参数。它广泛用于线性模型和支持向量机。(developers.google.com)
对于多个类别变量,可将它们各自的编码向量拼接起来,形成彼此独立的块。如果这些变量分别有 个类别,则得到的行向量有 个分量,通常包含 个1。因此,“独热”针对的是每个类别变量对应的块,而不一定是整个特征向量。对数据集进行编码会生成一个矩阵,其中各列始终对应固定的类别含义。(scikit-learn.org)
在含有截距项的线性回归中,保留所有示性变量列会产生线性依赖:同一个类别变量的各列相加,等于截距列。由此得到的设计矩阵不具有满秩,因此在没有额外约束的情况下,无法唯一确定其系数。一种常见的替代方法是保留 个示性变量,并将省略的类别作为参照类别。这种简化表示通常称为虚拟变量编码;其参照类别对应全零向量,因此严格来说并不是独热编码。并非所有情况下都必须删除一个类别,而且删除类别会破坏类别之间的对称性,从而影响采用正则化的模型。(scikit-learn.org)
分类目标与嵌入
在监督学习中,独热向量可以表示相互排斥的目标类别。如果 ,而模型预测的各类别概率为 ,则交叉熵损失函数为
这些概率通常由Softmax函数的输出提供。并非总是需要显式构造目标向量:某些损失函数实现可以接受类别索引,直接计算等价的目标函数。软目标(包括经过平滑处理的标签)可能包含多个非零概率,因此不是独热向量。(docs.pytorch.org)
在自然语言处理中,词表中的词项同样可以用独热向量表示。通过学习得到的嵌入,可将这种稀疏的身份表示转换为稠密向量。如果嵌入矩阵 的每一行存储一个向量,那么 就会选出第 行。这种代数解释是词嵌入的基础;实际实现可以通过索引查找完成这一操作,无须构造完整的独热输入。与原始编码不同,嵌入通过学习形成的几何结构可以捕捉与训练任务有关的关系。(developers.google.com)
存储与类别表管理
庞大的类别表会产生高维表示。对于包含 个观测值和 个类别的稠密数据集,需要存储 个元素;但对于单个类别变量,其中只有 个元素非零。稀疏矩阵通过存储非零值及其位置,能够提高存储效率。不过,稀疏输入并不会自动消除大型模型的开销:将 个输入连接到 个神经单元,仍会引入 个权重。当类别表规模较大时,嵌入和特征哈希可作为替代表示。(developers.google.com)
编码器需要稳定的类别表和列顺序。类别可以从外部指定,也可以从训练数据中学习。在评估时,需要学习的预处理步骤应仅在训练部分上拟合,再应用于留出的观测数据;使用测试集进行拟合可能导致数据泄漏(机器学习)。在交叉验证的各折中,也应保持同样的分离。(scikit-learn.org)
对于此前未见过的类别,需要制定明确的处理策略。具体实现可以拒绝这些类别,将其映射到“未知类别”列,或返回一个全零块。罕见类别也可以合并到同一个桶中。全零块是实际操作中的一种扩展,而不是严格意义上的独热向量;如果同时省略了参照类别,这两种情况可能无法区分。(scikit-learn.org)
数字状态编码
在有限状态机中,独热编码为每个状态分配一个存储比特,在有效运行期间,恰好只有一个比特置为1。因此,一个具有 个状态的状态机需要使用 个状态比特,而紧凑的二进制编码只需 个比特。这种方式可以简化译码逻辑并改善时序,但代价是需要更多存储资源。实际的面积和性能取决于器件及综合后的逻辑。在严格的独热编码方案中,全零模式和多个比特同时为1的模式均为无效状态;恢复逻辑可以明确地将这些模式转回复位状态。(intel.com)