RecommendSystemPractice icon indicating copy to clipboard operation
RecommendSystemPractice copied to clipboard

关于 物品冷启动-利用物品的内容信息 中的遗留问题

Open catqaq opened this issue 5 years ago • 5 comments

@Magic-Bubble 您好,你在 物品冷启动-利用物品的内容信息 中提到的问题 “实验结果与书中的不符合(大多数指标明显偏低),不知道是否是实现错误” 我尝试研究了几种可能的原因,发现在计算相似度时忽略余弦相似度的分母部分的话,结果会有大幅提升,接近书中的水平。 注释掉分母部分前后的结果:

for u in item_sim:
        for v in item_sim[u]:
            #可疑pos4
            item_sim[u][v] /= math.sqrt(mo[u] * mo[v]) #余弦相似度

Average Result (M=8, N=10, K=10): {'Precision': 1.79875, 'Recall': 0.86375, 'Coverage': 16.61625, 'Popularity': 4.617733125000001} Average Result (M=8, N=10, K=10): {'Precision': 5.01625, 'Recall': 2.4099999999999997, 'Coverage': 14.30125, 'Popularity': 5.658101375}

似乎是因为余弦相似度的分母部分造成了这样一个问题

catqaq avatar Nov 14 '19 06:11 catqaq

@Magic-Bubble 您好,你在 物品冷启动-利用物品的内容信息 中提到的问题 “实验结果与书中的不符合(大多数指标明显偏低),不知道是否是实现错误” 我尝试研究了几种可能的原因,发现在计算相似度时忽略余弦相似度的分母部分的话,结果会有大幅提升,接近书中的水平。 注释掉分母部分前后的结果:

for u in item_sim:
        for v in item_sim[u]:
            #可疑pos4
            item_sim[u][v] /= math.sqrt(mo[u] * mo[v]) #余弦相似度

Average Result (M=8, N=10, K=10): {'Precision': 1.79875, 'Recall': 0.86375, 'Coverage': 16.61625, 'Popularity': 4.617733125000001} Average Result (M=8, N=10, K=10): {'Precision': 5.01625, 'Recall': 2.4099999999999997, 'Coverage': 14.30125, 'Popularity': 5.658101375}

似乎是因为余弦相似度的分母部分造成了这样一个问题

这种计算方式可以理解为另外一种相似度计算,就是内积,应该也是ok的,谢谢~

Magic-Bubble avatar May 21 '20 07:05 Magic-Bubble

嗯嗯,感谢您的回复,内积确实可以作为一种相似度,但与书中的差异仍不甚明了,先不管了QAQ

catqaq avatar May 21 '20 07:05 catqaq

是不是TF-IDF公式算错了。。。 TF=1,但IDF并不等于 1/math.log(1+len(word_item[word])) 吧。 按定义,应该是等于math.log(len(all_items)/(1+len(word_item[word])))

SuperficialStudents avatar Dec 22 '21 12:12 SuperficialStudents

@SuperficialStudents 有可能,年代久远,有些忘了QAQ 更正: 刚才快速实验了下,基本可以排除tf-idf实现的问题。不过这个问题比较久了,代码有些生疏,刚才随便改了改,不一定对,仅供参考。可能还是因为其他的什么原因。

catqaq avatar Dec 22 '21 14:12 catqaq

好的,感谢回复

SuperficialStudents avatar Dec 22 '21 16:12 SuperficialStudents