algorithm - 如何存储集合,快速找到相似的模式?

标签 algorithm data-structures pattern-matching puzzle

(这不是作业,也不是工作问题。这只是我个人的兴趣/职业,完全是虚构的。但我对好的算法或数据结构感兴趣。)

假设我要经营一个交友网站。我的特色是单曲与电影品味相匹配。 (为什么不呢?)

在那种情况下,我需要一种方法来存储每个用户的电影评级。 (到目前为止没问题。)而且我需要一个数据结构来找到最合适的用户。两种口味模式之间的距离将是两个用户所做的所有评分之间的平均距离。

示例

movies   A B C D E F G H I J K L M ...
user Xm  9 5   1   1   5
user Ym      4 6 1         8
user Zf  9   6 4           7

距离(X,Z) = avg( abs(9-9) + abs(1-4) ) = 1.5

距离(Y,Z) = avg( abs(4-6) + abs(6-4) + abs(8-7) ) = 1.666

所以 X 先生比 Y 先生更适合 Z 女士。

我喜欢...的解决方案

  • ...不需要对数据库进行很多操作
  • ...不需要处理大量数据
  • ... 跑得快
  • ...提供最佳匹配
  • 好吧,也许我也会考虑好的近似值。

请记住,这也适用于数千部可能的电影、仅对大约 20-50 部电影评分的用户以及数千名用户。

(因为这是一个心理难题而不是真正的问题,变通办法并没有真正的帮助。)

您的搜索算法或数据结构是什么?

最佳答案

听起来很像 Netflix Prize挑战,更具体地说是上半年最流行的方法。您尝试执行的操作的可能实现方式多种多样。它们都不是特别有效,并且 L1 指标对于可靠的相关性来说并不是一个特别好的选择。

关于algorithm - 如何存储集合,快速找到相似的模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/462563/

相关文章:

java - "static"模式不应该总是静态的吗?

algorithm - 确保不再看到已查看的项目

java - 随机整数上的堆栈溢出

ruby - Ruby 是否有数据库或数据结构来实现关系矩阵?

c++ - 在 C++ 中计算字符串中的字符出现次数

javascript - 在二进制字符串中查找模式

python - 推荐快照数据的数据结构

algorithm - 如何使蚁群优化产生更一致的结果?

algorithm - 如何检测和保存边缘顶点的循环连通性(孔检测)?

algorithm - 寻找二叉树最大深度时的最坏情况