one-hot 编码、multi-hot 编码 和 Embedding

1. One-hot 编码

1.1 定义与数学表示

One-hot 编码 是一种将离散的类别型数据(categorical data)转化为二进制向量的方法。假设有 N N N 个类别,每个类别被分配一个唯一的索引 i i i(从 0 到 N − 1 N-1 N1)。该类别的 one-hot 表示是一个长度为 N N N 的向量,其中:

  • i i i 个位置为 1。
  • 其他位置为 0。

数学表示
对于类别 c i c_i ci(索引为 i i i),其 one-hot 向量为:
v i = [ 0 , 0 , … , 1 , … , 0 ] \mathbf{v}_i = [0, 0, \dots, 1, \dots, 0] vi=[0,0,,1,,0]
其中 v i [ j ] = 1 v_i[j] = 1 vi[j]=1 j = i j = i j=i,否则 v i [ j ] = 0 v_i[j] = 0 vi[j]=0

例子
假设有 5 种动物(猫、狗、鸟、鱼、蛇),它们的 one-hot 编码为:

  • 猫: [1, 0, 0, 0, 0]
  • 狗: [0, 1, 0, 0, 0]
  • 鸟: [0, 0, 1, 0, 0]
  • 鱼: [0, 0, 0, 1, 0]
  • 蛇: [0, 0, 0, 0, 1]

1.2 特点与性质

  • 稀疏性:向量中只有 1 个元素为 1,其余为 0,导致存储效率低。
  • 正交性:任意两个 one-hot 向量的点积为 0,余弦相似度为 0:
    v i ⋅ v j = 0 , if  i ≠ j \mathbf{v}_i \cdot \mathbf{v}_j = 0, \quad \text{if } i \neq j vivj=0,if i=j
    这意味着类别之间被假设为完全无关,没有语义相似性。
  • 高维性:向量维度等于类别总数 N N N。当 N N N 很大(例如 NLP 中词汇表有 10 万个单词),向量维度极高。
  • 无序性:One-hot 编码不假设类别之间有任何顺序关系,适合无序的分类变量。

1.3 实现代码

以下是用 Python࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱看烟花的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值