为基于查询的建议缝合空间

布莱恩·比肖夫和伊恩·霍恩
图形旁观Divya Prabhakar
- 旧金山,加利福尼亚州

在针脚修复,我们的使命是改变人们找到他们所爱的方式。作为数据科学家,我们考虑了很多,并且已经建立了一系列工具来帮助我们这样做:我们的核心推荐算法,我们的基于集的建议我们的潜在风格空间等许多其他型号,我们经常利用客户反馈来构建商品的表示,以有效推荐最合适的物品。有时,“最佳建议”不仅仅是“最适合你”的问题;它可以包括重要的上下文元素。

例如,采取晚上选择一家餐馆:您有史以来最喜欢的餐厅可能是市中心美味的埃塞俄比亚地区,但你只是和你的朋友聊天Tacos!如果您正在寻找晚宴推荐,可能有助于加入请求'墨西哥食物'。在这种情况下,最近的谈话可能会在今晚的餐厅选择上重视。个性化排名是我们业务的一个极其重要的方面,但这种推荐系统的风格通常被称为查询的建议,或有时是个性化的搜索。

我们的许多客户都喜欢在社交媒体帖子中标记他们对他们兴奋的看似看起来,并让我们许可分享他们的看起来对其他客户的灵感,因为他们正在用针脚购物。在这种情况下,每个特色的“社区灵感”图片我们展示了您作为“查询”,以提出个性化的建议,并与图像相关,以便您可以"#隐身屋". 这是一个基于查询的个性化排名,所以让我们深入研究一下(也许以后会深入研究一些玉米饼)!

了解图像

鼓舞人心的图像推荐
个性化图像评分的步骤。照片@latoyaannette_curves..

“社区灵感”形象的特点是客户的衣服可能是最初从Stitch Fix购买的,也可能不是最初从Stitch Fix购买的。我们通过非结构化图像中的对象来理解它。具体来说,我们希望将这些图像放在我们已经了解的数据方面:我们的目录。

我们使用现成的计算机视觉工具识别图像中的不同衣服,并将它们映射到我们自己的目录中的特定部分,我们称之为“锚定项目”。例如,在动画中,我们检测衬衫和牛仔裤,然后找到一些类似于我们目录中图像中的衬衫和牛仔裤。根据图像中检测到的不同片段的数量,我们通常会发现10-60种锚定样式。

将每个图像映射到检测到的对象集合,并将每个对象映射到已知样式集合后,我们现在可以将图像表示为已知样式集合的集合。专注于多线程的博客读者会记得,我们在高维潜在空间中为我们的项目提供了一个现有的表示,这有助于我们理解项目与客户风格之间的关系(c.f。188滚球注册平台了解潜在风格)。我们的锚样式集成为一组潜伏嵌入,可以进一步聚合和总结。重要的是,这些嵌入品在与客户共享的空间中(呼叫客户的空间\(C \);我们会回到那个)。

推荐图像

在结构形式中使用这款图像池,我们可以开始询问谁将其显示为推荐问题。

从上一节开始,我们将每个图像表示为一组嵌入。根据上面动画中的照片,我们有一套衬衫嵌入件和一套牛仔裤嵌入件。首先,我们将平均每个对象的锚点嵌入,以获得单个衬衫嵌入和单个牛仔裤嵌入。

值得注意的是,这里的平均值有助于我们处理计算机视觉管道中的错误。例如,一条运动裤潜入牛仔裤的结果中,但只要我们基本上是正确的,在一个足够小的邻域内进行平均是有意义的,最终的嵌入平均会产生相当大的误差。

接下来,我们将利用这些嵌入在与客户共享的空间中的事实(谢谢,潜式团队!)。我们使用现有模型来评分每个对象嵌入客户端嵌入的对象,给我们一个用于衬衫 - 客户组合的对象分数,另一个用于牛仔裤 - 客户端组合。将这些组合成一个分数,我们有很好的运气,只需占用最大值。在上面的例子中,衬衫得分为0.8,牛仔裤为0.4,因此整个图像得分为0.8。

综上所述,我们结合锚定项嵌入来获得“对象”嵌入,然后根据客户对图像中他们最喜欢的对象的喜爱程度对图像进行评分。

我们选择显示的图像是我们基于查询的建议的“查询”。

购物图像

现在我们有了我们认为客户会喜欢的图片,让我们在我们的库存中找到相关物品来购物!在大多数情况下,我们要做的不仅仅是推荐主打产品——我们不仅需要尊重客户偏好和库存可用性,我们还希望展示一系列不同的产品,以最大限度地提高客户看到对他们有利的产品的机会。

