【问题标题】:Storing a matrix table in Entity Framework在实体框架中存储矩阵表
【发布时间】:2016-11-03 16:42:04
【问题描述】:

我目前正在开发一个推荐引擎,该引擎使用基于项目的协同过滤器向用户推荐餐厅。我想使用调整后的余弦相似度来计算餐厅之间的相似度,一切正常。

现在我想将这些相似性存储在数据库中,这样我就可以从那里检索主题之间的相似性,这样我就可以预测用户尚未查看的主题的评分。
矩阵可能如下所示:(其中 R1 是餐厅 1,R2 是餐厅 2,依此类推)

   |  R1  |  R2  |  R3  |  R4  |
R1 |  1   | 0.75 | 0.64 | 0.23 |
R2 | 0.75 |  1   | 0.45 | 0.98 |
R3 | 0.64 | 0.45 |  1   | 0.36 |
R4 | 0.23 | 0.98 | 0.36 |  1   |

这是一个非常小的矩阵版本,因为我的数据库中餐馆的数量可能超过 20k 行。

使用实体框架将其存储在我的数据库中的最简单/最好的方法是什么?提前致谢!

【问题讨论】:

  • 表中只有一个矩阵还是多个矩阵
  • 就是这个矩阵,等应用发布的时候会很大

标签: entity-framework matrix


【解决方案1】:

用以下列创建表格

  1. MatrixValueId

  2. MatrixId

  3. FirstIndex 字符串,包含 'R1','R2' 等值 ...

  4. SecondIndex 字符串,包含 'R1','R2' 等值 ...

  5. 浮点数,包含1.00、0.23等值

您示例中的矩阵存储在具有相同 MatrixId 的 16 条记录中

【讨论】:

  • 如果我有大约 20,000 家餐厅,那是不是意味着我的行数会激增?
  • 20k 餐厅用这种方式存储和计算值是可以的
  • 谢谢,成功了!为什么你有 matrixvalueid 呢?
  • MatrixValueId 为必填列,为记录id,但若表中有多个矩阵,则MatrixId 需要。如果 table 中只有一个矩阵,则抛出 MatrixId 列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-17
相关资源
最近更新 更多