word2Vec 中的 VectorSize 和 TF-IDF 中的 numFeatures 之间的区别

问题描述

Word2Vec 中的 vectorSizeHashingTF 中的 numFeatures 有什么区别?我指的是 pyspark 中的 Word2VecHashingTF 类:

WORD2VEC:类 pyspark.ml.feature.Word2Vec(*,vectorSize=100,minCount=5,numPartitions=1,stepSize=0.025,maxIter=1,种子=无,inputCol=无,outputCol=无,windowSize=5,maxSentenceLength=1000)

HashingTF:类 pyspark.ml.feature.HashingTF(*,numFeatures=262144,binary=False,inputCol=None,outputCol=None)

解决方法

它们都是表示的维度,但值将在不同的范围内并以不同的方式使用。

Word2Vec 中,每个单词都有一个 vectorSize 维度的向量 - 其中每个维度都是一个浮点数(而不是整数)。这些值将是正值和负值,并且基本上永远不会为零。因此,所有单词在原点周围的模糊空间“云”中都有坐标。

因此,word2vec 向量被认为是单词的“密集嵌入”:它将单词表示到较小的向量空间中(“嵌入”它),其中每个维度都不同并保存一些信息(“密集”) )。因此,所有(在您的示例中为 100 个)维度都将用于表示任何一项(单词)。

HashingTF(可能代表“散列词频”或“散列技巧频率”)中,许多单词的文本文档获得一个 numFeatures 维向量 - 其中每个维都是非-负整数计数某些单词在文档中出现的次数。

通过使用一种称为“散列技巧”的技术,它可以确保将任何单词(无论之前是否见过)(通过散列值)分配给一组固定的计数桶中的一个。向量中每个维度的值是分配给一个桶的单词数。在典型情况下,许多(如果不是几乎所有)桶都是空的 - 因此在相应的维度中具有零值。

因此,HashingTF 向量被认为是文档的“稀疏嵌入”:它以大多数维度通常保持为零的方式将文档表示为较小的向量空间(“嵌入”它),但很小相关的维度子集变为非零(“稀疏”)。因此,(在您的示例中为 262,144 个)维度可能仅由非零维度及其值的简短列表表示。