首先,我们返回锚定项目并搜索类似的可用库存。我们在一个方便的merch表示空间中计算相似性[1]它结合了图像相似性和前面章节中使用的基于潜在客户机的\(C\)嵌入(称此新空间\(H\)为混合)。这种组合平衡了相似项的外观以及相似客户端对它们的响应(注意:这些经常截然不同!)。我们使用混合空间来查找每个锚定的k近邻,考虑大小偏好和以前的反馈。每个候选\(i\)都有一个锚定到候选距离,它测量与图像的相关性(称之为\(d_i\),即距离)。

我们现在有很多候选人!一个图像由许多对象组成。一个对象是多个锚。锚有很多邻居。我们将使用我们最喜欢的作文数学工具[2]要看到一个图像有许多邻居。现在,我们将把集合展平为一组候选集合,以保持索引的整洁。如果存在重复项,我们将保持最小距离。例如,库存中的某些特定牛仔裤与一个锚点(\(DU i=3.14\)匹配良好,与另一个锚点(\(DU i=2.71\)匹配较好,因此我们保持更接近的距离\(DU i=2.71\)并消除重复。

我们还没做完!Stitch Fix痴迷于个性化;到目前为止,图像是个性化的,但我们也需要个性化的项目建议。我们将返回\(C\)(客户机)空间,以获取构建该空间的客户机候选亲缘关系(称之为\(a_i\)以表示亲缘关系)。

让我们总结一下我们目前的情况:

  • 最近的邻居搜索为我们提供了非常多的候选项目\(\ {i \ in 1 ... \ textrm {so sum很多} \),其中包含最小距离测量\(d_i \)到锚定项目。
  • 每个项目都尊重客户反馈和尺寸偏好
  • 这些项目具有亲和力分数\(a_i \),预测客户需要多少。

我们需要选择上述项目的子集,我们认为客户真正爱,但仍将适合鼓舞人心形象的背景。我们做了一个非常简单的多目标排名[3]这同时考虑了距离和亲和力:一个加权组合。我们的客户锚分数只是\(s_i=\alpha\times(1-d_i)+(1-alpha)\times a_i\)。我们通过实验学习\(\alpha\)[4].

最后,我们通过计算几个项目特征和我们的多目标得分(s_i),确保输出的多样性。

鼓舞人心的形象与建议
左侧图像上的花衬衫的个性化建议。请注意,= .8如滑块所示。Divya Prabhakar的内部应用程序和UI。

结论

虽然这可能都感到非常定制,但重要的是要返回并考虑这个解决方案的架构。如果我们能够采取任意查询(任何内容类型)并将其映射到锚点项目的集合中,我们可以使用上述工具来服务基于查询的个性化建议!更令人兴奋地,我们缝合在一起的每个潜在的空间都是在针刺修复上有强大投资的模型,因此我们可以利用他们所有的改进!通过利用个性化和相似性模型,我们可以在语境中提出有意义的建议。

鉴于您想要使用上下文的一般推荐问题,您应该查看:

  • 将该上下文映射到一个表示法,在该表示法中可以度量项目与上下文的相关性
  • 选择高度相关的项目
  • 测量这些项目和客户之间的亲和力。

归因

潜在风格空间由我们的核心代表性学习团队构建。个性化亲和力分数是我们的风格推荐团队构建的模型。形象和商品相似性服务由我们的店铺推荐团队构建。这项工作由客户推荐团队领导。如果您对其中任何问题感兴趣,查看我们的开放角色!

谢谢javad hashemi,Dan Merthaler,以及Sven Schmit的反馈意见。

工具书类

[1]↩要深入研究潜在空间中的相似性搜索,请查看费斯.请注意,我们不使用faiss,但它提供了对象的出色概述。

[2]↩其中一位作者在范畴理论方面有过前世,他多次试图向另一位作者解释这一点。后一位作者只记得这一切都是关于写作的。

[3]↩有关更深入的多目标问题的精彩讨论,请参阅将您的企业带到新的(Pareto)边界由我们的同事!

[4]♥土匪方法在这里可能有用,但我们使用交错设计.

发这个帖子! 在LinkedIn上发帖
188滚球注册平台

和我们一起去!

我们是一个不同的团队,致力于建造伟大的产品,我们喜欢你的帮助。你想用惊人的同伴建造惊人的产品吗?加入我们!

Baidu