2.1基于用户的最近邻推荐
主要思想如下:首先,给定一个评分数据集和当前(活跃)用户的ID作为输入,找出与当前用户过去有相似偏好的其他用户,这些用户有时被称为对等用户或最近邻;然后,对当前用户没有见过的每个产品p,利用其近邻对p的评分计算预测值。这种方法的潜在假设是:
(1)如果用户过去有相似的偏好,那么他们未来也会有相似的偏好。
(2)用户偏好不会随时间而变化。
用户集 U={u1,...,un} U = { u 1 , . . . , u n } ,产品集 P={p1,...,pm} P = { p 1 , . . . , p m } 。确定相似用户集,推荐系统常用的方法是Person相关系数,用户a和用户b的相似度sim(a,b)可以用公式来表示:
sim(a,b)=∑p∈P(ra,p−ra_)(rb,p−rb_)∑p∈P(ra,p−ra_)2√∑p∈P(rb,p−rb_)2√ s i m ( a , b ) = ∑ p ∈ P ( r a , p − r a _ ) ( r b , p − r b _ ) ∑ p ∈ P ( r a , p − r a _ ) 2 ∑ p ∈ P ( r b , p − r b _ ) 2
Person相关系数取值从+1(强相关)到-1(弱相关)。
预测值 pred(a,p)=ra_+∑b∈Nsim(a,b)∗(rb,p−rb_)∑b∈Nsim(a,b) p r e d ( a , p ) = r a _ + ∑ b ∈ N s i m ( a , b ) ∗ ( r b , p − r b _ ) ∑ b ∈ N s i m ( a , b )
2.2基于物品的最近邻推荐
基于物品的推荐,适合做线下预处理,因此在评分矩阵非常大的情况下也能做到实时推荐。基于物品算法的主要思想是利用物品间相似度来计算预测值。余弦相似度度量。可用基于物品过滤的数据预处理,如二次采样,加快计算。
2.3关于评分
隐式和显式评分。
处理冷启动和数据稀疏问题,有基于图的方法。其主要思想是利用假定用户品味的“传递性”,并由此增强额外信息矩阵。还有缺省投票,给那些只有一两个用户评过分的物品赋予缺省值,这样可以提高稀疏评分数据上的预测质量。这些人工缺省投票就像一种缓冲机制,能够减少那些个别巧合因素对相似度的影响。冷启动利用额外的外部信息。
协同推荐技术一般分为两类:基于记忆的和基于模型的。传统的基于用户技术是基于记忆的,这是因为原始评分数据保存在内存中,直接生成推荐结果。而基于模型的方法会首先离线处理原始数据,就像基于物品的过滤和某些降维技术。运行时,只需要预计算或“学习过”的模型就能预测。尽管基于记忆的方法能获得全部数据,在理论上推荐精确度更高,但也会遇到数据量大带来的扩展性问题。
利用潜在“语义”因子的思想被成功用于信息检索领域。奇异值分解方法发现文档中的潜在因子,在信息检索方面,这种潜在语义分析技术也被归为潜在语义索引。在很大程度上,推荐质量取决于正确选择约简数据的数量,也就是说,如何选择SVD方法中保留奇异值的数量。所有的预处理方法必须解决数据更新问题:如何整合新的评分而不用重新计算整个“模型”;
2.4基于模型的协同
矩阵因子分解:使用矩阵因子分解的方法,从评分模式中取出一组潜在的因子,并通过因子向量描述用户和物品。基于SVD推荐:将高度相关且一起出现的词语作为单独因子
主成成分分析:对评分进行预处理,得到主要方面,以解释大多数变量
关联规则挖掘:关联规则挖掘的想法可以移植到协同推荐,将目标换成自动发现规则,比如“如果用户喜欢物品1和2,那么他很可能也喜欢物品5”
Apriori
支持度=(交易量包含XUY)/交易量
可信度=(交易量包含XUY)/交易量包含X
基于概率分析的推荐方法:
朴素贝叶斯,计算(预测)用户在对其他物品评分集合X下对新的物品评分为i的概率。
将相似的物品或用户进行聚类,计算用户属于不同聚类的概率,再结合评分矩阵进行预测
使用贝叶斯信任网络进行分类条件概率建模
Slope One预测
利用用户对物品之间的评分差异来计算(预测)新的物品评分
概率潜在语义索引(PLSI)和 考虑离线模型的连续更新问题