- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
散列降低了维度,而单热编码本质上是通过将多类别变量转换为许多二进制变量来扩展特征空间。所以看起来它们有相反的效果。我的问题是:
在同一数据集上执行这两项操作有什么好处?我读过一些有关捕获交互的内容,但没有详细说明 - 有人可以详细说明吗?
哪一个先出现,为什么?
最佳答案
需要二进制 one-hot 编码将分类数据馈送到具有标准内核的线性模型和 SVM。
例如,您可能有一个功能是一周中的某一天。然后为它们每个创建一个 one-hot-encoding。
1000000 Sunday
0100000 Monday
0010000 Tuesday
...
0000001 Saturday
特征散列主要用于对参数向量进行显着的存储压缩:将高维输入向量散列到较低维的特征空间中。现在,所得分类器的参数向量可以位于较低维空间中,而不是位于原始输入空间中。这可以用作降维的方法,因此通常您希望以稍微降低性能来换取显着的存储优势。
wikipedia中的示例是一个很好的。假设您有三个文档:
使用词袋模型,您首先创建以下文档到单词模型。 (每一行都是一个文档,矩阵中的每个条目表示某个单词是否出现在文档中)。
The problem with this process is that such dictionaries take up a large amount of storage space, and grow in size as the training set grows.
Instead of maintaining a dictionary, a feature vectorizer that uses the hashing trick can build a vector of a pre-defined length by applying a hash function h to the features (e.g., words) in the items under consideration, then using the hash values directly as feature indices and updating the resulting vector at those indices.
假设您使用 3 个存储桶生成以下哈希特征。 (您将
k
不同的哈希函数应用于原始特征,并计算哈希值命中存储桶的次数)。bucket1 bucket2 bucket3
doc1: 3 2 0
doc2: 2 2 0
doc3: 1 0 2现在您已成功将 9 维特征转换为 3 维特征。
特征哈希的一个更有趣的应用是个性化。 feature hashing的原论文包含一个很好的例子。
假设您想要设计一个垃圾邮件过滤器,但要针对每个用户进行定制。这样做的简单方法是为每个用户训练一个单独的分类器,这对于训练(训练和更新个性化模型)或服务(将所有分类器保存在内存中)都是不可行的。一个聪明的方法如下所示:
- 每个 token 都是重复的,并且通过将每个单词与唯一的用户 ID 连接起来来个性化一个副本。 (请参阅USER123_NEU和USER123_Votre)。
- 词袋模型现在包含常见关键字和特定用途关键字。
- 然后将所有单词散列到低维特征空间中,在其中对文档进行训练和分类。
现在回答您的问题:
是的。 one-hot-encoding 应该放在第一位,因为它将分类特征转换为二进制特征,使其可以被线性模型使用。只要使用压缩特征空间有好处,您就可以将两者应用在同一数据集上。请注意,如果您可以容忍原始特征维度,则不需要特征散列。例如,在常见的数字识别问题中,例如 MINST ,图像由 28x28 二进制像素表示。输入维度仅为 784。当然,在这种情况下特征哈希不会有任何好处。
关于hash - 在预处理高基数数据时,是先散列还是先进行单热编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26473233/
我是一名优秀的程序员,十分优秀!