一 算法简介
ALS算法是基于矩阵分解的协同过滤算法中的一种,协同过滤算法分为三类:基于相似性的协同过滤包括基于用户和基于产品的协同过滤;基于矩阵分解的协同过滤;基于图的协同过滤。其中ALS算法是基于矩阵分解的协同过滤算法中的一种典型算法。
协同过滤的算法核心是分析用户兴趣,在用户中到与指定用户的相似(兴趣)用户,综合这些相似用户对某一信息的评价,形成系统对该指定用户对此信息的喜好程度预测。
ALS算法的核心就是将一个users-products-rating的评分数据集,建立一个user*product(用户*产品)的m*n的矩阵其中,m为users的数量,n为products的数量但是在这个数据集中,并不是每个用户都对每个产品进行过评分,所以这个矩阵往往是稀疏的,用户i对某个产品j的评分往往是空的。因此,ALS算法的核心就是通过矩阵分解的过程将每一个用户i对产品j的评分进行填满,ALS填充的评分项也称为用户i对产品j的预测得分
二 算法模型
假设m*n的评分矩阵R,可以被近似分解成U*(V)TU为m*d的用户特征向量矩阵V为n*d的产
品特征向量矩阵d为user/product的特征值的数量关于d这个值的理解,大概可以是这样的对于每个产品,可以从d个角度进行评价,以电影为例,可以从主演,导演,特效,剧情4个角度来评价一部电影,那么d就等于4可以认为,每部电影在这4个角度上都有一个固定的基准评分值例如《末日崩塌》这部电影是一个产品,它的特征向量是由d个特征值组成的d=4,有4个特征值,分别是主演,导演,特效,剧情每个特征值的基准评分值分别为(满分为1.0):主演:0.9(大光头还是那么霸气)导演:0.7特效:0.8剧情:0.6矩阵V由n个product*d个特征值组成对于矩阵U,假设对于任意的用户A,该用户对一部电影的综合评分和电影的特征值存在一定的线性关系,即电影的综合评分=(a1*d1+a2*d2+a3*d3+a4*d4)其中a1-4为用户A的特征值,d1-4为之前所说的电影的特征值
那么对于之前ALS算法的这个假设m*n的评分矩阵R,可以被近似分解成U*(V)T就是成立的,某个用户对某个产品的评分可以通过矩阵U某行和矩阵V(转置)的某列相乘得到
正则化是为了防止
那么现在的问题是,如何确定用户和产品的特征值?(之前仅仅是举例子,实际中这两个都是未知的变量)
采用的是交替的最小二乘法
在上面的公式中,a表示评分数据集中用户i对产品j的真实评分,另外一部分表示用户i的特征向量(转置)*产品j的特征向量(这里可以得到预测的i对j的评分)在上面的公式中,a表示评分数据集中用户i对产品j的真实评分,另外一部分表示用户i的特征向量(转置)*产品j的特征向量(这里可以得到预测的i对j的评分)
用真实评分减去预测评分然后求平方,对下一个用户,下一个产品进行相同的计算,将所有结果累加起来(其中,数据集构成的矩阵是存在大量的空打分,并没有实际的评分,解决的方法是就只看对已知打分的项)
但是这里之前问题还是存在,就是用户和产品的特征向量都是未知的,这个式子存在两个未知变量
解决的办法是交替的最小二乘法
首先对于上面的公式,以下面的形式显示:
<img src="pic1.zhimg/b0ed19d8265d45c963ecef7bed74a6a0_b.jpg" data-rawwidth="341" data-rawheight="27" class="content_image" width="341">为了防止过度拟合,加上正则化参数为了防止过度拟合,加上正则化参数
<img src="pic1.zhimg/0272993b5d91e9b2da9579b0f17a9144_b.jpg" data-rawwidth="351" data-rawheight="29" class="content_image" width="351"><img src="pic1.zhimg/7db6353488eac92890c7802640012cb8_b.jpg" data-rawwidth="365" data-rawheight="252" class="content_image" width="365">首先用一个小于1的随机数初始化V首先用一个小于1的随机数初始化V
根据公式(4)求U
此时就可以得到初始的UV矩阵了,计算上面说过的差平方和
根据计算得到的U和公式(5),重新计算并覆盖V,计算差平方和
反复进行以上两步的计算,直到差平方和小于一个预设的数,或者迭代次数满足要求则停止
取得最新的UV矩阵
则原本的稀疏矩阵R就可以用R=U(V)T来表示了
以上公式内容截图来自:
基于矩阵分解的协同过滤算法
总结一下:
ALS算法的核心就是将稀疏评分矩阵分解为用户特征向量矩阵和产品特征向量矩阵的乘积
交替使用最小二乘法逐步计算用户/产品特征向量,使得差平方和最小
通过用户/产品特征向量的矩阵来预测某个用户对某个产品的评分

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。