背景:
我是推荐算法方向的面试,在面试的时候,使用word2vector的方法生成item的向量,来计算行为序列中的item跟待预估的item的相似度,来作为一维特征。
二面面试官问题:
Word2vect生成的向量,为什么可以计算相似度,相似度有什么意义?
答案分析:
term在相同的前后文中,认为两个term是等价的,它们学到的向量也更接近,所以item的向量计算相似度,表示两个向量的相似程度,也即是是否等价。
原理分析:
什么词算相似,一般可以认为,如果两个词的上下文越相似,这两个词也就越相似。比如牛在吃草,马在吃草,牛和马后面的词都一样。又或者是我家在北京,我家在上海,北京和上海的功能差不多,这两个词也就越相似,个人认为这也就是word2vec的出发点。
word2vec得出的词向量其实就是训练后的一个神经网络的隐层的权重矩阵,在经过CBOW或者Skip-Gram模型的训练之后,词义相近的词语就会获得更为接近的权重,因此可以用向量的距离来衡量词的相似度。
向量相似性,一般地,我们以向量的夹角来评价两个向量的相似性
这样我们就可以发现,如果有两向量u,v,
当u加上s*v时(s是正标量),u和v的夹角变小,因此更相似,
当u减去s*v时(s是正标量),u跟v的夹角变大,因此相似性减弱