我有用户和资源。每个资源由一组功能描述,每个用户与一组不同的资源相关。在我的特定情况下,资源是网页,以及有关访问位置,访问时间,访问次数等的功能信息,每次都与特定用户相关联。
我想在我的用户之间获得有关这些功能的相似性度量,但我找不到将资源功能聚合在一起的方法。我已经完成了文本功能,因为可以将文档一起添加然后提取功能(比如TF-IDF),但我不知道如何继续这种配置。
为了尽可能清楚,这就是我所拥有的:
>>> len(user_features)
13 # that's my number of users
>>> user_features[0].shape
(2374, 17) # 2374 documents for this user, and 17 features
例如,我可以使用欧几里德距离获得文件的相似性矩阵:
>>> euclidean_distance(user_features[0], user_features[0])
但我不知道如何将用户相互比较。我应该以某种方式将这些特征聚合在一起以最终得到N_Users X N_Features
矩阵,但我不知道如何。
有关如何进行的任何提示?
有关我正在使用的功能的更多信息:
我在这里的功能并没有完全修复。到目前为止我得到的是13种不同的功能,已经从“视图”中汇总而来。我所拥有的是每个视图的标准偏差,平均值等,以便能够“平坦”,以便能够比较它们。我的一个功能是:自上次查看以来位置是否已更改?一个小时前呢?两小时前?
答案 0 :(得分:1)
如果每个用户被表示为一组文档交互向量,则可以将一对用户的相似度定义为表示用户的文档交互向量集对的相似度。
你说你可以得到文件的相似性矩阵。然后假设用户U1访问了文档D1,D2,D3,并且用户U2访问了文档D1,D3,D4。对于用户1,您将具有两组矢量S1 = {U1(D1),U1(D2),U1(D3)},并且S2 = {U2(D1),U2(D3),U2(D4)}。请注意,因为每个用户与文档的交互不同,所以它们表示为这样。如果我理解正确,这些集合的元素应该对应于每个用户矩阵中的相应行。
这两组之间的相似性可以用许多不同的方式计算。一个选项是平均成对相似度:迭代每个集合中元素的所有配对,计算对的文档相似度,并对所有对进行平均。
答案 1 :(得分:0)
您可以使用每个用户的资源集中的功能的平均值似乎是一种自然的方式来总结用户。具有适当numpy.mean
参数的axis
应该得到均值,然后像在文档向量之间那样计算得到的“用户向量”(长度为n_features)之间的欧几里德距离。
答案 2 :(得分:0)
我会考虑创建多个维度的文档,以便那些在一天中的某些时间访问过的文档,按早晚划分,然后绘制有关猫头鹰和早期鸟类的用户。
使用任意数量的维度,您可以创建用户矩阵,并使用用户之间的距离来提供帮助。