我想使用个人/组织数据(例如部门、公司、站点等)找出哪些用户彼此相似。
我有 bool 格式的数据,如下所示:
Dep1 Dep2 Comp1 Comp2 Site1 Site2
U1 0 1 0 1 0 1
U2 1 0 0 1 1 0
U3 1 0 1 0 1 0
U4 0 1 0 1 0 1
U5 0 1 0 1 1 0
U6 1 0 1 0 0 1
我想选择一个用户并识别与他们相似的其他用户,以便我可以向他们推荐那些相似用户正在使用的软件/硬件。
我研究了余弦和杰卡德相似度,但在 bool 数据上计算它们时我没有看到太多帮助。
我正在使用 Python,对该语言并不陌生,但我对数据分析和机器学习相当陌生。如有任何建议,我们将不胜感激!
最佳答案
嗯,正如您已经提到的,计算 60k 个不同用户之间的相似度将是相当密集的。这将产生一个 60k*60k 行的相似矩阵,我怀疑它是否适合您的系统内存。如果可能的话,我会尝试按部门或站点等对您的用户进行分组(如果有意义的话)。然后仅将用户与其组内的用户进行比较,这样您就不必将所有 60k 与其他 60k 进行比较。
为了保持计算速度相当快,我将使用 numpy 进行矩阵乘法来执行相似度计算。您可以使用以下矩阵乘法简单地计算相等 1 的数量:
import numpy as np
df = np.random.randint(low = 2,size=(5000,3000))
similarities = df.dot(df.T)
这在我的笔记本电脑上在 60 秒内完成。结果将是一个 5000 * 5000 矩阵,其中包含 df 的所有 5000 行之间的相似性。
关于python - 使用用户的个人数据计算相似度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59681114/