查找新数据点的相似性

数据挖掘 数据科学模型 推荐系统 余弦距离
2022-03-05 06:15:52

我已经使用余弦相似度构建了一个推荐引擎。当我想查找与数据集中已经存在的给定记录相似的所有记录时,它可以工作。考虑一个案例,用户输入一条相似度矩阵中不存在的新记录,为了找到并推荐相似的记录,我将新数据点添加到构建相似度矩阵的数据集中,然后选择相似的记录,有没有更好的处理这个问题的方法?

添加更多细节

data=["document1", "document2", "document", ... "documentN"]
count_matrix = count.fit_transform(data)
cosine_sim = cosine_similarity(count_matrix, count_matrix)
1个回答

每次收到新数据点时,不要转换和计算整个余弦相似度矩阵,而是存储现有数据,每当获得新样本时,计算新样本与现有数据的余弦相似度。然后附加并存储它。

也就是说,您需要两个功能:

  • 第一个函数 - 计算 N 个现有文档之间的距离矩阵,然后将其存储到 [N x N 矩阵],还需要存储转换后的数据count_matrix

  • 第二个功能 - 当你得到一个新数据点时,计算一个新数据点与 count_matrix 中所有现有数据点的余弦相似度,并将新的 [1 x N+1] 列表附加到现有余弦相似度矩阵中。另外,更新count_matrix之后,将两者都存储起来。

简单地说,不是创建 [N+1 x N+1] 矩阵,而是存储数据,当您有新数据时,计算 [1 x N+1] 并将其与现有矩阵组合并存储它。