如何为计算欧几里得距离和相关性设置值

这是我的词向量:

googleteststackoverflowyahoo

我为这些词分配了如下值:

google : 1test : 2stackoverflow : 3yahoo : 4

以下是一些示例用户及其词汇:

user1   google, test , stackoverflowuser2   test , googleuser3   test , yahoouser4   stackoverflow , yahoouser5   stackoverflow , googleuser6

对于词向量中不包含值的用户,我分配了’0′

基于此,这对应于:

user1   1, 2 , 3user2   2 , 1 , 0user3   2 , 4 , 0user4   3 , 4 , 0user5   3 , 1,  0user6   0 , 0 , 0

我不确定这些值是否正确,或者这种为每个词向量值分配值的方法是否正确,以便应用’欧几里得距离’和’相关性’。我基于《编程集体智慧》一书中的片段进行操作:

“收集偏好 你需要一种方式来表示不同的人及其偏好。如果你在构建一个购物网站,你可能会使用1来表示某人过去购买过某物品,而使用0来表示他们没有购买过。”

对于我的数据集,我没有偏好值,所以我只是使用唯一的数值来表示用户是否包含词向量中的某个词。

这些是我应该为我的词向量设置的正确值吗?我应该如何确定这些值应该是什么?


回答:

为了使距离和相似性度量有效,你需要为词汇表中的每个词设置一列,然后用布尔值零和一来填充这些列,根据样本中出现的相应词。例如:

                                 G   T   SO  Y!google, test, stackoverflow  =>  1,  1,  1,  0test, google                 =>  1,  1,  0,  0stackoverflow, yahoo         =>  0,  0,  1,  1

等等。

现在,第一和第二个向量之间的平方欧几里得距离是

(1 - 1)² + (1 - 1)² + (1 - 0)² + (0 - 0)² = 1

这在直觉上是有意义的,因为这两个向量仅在一个位置上不同。同样,最后两个向量之间的平方距离是四,这是这个空间中的最大平方距离。

这种编码是“独热编码”或“一对K编码”的扩展,它是文本机器学习的常用方法(尽管很少有教科书会详细说明)。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注