在今年的欧洲机器学习会议(ECML)上,提出了一种新的相关商品推荐方法,该方法在定向图上使用图神经网络。实验发现,该方法在命中率和平均倒数排名方面优于最先进的基线30%至160%,这两个指标都将模型预测与实际客户共同购买行为进行比较。该模型已开始在生产环境中部署。
使用图神经网络(GNN)进行相关商品推荐的主要困难在于产品之间的关系是不对称的。向购买新手机的客户推荐手机壳完全合理,但向购买手机壳的客户推荐手机则不太合理。图可以通过有向边捕获这种不对称性,但有向性很难被GNN嵌入捕获。
通过为每个图节点生成两个嵌入来解决这个问题:一个表征其作为相关商品推荐源的角色,另一个表征其作为目标的角色。还提出了一种新的损失函数,鼓励相关商品推荐(RPR)模型选择沿着出站图边的产品,并阻止它们推荐沿着入站边的产品。
由于GNN将产品元数据作为输入(以及图结构),它还有助于解决冷启动问题,即如何考虑刚刚引入目录的产品。最后,引入了一种数据增强方法,有助于克服选择偏差问题。
在产品图中,节点代表产品,节点数据包括产品元数据(产品名称、产品类型、产品描述等)。为了向图中添加方向边,使用共同购买数据。这些边可能是单向的(例如,一个产品是另一个产品的配件),也可能是双向的(如果产品被共同购买,但彼此不依赖)。
为了抵消选择偏差风险,图中还包括从共同查看数据中得出的双向边。本质上,共同查看数据有助于识别彼此相似的产品。因此,产品图有两种类型的边:表示共同购买的边和表示相似性的边。
对于产品图中的每个节点,GNN产生一个嵌入,捕获节点附近的信息。使用两跳嵌入,意味着它们考虑了节点的直接邻居和这些节点的邻居的信息。
模型的关键是生成独立源和目标嵌入的过程。对于每个节点,源嵌入考虑了节点的所有相似性关系,但仅考虑其出站共同购买关系。相反,目标嵌入考虑了节点的所有相似性关系,但仅考虑入站共同购买关系。
GNN是多层的,每一层接收下层产生的节点表示并输出新的节点表示。在第一层,表示仅仅是产品元数据,因此源和目标嵌入是相同的。然而,从第二层开始,源和目标嵌入分岐。
此后,每个节点的源嵌入考虑了与其具有出站共同购买关系的节点的目标嵌入,以及与其具有相似性关系的节点的源嵌入。每个节点的目标嵌入考虑了与其具有入站共同购买关系的节点的源嵌入,以及相似节点的目标嵌入。
使用对比学习以自监督方式训练GNN,将给定节点的嵌入与其共享边的节点拉近,同时将给定节点的嵌入与随机选择的未连接节点推远。损失函数的一个项还强制执行源和目标嵌入中的不对称性,促进包含通过出站边连接的目标节点信息,并惩罚包含通过入站边连接的目标节点信息。
一旦GNN训练完成,选择k个最佳相关产品推荐仅仅是在嵌入空间中识别最接近源节点的k个节点的问题。在实验中,将该方法与两个性能最佳的前身进行了比较,使用命中率和平均倒数排名作为前5、10和20推荐的指标,在两个不同的数据集上进行了总共12次实验。发现该方法在所有实验中均优于基准,通常优势显著。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。