在推荐系统中协同过滤应该算是大名鼎鼎了,基本上做推荐的线上都会用协同过滤,比较简单而且效果较好,而协同过滤又分为基于用户的和基于物品的,基本上原理就是“与当前用户行为相似的用户喜欢一个物品,那么当前用户也会喜欢这个物品”,或者“物品A和物品B同时都被一个用户群喜欢,那么认为他们相似”。而协同过滤算法主要有两个模型,最邻近点对模型和潜在语义模型,第一个比较常用且为大家熟知,因为就是定义权值计算相似度,主要介绍第二个。
潜在语义模型最典型的就是矩阵分解模型,矩阵分解模型尝试找到一系列潜在向量参数。对每个用户u,找到一个k维向量Wu,对每个资源i,找到一个k维向量Hi。并且假设模型中每个用户u对每个资源i的兴趣为对应的潜在向量Wu和Hi的内积。说白了就是矩阵分解,然后通过奇异值提取特征来填充矩阵,推荐的本质就是根据矩阵中已知量计算未知量的过程。
对于一个矩阵m行n列矩阵M,存在一个分解使得
M=UΣV∗
其中U是mxm阶方阵,Σ是m×n阶非负实数对角矩阵;而V*,即V的共轭转置,是n×n阶方阵,称为M的奇异值分解,Σ对角线上的元素Σi,i即为M的奇异值。
一个非负实数σ是M的一个奇异值仅当存在Km的单位向量u和Kn的单位向量v如下:
Mv=σu and M∗u=