相似度计算

    衡量向量距离(相似度)有多种方案:欧式距离、曼哈顿距离、切比雪夫距离、余弦相似度等,本节我们使用忽略尺度信息的余弦相似度构建相关性矩阵。余弦相似度又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估他们的相似度,如下图,两条红色的直线表示两个向量,之间的夹角可以用来表示相似度大小,角度为0时,余弦值为1,表示完全相似。

    余弦相似度的公式为:

    下面是计算相似度的实现方法,输入用户特征和电影特征,计算出两者之间的相似度。另外,我们将用户对电影的评分作为相似度衡量的标准,由于相似度的数据范围是[0, 1],还需要把计算的相似度扩大到评分数据范围,评分分为1-5共5个档次,所以需要将相似度扩大5倍。飞桨已实现的scale API,可以对输入数据进行缩放。同时计算余弦相似度可以使用 API完成。

    从结果中我们发现相似度很小,主要有以下原因:

    在下一节我们就开始训练,让这个网络能够输出有效的用户特征向量和电影特征向量。

    本节中,我们介绍了个性化推荐的模型设计部分。包括用户特征网络、电影特征网络和特征相似度计算三部分。

    其中,用户特征网络将用户数据映射为固定长度的特征向量,电影特征网络将电影数据映射为固定长度的特征向量,最终利用余弦相似度计算出用户特征和电影特征的相似度。相似度越大,表示用户对该电影更喜欢。

    以下为模型设计的完整代码: