在推荐系统中,经常会计算用户—用户相似度、用户—产品相似度,而两类业务中都会涉及到很大量级的数据,导致最终的相似度矩阵计算规模更大。
本文旨在解决高效计算大规模数据的余弦相似度计算问题。
#导入 tensorflow 模块,因部分用到1.x版本的Tensorflow,因此用如下方式导入
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
import numpy as np
import pandas as pd
import math
from datetime import datetime
# 定义余弦相似度函数,便于后续检验结果
def cos_sim(a, b):
a_norm = np.linalg.norm(a)
b_norm = np.linalg.norm(b)
s = a_norm * b_norm
if s==0:
cos = 0
else:
cos = np.dot(a,b)/s
return cos
#设定余弦相似度矩阵按多少行进行拆分,40GB内存,6GB显存的机器大概能计算31000*31000的余弦相似矩阵,
#因此大多数分析场景均需要对数据源矩阵进行拆分,实际数值根据机器所承受的最大数值进行设定
BRANCH_C = 10000
#导入处理好的新老用户特征数据
csv_New = pd.read_csv('./df_1_unknown_group.txt', header=None) #新用户的特征数据集
csv_O

本文介绍了一种使用TensorFlow解决大规模数据余弦相似度计算的方法。通过将数据拆分并利用GPU资源,实现了在10^4x10^4规模下约20秒的计算时间,显著提高了计算效率。代码示例展示了如何处理新老用户特征数据,最终生成新老用户之间的相似度矩阵。

1133

被折叠的 条评论
为什么被折叠?



