这里的插入权重\(\theta_{ij}^u\)不是一个个单独计算的,而是依赖于许多邻项的交叉,这是一个统计数,而不是学习得到的。(By globally solving a suitable optimization problem, this simultaneous interpolation accounts for the many interactions between neighbors leading to improved accuracy.)
详见:Scalable Collaborative Filtering with Jointly Derived Neighborhood Interpolation Weights
1.3 隐语义模型(Latent factor models)如果说前面的基于邻域的模型是统计方法,那么隐语义模型就是机器学习方法了,它有一个学习过程。例子很多,SVD,NMF,pLSA,以至于神经网络都可以算作隐语义模型。
对于基于SVD的隐语义模型具体介绍可见:从SVD到推荐系统。
这里说一点:对于推荐系统来说,评分矩阵是稀疏的。然而传统的SVD分解并没有告诉我们矩阵不完整的情况。对此,可以选择将稀疏的矩阵进行填充,使之变的dense后进行分解学习。但是,这无疑产生了很多无意义的数据和额外计算。而且,数据可能变得畸形。所以,对此,我们可以只选择有数据的评分进行分解,即:
\(min\sum_{(u,i)\in \mathcal{k}}(r_{ui}-\mu - b_i - b_u - \mathbf{q}_i^T\mathbf{p}_u)^2 + \lambda_{3} (\lVert p_u \rVert^2 + \lVert q_i \rVert^2 + b_u^2 + b_i^2)\tag{5}\)
以上为最小化损失函数,\(\mathcal{k}\)为用户u所有评分过的集合。
解决(5)式,一个简单的梯度下降就可以!