RecommendSystemPractice
RecommendSystemPractice copied to clipboard
关于 物品冷启动-利用物品的内容信息 中的遗留问题
@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}
似乎是因为余弦相似度的分母部分造成了这样一个问题
@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的,谢谢~
嗯嗯,感谢您的回复,内积确实可以作为一种相似度,但与书中的差异仍不甚明了,先不管了QAQ
是不是TF-IDF公式算错了。。。 TF=1,但IDF并不等于 1/math.log(1+len(word_item[word])) 吧。 按定义,应该是等于math.log(len(all_items)/(1+len(word_item[word])))
@SuperficialStudents 有可能,年代久远,有些忘了QAQ 更正: 刚才快速实验了下,基本可以排除tf-idf实现的问题。不过这个问题比较久了,代码有些生疏,刚才随便改了改,不一定对,仅供参考。可能还是因为其他的什么原因。
好的,感谢回复