-
C++ ItemCF
UserCF和ItemCF是协同过滤中最为古老的两种算法,在top-N的推荐上被广泛应用。这两个算法之所以重要,是因为他们使用了两个不同的推荐系统基本假设。UserCF认为一个人会喜欢和他有相同爱好的人喜欢的东西,而ItemCF认为一个人会喜欢和他以前喜欢的东西相似的东西。这两个假设都有其合理性。根据我的测试,用UserCF和ItemCF做出的推荐列表中,只有50%是一样的,还有50%完全不同。但是这两个算法确有相似的精度。所以说,这两个算法是很互补的。我一直认为这两个算法是推荐系统的根本,因为无论我们是用矩阵,还是用概率模型,我们都非常的依赖于前面说的两种假设。如果用户的行为不符合那两种假设,推荐系统就没必要存在了。因此我一直希望能够找出这两种算法的本质区别。他们有相似的精度,但是coverage相差很大,ItemCF coverage很大而UserCF很小。我还测试了很多其他指标,不过要从这些表象的指标差异找出这两个算法的本质区别还是非常困难。不过上周我基本发现了这两个算法推荐机理的本质区别。我们做如下假设。每个用户兴趣爱好都是广泛的,他们可能喜欢好几个领域的东西。不过每个用户肯定也有一个主要的领域,对这个领域会比其他领域更加关心。给定一个用户,假设他喜欢3个领域A,B,C,同时A是他喜欢的主要领域。这个时候我们来看UserCF和ItemCF倾向于做出什么推荐。结果如下,如果用UserCF, 它会将A,B,C三个领域中比较热门的东西推荐给用户。而如果用ItemCF,它会基本上只推荐A领域的东西给用户。因为UserCF只推荐热门的,所以UserCF在推荐长尾上能力不足。而ItemCF只推荐A领域给用户,这样他有限的推荐列表中就可能包含了一定数量的不热门item,所以ItemCF推荐长尾的能力比较强。不过ItemCF的推荐对某一个用户而言,显然多样性不足。但是对整个系统而言,因为不同的用户的主要兴趣点不同,所以系统的coverage会很大。显然上面的两种推荐都有其合理性,但都不是最好的选择,因此他们的精度也会有损失。最好的选择是,如果我们给这个用户推荐30个item,我们既不是每个领域挑选10个最热门的给他,也不是推荐30个A领域的给他,而是比如推荐15个A领域的给他,剩下的15个从B,C中选择。认识到这一
- 2022-03-26 08:57:57下载
- 积分:1
-
算法分析与设计 0-1背包问题四种不同算法的实现 C语言实现
算法分析与设计 0-1背包问题四种不同算法的实现 C语言实现
贪心算法总是作出在当前看来是最好的选择,即贪心算法并不从整体最优解上加以考虑,它所作出的选择只是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,但对范围相当广的许多问题它能产生整体最优解。在一些情况下,即使贪心算法不能得到整体最优解,但其最终结果却是最优解的很好近似解。
- 2022-02-03 07:48:49下载
- 积分:1
-
可以实现矩阵行列式的任意变换,求任意向量的极大无关组,齐次非齐次线性方程组的求解...
可以实现矩阵行列式的任意变换,求任意向量的极大无关组,齐次非齐次线性方程组的求解-Can achieve an arbitrary transformation matrix determinant, find great vector independent of any group, homogeneous non-homogeneous linear equations to solve, etc.
- 2023-07-07 14:20:03下载
- 积分:1
-
kalman_filter
自适应的kalman滤波程序,通过灵活的调用,实现kalman的自适应滤波。-kalman_filter
- 2022-08-16 22:04:05下载
- 积分:1
-
简单的广播
这是一个小的程序在 NS2 中为简单广播数据包从服务器到客户端的无线介质中
- 2022-07-10 14:36:06下载
- 积分:1
-
Adaboost 算法 实现小例子
结合二分类,实现了最基本的adaboost算法实例,适合初次学习此算法的童鞋
- 2022-03-20 13:53:14下载
- 积分:1
-
这是我学习《数值分析》所编写的一个程序,用于线性方程组的雅可比求解。...
这是我学习《数值分析》所编写的一个程序,用于线性方程组的雅可比求解。-This is my learning "Numerical Analysis" prepared by a procedure for the linear equation for the Jacobian.
- 2022-03-06 21:59:04下载
- 积分:1
-
Gauss
高斯-赛德尔迭代求解线性方程组.很实用的数学计算软件-Gauss- Seidel method for solving linear equations. Very useful mathematical calculation software
- 2022-07-12 04:37:59下载
- 积分:1
-
RM编码DSP代码
应用背景里德-穆勒码(Reed-Muller,RM)是一类纠正多个差错的编码。这类码构造简单,结构特性丰富,可以简单地通过采用软判决或硬判决算法的好几种方式来进行译码。本论文采用的RM编译码算法是:长度为(n, k)的Reed-Muller 码的编码方法是将生成矩阵×knM与输入数据向量×1kx按矩阵相乘,对每个元素对2 取模,即可以得到编码数据向量。而译码算法则是采用大数逻辑译码。关键技术本程序用C语言实现RM的编码和译码
- 2023-04-30 00:50:02下载
- 积分:1
-
模拟正态分布现象的Java小程序
模拟正态分布现象的Java小程序-simulated normal phenomenon of Java programs
- 2023-08-27 15:30:04下载
- 积分:1