0

我想了解协同过滤的项目-项目和用户-用户矩阵,以及它与基于内容的过滤有何不同。

项目用户:

 User1  User2 ... UserN
 Movie1  0        1   ...  0
 Movie2  1        1   ...  0 
  .
  .
  .
 MovisM  1        0   ...  0

从 Movies-User 矩阵开始,如何使用 Visual Basic for Applications 在 Microsoft Excel 中创建简单的 item-item 和 user-user 矩阵?

项目-项目:

     Movie1  Movie2 ... MovieN
 Movie1  0        1   ...  0
 Movie2  1        1   ...  0 
  .
  .
  .
 MovieM  1        0   ...  0

用户-用户:

     User1  User2 ... UserN
 User1  0        1   ...  0
 User2  1        1   ...  0 
  .
  .
  .
 UserM  1        0   ...  0

目前我正在使用 Microsoft Excel 函数 CORREL 计算 User1 和 UserN 之间的相关系数。我有以下 Visual Basic for Applications 代码来计算余弦相似度。在这里很好地解释了http://blog.christianperone.com/2013/09/machine-learning-cosine-similarity-for-vector-space-models-part-iii/

Function cosSim(a As Variant, b As Variant) As Variant
Dim wf As Object
Set wf = WorksheetFunction
On Error Resume Next
cosSim = wf.SumProduct(a, b) / Sqr(wf.SumSq(a)) / Sqr(wf.SumSq(b))
If Err <> 0 Then cosSim = CVErr(xlErrValue)
End Function

用法:

=cosSim({1,2,3}, {4,-5,6})
=cosSim(A1:A3, B1:B3)

在这个线程中,给出了一个项目-项目矩阵的简单示例。 协同过滤:非个性化项目间相似性

4

0 回答 0