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

这是我的词向量:

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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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