U-U矩阵 算法原理
在基于用户相似度的协同过滤中,用户相似度的计算是基本前提。Pearson相关系数主要用于度量两个变量 i 和 j 之间的相关性,取值范围是+1(强正相关)到-1(强负相关),计算公式为:
式中,为用户 i 和 j 共同评价过的物品的集合,c 是这个集合中的物品元素,是用户 j 对物品 c 的评价值,为用户 i 对物品 c 的评价值,和分别表示用户 i 和 j 对物品的平均评价值。 算法流程
算法输入:用户行为日志。
算法输出:基于协同的用户相似度矩阵。
A. 从用户行为日志中获取用户与物品之间的关系数据,即用户对物品的评分数据。
B. 对于n个用户,依次计算用户1与其他n-1个用户的相似度;再计算用户2与其他n-2个用户的相似度。对于其中任意两个用户 i 和 j :
a) 查找两个用户共同评价过的物品集;
b) 分别计算用户 i 和对物品 j 的平均评价和;
c) 计算用户间相似度,得到用户 i 和 j 的相似度。
C. 将计算得到的相似度结果存储于数据库中。
V-V矩阵 算法原理
在基于物品相似度的协同过滤中,物品相似度的计算是基本前提。将物品的评价数值抽象为n维用户空间中的列向量 和,使用修正的余弦相似度,计算公式为:
式中,为对物品和共同评价过的用户的集合, 是用户 u 对物品的评价值,和分别表示用户对物品和的平均评价值。 算法流程
算法输入:用户行为日志。
算法输出:基于协同的物品相似度矩阵。
A. 从用户行为日志中获取用户与物品之间的关系数据,即用户对物品的评分数据。
B.对于n个物品,依次计算物品1与其他n-1个物品的相似度;再计算物品2与其他n-2个物品的相似度。对于其中任意两个物品 i 和 j:
a)查找对物品 i 和 j 共同评价过的用户集;
b)分别计算用户对物品 i 和 j 的平均评价和;
c) 计算物品间相似度,得到物品 i 和 j 的相似度。
C. 将计算得到的相似度结果存储于数据库中。
什么是基于用户的协同过滤算法?举个简单的例子,我们知道樱桃小丸子喜欢葡萄、草莓、西瓜和橘子,而我们通过某种方法了解到小丸子和花伦有相似的喜好,所以我们会把小丸子喜欢的而花伦还未选择的水果(葡萄和橘子)推荐给花伦。
通过上面的例子我们可以做出如下总结:假设用户为,物品,对的评分为,基于用户的协同过滤算法主要包含以下两个步骤:
A. 搜集用户和物品的历史信息,计算用户u和其他用户的相似度,找到和目标用户Ui兴趣相似的用户集合N(u)
B.找到这个集合中用户喜欢的,且目标用户还没有听说过的物品推荐给目标用户。
基于物品的协同过滤算法给用户推荐那些和他们之前喜欢的物品相似的物品。比如,我们知道樱桃小丸子和小玉都喜欢葡萄和西瓜,那么我们就认为葡萄和西瓜有较高的相似度,在花伦选择了西瓜的情况下,我们会把葡萄推荐给花伦。
ItemCF算法并不利用物品的内容属性计算物品之间的相似度,它主要通过分析用户的行为记录计算物品之间的相似度。该算法认为,物品A和物品B具有很大的相似度是因为喜欢物品A的用户大都也喜欢物品B。
假设用户为,物品,对的评分为,基于物品的协同过滤算法主要分为两步:
A.对于目标用户及其待评分的物品,根据用户对物品的历史偏好数据,计算物品与其他已评分物品之间的相似度 Sim(j,i),找到与物品相似度的物品合集N(u);
B. 根据所有物品 N(u) 的评分情况,选出N(u)中目标用户可能喜欢的且没有观看过的推荐给目标用户并预测评分。
式中,为用户 u 对物品 i 的评分,是用户 u 对他买过的物品的平均打分。 算法流程
算法输入:用户行为日志,基于协同的物品相似性矩阵
算法输出:初始推荐结果
A. 访问用户行为日志,获取该用户最近浏览过物品的用户集合U。
B.针对集合U中每个用户u:
a)访问用户相似矩阵,获取与用户相似的用户合集N(u)。
b)访问物品相似矩阵,获取与M(u)相似的物品合集N(u)。
c) 针对物品合集M(ui)中的每个物品,计算用户偏好值。
d)根据用户偏好值,对N(u)的物品进行排序。
e)取Top-N个物品,为每个物品赋予解释。
f) 保存Top-N个物品到初始推荐列表中。
基本算法
基于兴趣分类的方法大概需要解决3个问题:
A.如何给物品进行分类?
B.如何确定用户对哪些类的物品感兴趣,以及感兴趣的程度?
C. 对于一个给定的类,选择哪些属于这个类的物品推荐给用户,以及如何确定这些物品在一个类中的权重?
隐含语义分析技术采取基于用户行为统计的自动聚类,可以自动解决物品分类问题。LFM通过如下公式计算用户 u 对物品 i 的兴趣:
这个公式中,和是模型的参数,其中, 度量了用户 u 的兴趣和第 k 个隐类的关系,而度量了第 k 个隐类和物品 i 之间的关系。要计算这两个参数,需要一个训练集,对于每个用户 u ,训练集里都包含了用户 u 喜欢的物品和不感兴趣的物品,通过学习这个数据集,就可以获得上面的模型参数。
式中,表示事件B已经发生的前提下事件A发生的概率;P(A)和P(B)均为无条件概率。 算法流程
算法输入:已知目标用户对物品之外的物品的评分情况,以及其他用户对各物品的评分情况。
算法输出:确定目标用户对物品的评分。
A. 设为一个待分类项,为的特征属性;
B. 设类别集合
C.计算:
a) 找到一个已知分类的待分类项集合作为训练样本;
b)统计得到在各个类别下各个特征属性的条件概率估计,即
c) 如果各个特征属性是条件独立的,则根据贝叶斯定理有如下关系:
因为分母对所有类别为常数,因此只需将分子最大化即可,又由于各特征属性是条件独立的,所以有: 适用性
朴素贝叶斯分类实现起来比较简单,准确率高,但是分类的时候需要学习全部样本的信息。因此,朴素贝叶斯分类适用于数据量不大,类别较少的分类问题。
式中,表示用户,表示物品,表示用户在第 k 个方面的特征,表示物品在第 k 个方面的特征,表示和在第 k 个特征方面上的相似度,表示权重。 算法流程
算法输入:物品信息,用户行为日志。
算法输出:初始推荐结果。
A.物品表示:每个物品使用特征向量表示,其中表示物品的特征属性;
B. 从用户行为日志中,获取该用户所浏览、收藏、评价、分享的物品集合M,根据物品集合M中物品的特征数据,可以学到用户的内容偏好;
C.保存Top-K个物品到初始推荐结果中。
算法原理
KNN在CB推荐算法中的应用于在CF推荐算法中的应用极为相似,它们都是要首先找到与目标物品相似的且已经被用户 u 评价过的 k 个物品,然后根据用户 u 对这 k 个物品的评价来预测其目标物品的评价。它们的差别在于,CF推荐算法中的KNN是根据用户对物品的评分来计算物品间相似度的,而CB推荐算法中KNN是根据物品画像来计算相似度的,所以对于后者来说,如何通过物品画像来计算物品间的相似度是算法中的关键步骤。相似度的计算可以使用余弦相似度或Pearson相关系数的计算方法。
算法流程
算法输入:用户已评分物品,目标物品 i 。
算法输出:用户对目标物品 i 的评分。
A.采用余弦相似度公式计算相似度。
B.选择最近邻。在用户 u 评过分的所有物品中,找出 k 个与目标物品 i 相似度最高的物品,并用 N(u,i) 来表示这出 k 个物品的集合。
C. 计算预测值。在第二步的基础上,可使用以下公式计算用户对目标物品的评分: