协同过滤算法被广泛运用到推荐系统中。协同是指根据以前的用户行为模型来获得推荐内容。算法的目标是将用户-项目的矩阵中空缺的部分尽可能填上。MLlib采用交替最小二乘法(alternatingleastsquares,ALS)来学习用户与项目间的潜在因子。
协同过滤算法被广泛运用到推荐系统中。协同是指根据以前的用户行为模型来获得推荐内容。算法的目标是将用户-项目的矩阵中空缺的部分尽可能填上。Mllib采用交替最小二乘法,ALS (alternating least squares)。在机器学习的上下文中, ALS特指使用交替最小二乘求解的一个协同推荐算法。它通过观察到的所有用户给产品的打分,来推断每个用户的喜好并向用户推荐适合的产品。
举个例子,对于一个users-products-rating的评分数据集, ALS会建立一个user*product的m*n的打分矩阵。其中,m为users的数量,n为products的数量。
但是在这个数据集中,并不是每个用户都对每个产品进行过评分,所以这个矩阵往往是稀疏的,用户i对产品j的评分往往是空的。
ALS的核心就是假设:打分矩阵是近似低秩的。即,一个m*n的打分矩阵a可以用两个小矩阵U(m*k)和V(n*k)的乘积达到近似。
U为m*d的用户特征向量矩阵。V为n*d的产品特征向量矩阵d为user/product的特征值的数量.
关于d这个值的理解:对于每个产品,可以从d个角度进行评价,以电影为例,可以从主演,导演,特效,剧情4个角度来评价一部电影,那么d就等于4矩阵V由n个product*d个特征值组成。对于矩阵U,假设对于任意的用户a,该用户对一部电影的综合评分和电影的特征值存在一定的线性关系,即电影的综合评分=( a1*d1+ a2*d2+ a3*d3 + a4 * d4)其中a1-4为用户a的特征值,d1-4为电影的特征值。
然后,als再通过U,V重构A所产生的误差。这是由Frobenius范数,‖A-UV ‖ ,来量化重构误差,就是每个元素的重构误差的平方和。
这里存在一个问题,我们只观察到部分打分,A 中的大量未知元正是我们想推断的,所以这个重构误差是包含未知数的。解决方案很简单很暴力:就只看对已知打分的重构误差吧。所以 ALS 的优化目标是 .而这个优化问题则是通过交替最小二乘实现,所谓的交替,就是指随即产生U0,再用U0)解得V 0,再固定V0求解U1,如此交替进行。
协同过滤算法与推荐系统
最新推荐文章于 2022-05-16 11:00:52 发布