我想了解协同过滤的项目-项目和用户-用户矩阵,以及它与基于内容的过滤有何不同。
项目用户:
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)
在这个线程中,给出了一个项目-项目矩阵的简单示例。 协同过滤:非个性化项目间相似性