点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”
作者:Dimitris Apostolopoulos
编译:ronghuaiyang
导读
今天给大家介绍推荐系统如何进行优化,改善性能。
关于推荐系统,我之前已经向你展示了产品聚类,命名实体识别、信息增强、验证框架以及如何构建它,现在,我将向你展示如何改进我的模型的性能。
简单的解释如下:仔细研究了电子商务购买模式,我发现了多个“地方”,我和我的人可以改善我们的结果。换句话说,我们有多个点需要处理。
只有一种方法可以解决这个问题:通过分解我们所有的数据和商店聚类,然后使用评分公式表示用户的兴趣,这给出的是一个得分,而不是“yes"或”no“的答案。
更重要的是,我决定计算兴趣的衰减,并去除交互中存在的偏差,将这些结果添加到混合中。
商店聚类的方法
你一次可以数到多少家店 ?我跟你说实话,我不知道,因为外面有这么多不同种类的商店!
虽然在应用了产品之后,矩阵显著减少,但这是不够的。
我必须减小我们的交互矩阵的大小,以使它更易于管理。因此,我做了唯一有意义的事情:我在商店中运行了一个**聚类算法。**这有助于我将最相似的人分类(或组,如果你愿意)。
这种聚类方法对该引擎生成的产品推荐有很大的影响,并被证明是区分用户从哪个商店类中购买产品的好方法,这样可以使用不同的操作方法分别优化每个聚类。
每个商店和产品都以向量表示。然后,我和工作人员决定创建一个稀疏矩阵。为了做到这一点,我们决定组合所有的商店向量,并试图找到最相似的,然后组成对。
之后,我们开始建立商店聚类的分布。
我们用了三种“指南针”,三种不同的方法来衡量相似性,而不会迷失在这个过程中:
利用向量相似度计算欧氏距离。
每个商店中产品相似度的百分比被用来计算有多少商店可以互相“学习”。
使用每个商店提供给其他人的产品交互,以便共享客户 — 产品交互信息数据。
更多公式:兴趣评分法
就像船员由船帆的颜色表示一样,每个客户都由他们的产品交互在一个 2D 稀疏矩阵中表示。我们称这个矩阵为 R。
它的行代表客户。另一方面,它的列将产品表示为向量。
浏览、添加到购物车和购买是主要客户兴趣,但是它们被相同的对待是不准确。你会问,这怎么可能?
我们所有人都曾经通过偶然点击来浏览过一个产品。另一方面,我认为没有人会错误地购买产品。但是也许你会浏览一个实际上并不感兴趣的产品。
因此,我们想出了一个救命稻草。一个公式个性化的互动和定义分数。
公式很简单:每个浏览得1 分(最高 3.5 分),每个**“添加到购物车”得4 分**(最高 4.5 分),每个购买得5 分。你看:
使用这些技术,我们设法帮助我们的评分公式准备好接收数据并度量和平衡每个产品交互。这就产生了所谓的“兴趣分数”。
然后我们准备用计算值填充客户 — 产品单元格。
兴趣衰减:现在发生了什么?
产品浏览有许多类型,但有些仅依赖于特定的时间框架。这意味着它们只在特定的时间点被需要,因此不能被描述为一种重复的需要。
有一个很好的例子,在一段时间内有些人会搜索结婚礼物。他们会 google“香槟酒杯”,但是在他们参加婚礼之后,这个搜索就变得无关紧要了。
我们需要我们的模型能够理解这样一个事实,即个人兴趣会随着时间的变化而变化,主要的兴趣也会随着时间的变化而变化。为了让我们的机器“学习”这条新路径,我们必须对客户-产品兴趣评分进行变换。
要教会机器学习兴趣的改变,不是一件容易的事。但是经过几周的研究,我们得出了“指数衰减”的公式。
这个公式很好地监控了客户如何与各种产品交互,并度量了兴趣是如何随时间变化的。
在我们建立的矩阵中,这个变换为每个兴趣分数,应用“指数衰减公式”。
当然,每个商店类的衰减率是(现在仍然是)不同的。顾客对于不同的商店有不同的购买行为。或者你可以想想你在超市买东西的频率,而不是你买鞋的频率。频率完全不同。
有偏差的客户:如何解决这个问题
到目前为止,我相信我所描述的一切听起来都有点容易 — 也许太容易了,以至于我们花了那么长的时间去掌握。
不过有件事你需要记住:每个人都有不同的需求。我们在构建模型时必须考虑需求,以防止模型崩溃。
本质上,我们需要做的是保留所有有价值的信息,同时消除差异。
所以,看看我们的思维过程:
我们有产品“A”,这个产品吸引了 James 和 Nick。James 和 Nick 给这个产品打了 3 分,总分 5 分。
然而,James 给他接触过的产品打分,平均得分为 2.8 分。另一方面,尼克的平均打分是 4 分。
因此,即使两者都给了产品“A”相同的分数,分数本身对它们中的任何一个的含义都是不同的。
James 是老练的用户,拥有更高的标准,因此他给给产品打分打的较低。也就是说,5 分中打 3 分被詹姆斯认为是好产品。
James 的标准更高(在评论时,他有点吝啬和严格)。
Nick 正好相反:他慷慨、善良,而且不介意给予好评。因此,如果 Nick 给它一个 3 分,意味着该产品的得分很差。
我们必须消除相互作用项中的偏差。这实际上是一种矩阵归一化技术,它帮助我们去除个人兴趣,进行无偏的计算,并在矩阵分解过程的最后添加客户提取的兴趣。
所以,这就是我们所得到的:
我们创建了“R”矩阵,使用客户-产品交互和衰减得分。
然后,我们将偏见从“R”矩阵中移除:
分解 R 矩阵
然后,我们计算了“P”与“Q”矩阵的点积,并将分解前去除的偏差加入。
很简单,不是吗?不,绝对不是。
要点
在下一篇文章中,我将介绍我的团队的最终发现:我们实现的最终模型是如何工作的,以及我们如何将它与我们之前制作的模型进行比较。
继续读下去,期待更多的冒险!
—END—
英文原文:https://medium.com/moosend-engineering-data-science/product-recommender-system-how-the-journey-ends-13e3bc3264a9
请长按或扫描二维码关注本公众号
喜欢的话,请给我个好看吧!
转载:https://blog.csdn.net/u011984148/article/details/103675923