我想了解用于协作过滤的项目和用户-用户矩阵,以及它与基于内容的过滤有何不同。
项目用户:
User1 User2 ... UserN
Movie1 0 1 ... 0
Movie2 1 1 ... 0
.
.
.
MovisM 1 0 ... 0
从电影用户矩阵开始,如何使用Visual Basic for Applications在Microsoft Excel中创建简单的项目和用户矩阵?
Item-Item:
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)
在此线程中,给出了一个简单的示例,用于项目矩阵。 Collaborative Filtering: Non-Personalized item-to-item similarity