1. 协同过滤
“协同过滤”就是协同大家的反馈、评价和意见一起对海量的信息进行过滤,从中筛选出目标用户可能感兴趣的信息的推荐过程。下面介绍基于用户的UserCF:
生成共现矩阵。假设有m个用户,n个物品,每个用户会对n个物品中的一个或者几个进行评分,未评分的物品分值就用问号表示,则所有m个用户对物品的评分可形成一个的评分矩阵,也就是协同过滤中的共现矩阵。
生成共现矩阵后,推荐问题就转换成了预测矩阵中问号的值的过程。
通过每个用户对所有物品的评分向量,利用余弦相似度、皮尔逊相关系数(可以引入物品平均分的方式减少物品评分)等,找到与需要推荐用户X最相似的Top n用户
利用用户相似度和相似用户评分的加权平均偶的目标用户的评价预测。下式中,是物品u和用户s的相似度,是用户s对物品p的评分。
userCF主要有两大缺点,(1) 在互联网场景下,用户数量远大于商品数量,而且还会持续增加,这导致用户相似度矩阵的存储开销很大;(2) 用户的历史数据很稀疏,找到相似用户的准确度很低。
由于上面两大缺点,Amazon最终没有采用该方法,而是采用了ItemCF。ItemCF的计算过程和UserCF类似,但是在应用场景上有所不同。UserCT具备强社交属性,并且更适合发现热点以及跟踪热点的趋势。ItemCF更适用于兴趣变化较为稳定的应用。
协同过滤有两大缺点,(1) 热门的物品具有很强的头部效应,容易跟大量物品产生相似性,而尾部物品则完全相反;(2) 协同过滤仅仅利用用户和物品的交互信息,造成了信息遗漏。
2. 矩阵分解
协同过滤是基于用户的观看历史,找到与目标用户看过同样视频的相似用户,然后找到这些相似用户喜欢看的其他视频,推荐给目标用户。矩阵分解算法则期望为每一位用户和视频生成一个隐向量,将用户和视频定位到隐向量的表示空间上,距离相近的用户和视频表明兴趣特点接近,在推荐过程中,就把距离相近的视频推荐给目标用户。
在矩阵分解的算法框架下,用户和物品的隐向量是通过分解共现矩阵得到的。对矩阵进行矩阵分解的方法主要有三种,特征值分解、奇异值分解、梯度下降。其中,特征值分解只能作用于方阵,故排除。奇异值分解要求原始的共现矩阵是稠密的,所以必须对确实的元素值进行填充,并且计算复杂度为,所以也不合适。因此,梯度下降成了进行矩阵分解的主要方法,目标函数是让原始评分与用户向量和物品向量之积的差尽量小,同时为了减少过拟合现象,加入正则化项。下式中,K是所有用户评分样本的集合。
- 对求偏导,得
- 对求偏导,得
- 沿梯度反方向更新参数
矩阵分解相比协同过滤有三个优点:(1) 泛化能力强,一定程度上解决了数据稀疏问题;(2) 空间复杂度低;(3)更好的扩展性和灵活性
拜托点一个在看吧>_<