基本R cor()函数与recommenderlab包中的similarity()函数的结果不同?

基本R cor()函数与recommenderlab包中的similarity()函数的结果不同?,r,recommender-systems,recommenderlab,R,Recommender Systems,Recommenderlab,有人能解释为什么这两个相关矩阵返回不同的结果吗 library(recommenderlab) data(MovieLense) cor_mat <- as( similarity(MovieLense, method = "pearson", which = "items"), "matrix" ) cor_mat_base <- suppressWarnings( cor(as(MovieLense, "matrix"), use = "pairwise.complete.obs

有人能解释为什么这两个相关矩阵返回不同的结果吗

library(recommenderlab)
data(MovieLense)
cor_mat <- as( similarity(MovieLense, method = "pearson", which = "items"), "matrix" )
cor_mat_base <- suppressWarnings( cor(as(MovieLense, "matrix"), use = "pairwise.complete.obs") )
print( cor_mat[1:5, 1:5] )
print( cor_mat_base[1:5, 1:5] )
库(推荐标签)
数据(MovieSense)
cor_mat差异性()=1-pmax(cor(),0)
R基函数。另外,指定
方法
对于两者使用相同的方法也很重要:

library("recommenderlab")
data(MovieLense)
cor_mat <- as( dissimilarity(MovieLense, method = "pearson", 
                          which = "items"), "matrix" )
cor_mat_base <- suppressWarnings( cor(as(MovieLense, "matrix"), method = "pearson"
                                      , use = "pairwise.complete.obs") )
print( cor_mat[1:5, 1:5] )
print(1- cor_mat_base[1:5, 1:5] )

> print( cor_mat[1:5, 1:5] )
                  Toy Story (1995) GoldenEye (1995) Four Rooms (1995) Get Shorty (1995) Copycat (1995)
Toy Story (1995)         0.0000000        0.7782159         0.8242057         0.8968647      0.6135248
GoldenEye (1995)         0.7782159        0.0000000         0.7694644         0.7554443      0.7824406
Four Rooms (1995)        0.8242057        0.7694644         0.0000000         1.0000000      0.8153877
Get Shorty (1995)        0.8968647        0.7554443         1.0000000         0.0000000      1.0000000
Copycat (1995)           0.6135248        0.7824406         0.8153877         1.0000000      0.0000000
> print(1- cor_mat_base[1:5, 1:5] )
                  Toy Story (1995) GoldenEye (1995) Four Rooms (1995) Get Shorty (1995) Copycat (1995)
Toy Story (1995)         0.0000000        0.7782159         0.8242057         0.8968647      0.6135248
GoldenEye (1995)         0.7782159        0.0000000         0.7694644         0.7554443      0.7824406
Four Rooms (1995)        0.8242057        0.7694644         0.0000000         1.2019687      0.8153877
Get Shorty (1995)        0.8968647        0.7554443         1.2019687         0.0000000      1.2373503
Copycat (1995)           0.6135248        0.7824406         0.8153877         1.2373503      0.0000000
库(“推荐标签”)
数据(MovieSense)
cor_mat print(1-cor_mat_base[1:5,1:5])
《玩具总动员》(1995)戈德尼耶(1995)四个房间(1995)让肖蒂(1995)模仿(1995)
玩具总动员(1995)0.0000000.7782159 0.8242057 0.8968647 0.6135248
GoldenEye(1995)0.7782159 0.0000000.7694644 0.7554443 0.7824406
四间房(1995)0.8242057 0.7694644 0.00000001.2019687 0.8153877
获得Shorty(1995)0.8968647 0.7554443 1.2019687 0.00000001.2373503
抄袭(1995)0.6135248 0.7824406 0.8153877 1.2373503 0.0000000
为了更好地理解它,请检查两个包的详细信息:)

操作/编辑: 需要指出的是,即使
1-相异性
cor
,也有一些值稍有不同,
cor
大于1。这是因为
dissimilarity()
将下限设置为0(即不返回负数),并且执行
cor()
操作可能会返回大于1的值。他们只指明


对于r,您为什么期望它们返回相同的结果?
cor_mat
也使用完整的观察吗?@NelsonGon我不确定我是否理解这个问题。我假设这两个函数都只使用两个值都不是NA的成对值(因为我不知道如何运行相关),无论我提供给“use=”哪个非NA生成参数,我都会得到相同的结果。除非我有误解?对于
使用
部分,请看一下这个:这个:我认为在
cor
中,pearson是默认方法。奇怪的是,为什么要将相似性转换为不同性?“它们真的是一样的吗?”CarlesSansFuentes非常感谢!切换到dissimilarity()函数,然后将其从1中减去即可。我仍然不太明白相似性()当时在做什么。帮助详细信息说“相似性是根据不同的度量使用s=1/(1+d)或s=1-d计算得出的。对于Pearson,我们使用1-正相关。”那么对于Pearson,相似性()和1-不相似性()不应该相同吗?这一点已经详细解释,并涉及相似性和不相似性的定义。检查R中的相异性。在细节中,它说“相似性是根据相异性使用s=1/(1+d)或s=1-d计算的,具体取决于测量值。对于Pearson,我们使用1-正相关。“CarlesSansFuentes我刚才看到了你的编辑,但我认为这是不正确的。你减去1-cor,cor可以是负数,这就是为什么你得到一个大于1的数。你应该减去1-相异度,然后你会得到相似的答案(虽然不完全相同,因为它似乎相异()将下限设置为0,并且不允许负数)