基于物品的协同过滤

el/2024/2/25 22:45:03

ItemCF:ItemCollaborationFilter,基于物品的协同过滤


算法核心思想:给用户推荐那些和他们之前喜欢的物品相似的物品。

比如,用户A之前买过《数据挖掘导论》,该算法会根据此行为给你推荐《机器学习》,但是ItemCF算法并不利用物品的内容属性计算物品之间的相似度,它主要通过分析用户的行为记录计算物品之间的相似度。

==>该算法认为,物品A和物品B具有很大的相似度是因为喜欢物品A的用户大都也喜欢物品B。


基于物品的协同过滤算法主要分为两步:

一、计算物品之间的相似度;

二、根据物品的相似度和用户的历史行为给用户生成推荐列表;


下面分别来看这两步如何计算:

一、计算物品之间的相似度:

我们使用下面的公式定义物品的相似度:


其中,|N(i)|是喜欢物品i的用户数,|N(j)|是喜欢物品j的用户数,|N(i)&N(j)|是同时喜欢物品i和物品j的用户数。

从上面的定义看出,在协同过滤中两个物品产生相似度是因为它们共同被很多用户喜欢,两个物品相似度越高,说明这两个物品共同被很多人喜欢。

这里面蕴含着一个假设:就是假设每个用户的兴趣都局限在某几个方面,因此如果两个物品属于一个用户的兴趣列表,那么这两个物品可能就属于有限的几个领域,而如果两个物品属于很多用户的兴趣列表,那么它们就可能属于同一个领域,因而有很大的相似度。


举例,用户A对物品a、b、d有过行为,用户B对物品b、c、e有过行为,等等;


依此构建用户——物品倒排表:物品a被用户A、E有过行为,等等;


建立物品相似度矩阵C:



其中,C[i][j]记录了同时喜欢物品i和物品j的用户数,这样我们就可以得到物品之间的相似度矩阵W。


在得到物品之间的相似度后,进入第二步。

二、根据物品的相似度和用户的历史行为给用户生成推荐列表:

ItemCF通过如下公式计算用户u对一个物品j的兴趣:


其中,Puj表示用户u对物品j的兴趣,N(u)表示用户喜欢的物品集合(i是该用户喜欢的某一个物品),S(i,k)表示和物品i最相似的K个物品集合(j是这个集合中的某一个物品),Wji表示物品j和物品i的相似度,Rui表示用户u对物品i的兴趣(这里简化Rui都等于1)。

该公式的含义是:和用户历史上感兴趣的物品越相似的物品,越有可能在用户的推荐列表中获得比较高的排名。


下面是一个书中的例子,帮助理解ItemCF过程:



至此,基础的ItemCF算法小结完毕。


下面是书中提到的几个优化方法:

(1)、用户活跃度对物品相似度的影响

即认为活跃用户对物品相似度的贡献应该小于不活跃的用户,所以增加一个IUF(Inverse User Frequence)参数来修正物品相似度的计算公式:


用这种相似度计算的ItemCF被记为ItemCF-IUF。

ItemCF-IUF在准确率和召回率两个指标上和ItemCF相近,但它明显提高了推荐结果的覆盖率,降低了推荐结果的流行度,从这个意义上说,ItemCF-IUF确实改进了ItemCF的综合性能。


(2)、物品相似度的归一化

Karypis在研究中发现如果将ItemCF的相似度矩阵按最大值归一化,可以提高推荐的准确度。其研究表明,如果已经得到了物品相似度矩阵w,那么可用如下公式得到归一化之后的相似度矩阵w':


最终结果表明,归一化的好处不仅仅在于增加推荐的准确度,它还可以提高推荐的覆盖率和多样性。

用这种相似度计算的ItemCF被记为ItemCF-Norm。



http://www.ngui.cc/el/4466218.html

相关文章

knn算法思想及代码实现

实验中用到的数据在我的上传中心有 1.什么是KNN K近邻算法(K-Nearest Neighbour,K-NN)是一种基本分类与回归方法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本…

机器学习—— 评价指标

一、分类指标 1、准确率和召回率 准确率(Precision)是你给出的正确结果数占你给出的所有结果数的比例。 召回率(Recall)是你给出的正确结果数占所有正确结果数的比例。 比如:池塘里共有200生物,其中鱼140&…

机器学习测试二总结

1、卷积神经网络计算公示: 卷积层与池化层输出矩阵大小 C[(T-F2*P)/S]1 C为输出矩阵尺寸,T为待处理矩阵的尺寸,F为滤波器矩阵尺寸,P为填充矩阵(pooling),S为步长 2、MLP是完全连通的有向图&…

0-1背包与完全背包的区别

0-1背包 重要部分:每次每个物品最多只能选择一次。 题面:有n个重量和价值分别为 Wi 与 Vi 的物品,现在从这些物品中挑选出总重量不超过 s 的物品,并且要求总价值最大。 输入: n4 S5 (w,v) {(2,3&#xf…

最小生成树之最大生成树

poj 3723 Conscription 【最大生成树|最大权森林】 题目:poj 3723 Conscription 题意:要征兵n个男兵和m个女兵,每个花费10000元,但是如果已经征募的男士兵中有和将要征募的女士兵关系好的,那么可以减少花费&#xff0c…

Crazy Rows(2009 Round2 A)

Problem You are given an N x N matrix with 0 and 1 values. You can swap any two adjacent rows of the matrix. Your goal is to have all the 1 values in the matrix below or on the main diagonal. That is, for each X where 1 ≤ X ≤ N, there must be no 1 valu…

selenium启动chrome时,弹出设置页面:Windows Defender 防病毒要重置您的设置。和data页面

selenium启动chrome时,弹出设置页面:Windows Defender 防病毒要重置您的设置。和data页面 1.在使用selenium打开chrome时同时打开了两个标签页,且页面停留在chrome的设置页面,页面打开链接后data页面也没有消失 winr 运行 regedit &#xff…

Java从头来(一)

java命名规范 1、命名规则 包:英文全小写 类:英文,每个单词的首字母为大写,其它为小写,例如:JavaTest 变量:英文有意义,首字母第一个单词小写,其它单词首字母大写。例如…

深度学习——负采样

引用自:https://zhuanlan.zhihu.com/p/39684349 训练一个神经网络意味着要输入训练样本并且不断调整神经元的权重,从而不断提高对目标的准确预测。每当神经网络经过一个训练样本的训练,它的权重就会进行一次调整。 vocabulary的大小决定了我们…

高情商的对话(边学习边更新)

你是我的太阳 意:“你是我的太阳”。那说明“你”在他(她)的心目中,地位非常重要,非常显赫。想一想吧,万物生长靠太阳,可以说:没有太阳,地球上的万物生灵就不复存在,由此…