术语“维度”的含义是 特征向量。 一些分类特征是低维度。例如:
特征名称 | 类别数量 | 类别示例 |
---|---|---|
snowed_today | 2 | True、False |
skill_level | 3 | 新手、从业者、专家 |
season | 4 | 冬季、春季、夏季、秋季 |
day_of_week | 7 | 星期一、星期二、星期三 |
星球 | 8 | 水星、金星、地球 |
当某个分类特征的可能类别数量较少时,您可以 将其编码为词汇。有了词汇编码,模型将每个 作为单独的特征进行预测。在训练期间, 模型会为每个类别学习不同的权重。
例如,假设您要创建一个模型来预测汽车的价格,
一部分是针对名为 car_color
的分类特征进行训练的。
也许红色汽车比绿色汽车的价值更高。
由于制造商提供的外部颜色数量有限,car_color
低维分类特征。
下图推荐了一个词汇(可能的值)
car_color
:
练习:检查您的直觉
"Red"
不是浮点数。您
必须将 "Red"
等字符串转换为浮点数。
索引编号
机器学习模型只能操控浮点数。 因此,您必须将每个字符串转换为唯一的索引编号,如 如下图所示:
检查您的直觉
"Black"
(索引编号 5)将意义重大的 5 倍
而不是 "Orange"
(索引编号为 1)。
"Black"
(索引编号 5)视为
对模型有意义的价值是 "Orange"
的 5 倍
(索引编号 1)。
独热编码
构建词汇的下一步是将每个索引编号转换为 其独热编码。 在独热编码中:
- 每种类别都由 N 个元素的向量(数组)表示,其中 N
是类别的数量。例如,如果
car_color
有八个可能的 则表示独热矢量将有八个元素。 - 独热矢量中只有一个元素的值为 1.0; 其余所有元素的值均为 0.0
例如,下表显示了
car_color
:
功能 | 红色 | Orange | 蓝色 | 黄色 | 绿色 | 黑色 | 紫色 | 棕色 |
---|---|---|---|---|---|---|---|---|
“红色” | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
“橙色” | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
“蓝色” | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
“黄色” | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
“绿色” | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
“黑色” | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
“紫色” | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
“棕色” | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
传递的是独热矢量,而不是字符串或索引编号 传递给特征向量。模型会为每个元素学习单独的权重, 特征向量。
下图显示了 词汇表征:
稀疏表示法
值主要为零(或空)的特征称为
稀疏特征。很多
分类特征(例如 car_color
)往往是稀疏特征。
稀疏表示法
表示存储 1.0 的位置
输出结果。例如,"Blue"
的独热矢量为:
[0, 0, 1, 0, 0, 0, 0, 0]
由于 1
位于位置 2(从 0 开始计数时),因此
上述独热矢量的稀疏表示法为:
2
请注意,稀疏表示法消耗的内存远远少于 即 8 元素独热矢量。重要的是,模型必须基于 BERT 模型进行训练, 即独热矢量,而不是稀疏表示法。
分类数据中的离群值
与数值数据一样,分类数据也包含离群值。假设
car_color
不仅包含热门颜色,还包含一些很少使用的颜色
离群值颜色,例如 "Mauve"
或 "Avocado"
。
您不必为每种离群颜色分别指定一个类别,
可以将它们集中到一个“综合”中这个类别叫词汇表外
(OOV)。换句话说,所有离群颜色被分箱到
离群值。系统会学习该离群值存储分区的单个权重。
对高维分类特征进行编码
一些分类特征具有大量维度,例如 下表中的项目:
特征名称 | 类别数量 | 类别示例 |
---|---|---|
words_in_english | 约 500,000 | “快乐”“步行” |
US_postal_codes | 约 42,000 人 | “02114”、“90301” |
last_names_in_Germany | 约 850,000 | “施密特”、“施耐德” |
如果类别数量很多,独热编码通常不是好的选择。 嵌入,在单独的 嵌入模块,通常是 更好的选择。嵌入可显著减少 这在两个重要方面让模型受益:
- 模型的训练速度通常较快。
- 构建的模型通常可以更快地推断出预测结果。也就是说, 延迟时间较短。
哈希(也称为“哈希”) 技巧)是一种不太常用的方法,用于减少维度数量。