1、CF算法处理的问题描述:
- 给定用户集合 U={u1,u2,...un} 以及物品集合 P={p1,p2,...pm} 和用户对物品的评分矩阵R(nxm维),预测某些用户没有评分物品可能的评分分数
- 基于此,CF算法有两个基本的假设:(a)如果用户过去有相同的兴趣,那么在未来用户也会有相同的兴趣(b)用户的兴趣具有稳定性和连续性
2、UserCF
- 基本思路:寻找与用户兴趣相近的用户,按照他们对物品的评价来估计目标用户对物品的评价
- 面临的主要问题是如何规定相似性,这里根据经验来说,UserCF采用皮尔逊系数法比用其他距离评价指标更好:
皮尔逊系数的值位于-1到1之间,1表示完全正相关,-1表示完全负相关;应用皮尔逊系数的一个重要原因是它去除了平均值,即去除了每个用户自己对评分的理解(现实生活中可能会出现有些用户的评分普遍很高,有些用户的评分普遍偏低的情况,皮尔逊系数能很好地解决这一问题) - 利用皮尔逊系数评判相关系数之后,就可以预测用户对某个物品的评分,假设取N个近邻用户,要预测用户a对物品P的评分则可以用下式:
- 该方法的劣势:(a)上述方法是在理想情况下,现实中用户和商品的数量会达到数以亿计,计算的复杂度问题是需要考虑的,而且需要注意的是评分矩阵可能会很稀疏(b)对于新用户和新物品(冷启动问题)不能有很好的解答(c)对于热门物品,该种方法不能区分用户的喜爱程度,可以通过类似与idf的方法对热门物品做出惩罚(d)可以通过variance weighting增加方差比较大的物品的权重
(e)另一个问题是当两个用户共同评分的物品很少或者很多的情况时,这种方法可能会出现问题。(f) case amplification 方法可以说是将相关系数接近-1或者1的相关系数强制乘以一个系数,可以用fine-tuning - K近邻,K取全部用户时有两个劣势:(1)计算复杂度高(2)影响预测精度
3、ItemCF
- 现实中存在很多的问题,考虑到实时推荐的问题可以采用离线处理
采用余弦相似度,考虑到不同用户对评分有偏差,考虑修正余弦相似度:
预测的话采用:
4、评分scale的影响
采用不同尺度的分数,可能会对用户的评分产生相当大的影响。进而影响到推荐系统的精度。
- 评分可以分为隐式评分和显示评分,显示评分的优点是用户自己意愿的表达,是十分有效的数据,但同时获取难度大,而且数量相对较小。因此,有很多的研究在如何”劝”用户评分。
- 隐式评分是用户隐含的行为模式。比如买了一个物品,又或者查看了某件物品的详细信息,又或者在页面停留较长时间等
- 隐式评分的缺点是推荐系统在推测用户是不是对一件物品感兴趣,这是一个概率事件。而且假设用户在帮别人买东西,那么这个行为就被推荐系统完全曲解,可能会得到较差的推荐结果。
5、数据的稀疏性和冷启动问题
当评分矩阵十分稀疏时,推荐系统的效果可能会很差。有以下几种思路:
- 一个可能的思路是利用用户的年龄、性别、地理位置等信息,构成混合推荐系统
- 利用图模型。若比较稀疏,可以增长user顶点到Item顶点的距离。论文指出在数据稀疏的情况下,该种方法效果要优于UserCF和ItemCF。但当数据矩阵变得稠密时,效果会变差,而且计算的开销会很大。
- 利用voting的思想。计算相似性矩阵时,若评测的两个用户相似的物品太少,计算相似性矩阵会有困难,该种思路是把两个用户中只有一个用户的物品评分用平均值填充。
- 考虑相似用户对相似物品的评分
- 对于新用户的冷启动问题可以先选择一些热门但是很有区分度的物品让用户选择。
6、Memory-based or Model Baesd?
CF有两种思路,一种是Memory-based,一种是Model-based。对于Memory-based,需要存储相似性矩阵内存占用大,对于Model-based则需要离线训练模型内存占用小
- 矩阵分解:SVD和PCA
将数据映射到低维空间,得到用户向量和物品向量,下面便有两种方法:
(1)直接将用户向量和物品向量做正弦相似度的判断,从而间接得到评分
(2)先计算出最相似的K个用户,然后利用类似UserCF的方法求解
PCA解法的一个思路是,现将评分矩阵进行降维,之后用户就被映射到了最为主要的特征向量之上,也就是说用户向量的纬度降低,那么利用K-Means将用户聚类(以上的操作都可以离线进行)。当新来一个用户时先让他对有区分度的物品评分。之后将分数向量映射到主成分之上,看看用户向量属于哪一类,就推荐给他哪一类中的热门物品。该方法优点是预测基本上是实时进行的,而且也能够得到不错的精度。但是缺点是设计有区分度的物品是很关键的,否则不能够得到很好地分数。 - Memory-based和Model-based的区别:试验证明有时Memory效果好,因为他只考虑了与其最接近的K个邻居;但有时Model-based更好,这可能是因为Model-based做了一个降维的处理滤除了部分噪声,而且能够检查出重要的数据中的共线情况。有时精度取决于选择的Factor的个数一般为20~100,可以利用Fine-Tuning来得到
7、关联分析
- 关联分析通常用于交易中的一些规则
- 这些规则类似于ItemCF的思想,类似于如果用户喜欢商品1、2,那么他也喜欢商品10
- 关联规则分析主要的算法是 Apriori 其主要思想是:
a、对于用户1,确定所有可能的物品关系映射A–>B,其中A应是假定用户已经购买过的物品,而B是用户未购买的,作为预测,假设这些映射共有N个
b、对于每一对映射,计算support和cofidence:
c、按照计算的cofidence选出最大的K个推荐给用户
8、概率模型
- 对于评分问题来说,假设可选评分为1~5共5个整数,那么预测用户对item2的评分可以把对item2的评分当做待预测的类标签,由于类的维度是离散的,可以使用朴素Bayesian的方法求解
- 概率模型的优点,相对于Memory-based方法,明显节省内存,因为参数可以离线处理,而且朴素Bayesian的方法不会带来过严重的拟合问题。另外当数据不完整的情况下,也可以使用
- 朴素Bayesian的方法虽然会带来概率性的预测,但是也有缺点比如计算复杂度高,比如样本稀疏性的问题、样本量过少的问题这些问题导致的结果是使各类的概率比较平均,从而预测精度带来误差
- 对于样本稀疏性和计算复杂性的问题,可以考虑将用户(或者商品)聚类,当对用户做出推荐时,先将用户归为几类中的1类,依靠那一类中的数据进行考虑
。该种方法的一个问题是类的个数需要确定
9、现实系统的评分问题
以5分为例,一般来说现实的评分均分一般大于3,这是可能是因为a)、人们可能只对自己喜欢的物品评分b)、人们可能倾向于给物品一个很高的分数,并且认为3分是一个很差的分数
10、新闻推荐
当前面临的主要问题:a)实时推荐的问题,在1s之内产生新的内容b)物品(新闻)更新很快,物品很容易过时。一个解决思路是不断对用户的点击行为做出反应
11、推荐系统
- 推荐系统与传统机器学习方法不同的是,模型精度的验证比较麻烦,而且并不是所有领域都适合CF,比如物品是车,那么如果用户或物品数据过少就不能实现CF方法。