Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
catqaq opened this issue Nov 14, 2019 · 5 comments
Open

Comments

@catqaq
Copy link

catqaq commented Nov 14, 2019

@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
Copy link
Owner

@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的,谢谢~

@catqaq
Copy link
Author

catqaq commented May 21, 2020

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

@SuperficialStudents
Copy link

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

@catqaq
Copy link
Author

catqaq commented Dec 22, 2021

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

@SuperficialStudents
Copy link

好的,感谢回复

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants