-
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
-
测试高 led 和低led
这个软件描述C语言用 16f877 触发一个LED,与所有配置的计时器和寄存器。
- 2022-11-14 10:40:03下载
- 积分:1
-
HMM源码 java版,可以直接放到weka里用
HMM源码 java版,可以直接放到weka里用,他是一个HMM算法的代码包,当需要在weka里使用该算法是,就可以通过配置
将其添加到weka里使用
- 2022-08-18 17:53:53下载
- 积分:1
-
卡尔曼滤波
本源码是卡尔曼滤波的VC实现,可以读入含有目标信息的txt文件,输出目标的实际航迹与预测航迹,同时可以输出航迹估计均方误差。希望可以帮助到学习卡尔曼滤波算法的朋友。
- 2022-03-30 11:40:59下载
- 积分:1
-
快速傅里叶变换,把该文件包含后即可使用其函数。
快速傅里叶变换,把该文件包含后即可使用其函数。- The fast Fournier transformation, after contains this document
then uses its function.
- 2022-09-05 03:40:03下载
- 积分:1
-
java源代码
- 2022-05-14 10:04:41下载
- 积分:1
-
vc++源代码,任意分布的随机数的产生,注意它的随机性
vc++源代码,任意分布的随机数的产生,注意它的随机性-vc source code, arbitrary distribution of the random numbers generated, the attention of its randomness
- 2023-07-20 21:55:03下载
- 积分:1
-
embedded compilation write bubble sort, XP VC6.0 compile.
内嵌汇编写的起泡排序,XP下VC6.0编译通过。-embedded compilation write bubble sort, XP VC6.0 compile.
- 2022-01-25 22:29:18下载
- 积分:1
-
词法分析器
实现编译系统的词法分析功能,是后续语法分析,语义分析的基础和重要环节。
- 2022-02-24 11:27:50下载
- 积分:1
-
数据挖掘中的聚类算法,可以作为学习数学算法…
数据挖掘中聚类的算法,可以作为学习数学算法的时候用,也可以作为自己开发软件时使用-Clustering in data mining algorithms, mathematical algorithms can be used as learning time, and also can develop software as their own use
- 2022-06-29 19:05:44下载
- 积分:1