点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”


作者:Dimitris Apostolopoulos

编译:ronghuaiyang

导读

今天给大家介绍推荐系统如何进行优化,改善性能。

关于推荐系统,我之前已经向你展示了产品聚类,命名实体识别、信息增强、验证框架以及如何构建它,现在,我将向你展示如何改进我的模型的性能

简单的解释如下:仔细研究了电子商务购买模式,我发现了多个“地方”,我和我的人可以改善我们的结果。换句话说,我们有多个点需要处理。

只有一种方法可以解决这个问题:通过分解我们所有的数据商店聚类,然后使用评分公式表示用户的兴趣,这给出的是一个得分,而不是“yes"或”no“的答案。

更重要的是,我决定计算兴趣的衰减,并去除交互中存在的偏差,将这些结果添加到混合中。

商店聚类的方法

你一次可以数到多少家店 ?我跟你说实话,我不知道,因为外面有这么多不同种类的商店!

虽然在应用了产品之后,矩阵显著减少,但这是不够的。

我必须减小我们的交互矩阵的大小,以使它更易于管理。因此,我做了唯一有意义的事情:我在商店中运行了一个**聚类算法。**这有助于我将最相似的人分类(或组,如果你愿意)。

这种聚类方法对该引擎生成的产品推荐有很大的影响,并被证明是区分用户从哪个商店类中购买产品的好方法,这样可以使用不同的操作方法分别优化每个聚类。

每个商店产品都以向量表示。然后,我和工作人员决定创建一个稀疏矩阵。为了做到这一点,我们决定组合所有的商店向量,并试图找到最相似的,然后组成对。

之后,我们开始建立商店聚类的分布。

我们用了三种“指南针”,三种不同的方法来衡量相似性,而不会迷失在这个过程中:

  1. 利用向量相似度计算欧氏距离。

  2. 每个商店中产品相似度的百分比被用来计算有多少商店可以互相“学习”。

  3. 使用每个商店提供给其他人的产品交互,以便共享客户 — 产品交互信息数据。

更多公式:兴趣评分法

就像船员由船帆的颜色表示一样,每个客户都由他们的产品交互在一个 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

请长按或扫描二维码关注本公众号

喜欢的话,请给我个好看吧

推荐系统:如何进行优化!相关推荐

  1. 推荐系统----多目标优化(持续补充, 到概念理解阶段+常见模型...)

    为什么要做多目标优化 做多目标优化一般由业务驱动,比如电商场景,肯定是希望推出去的东西用户既点击又购买并且下次还来,如果能够点赞收藏分享那就更好了,这里面涉及的优化目标就多了,比如点击率.转化率.收藏 ...

  2. 推荐系统中如何做多目标优化

    在做推荐系统的过程中,我们希望同时优化多个业务目标.比如电商场景中,希望能够在优化GMV的基础上提高点击率,从而提高用户的粘性:在信息流场景中,希望提高用户点击率的基础上提高用户关注,点赞,评论等行为 ...

  3. “猜你喜欢” — 浅谈内容分发中的推荐系统

    本文为PMCAFF专栏作者赵知了出品 为什么抖音刷起来停不下来? 为什么网易云音乐总能推荐我喜欢的? 你的爱好和口味系统到底是怎么猜到的? 内容推荐是一个较为复杂的模块,这篇文章先简单聊聊基于个性化推 ...

  4. 【推荐系统】一文梳理联邦学习推荐系统研究进展

    推荐系统,对于我们来说并不陌生,它已经无时无刻不方便着我们的生活.学习.工作等方方面面,并且已经成为许多社交/购物/新闻平台中必不可少的组件.近些年来学术界以及工业界的研究者们已经对其进行了大量研究并 ...

  5. 推荐系统的十个关键点

    原文链接:http://www.iteye.com/topic/1129553 推荐作者:http://blog.csdn.net/cserchen/article/category/785155 亚 ...

  6. 推荐系统(1)-概述

    推荐系统概述 1.数据部分 2.模型部分 2.1模型的组成 2.2模型的训练 2.3模型评估 <深度学习/推荐系统>读书笔记 推荐系统要处理的问题:对于用户U(user),在特定的场景C( ...

  7. 【更新】深度学习推荐系统

    其他博客:笔记1.博客2 文章目录 第一章.互联网的增长引擎--推荐系统 第二章.前深度学习时代--推荐系统的进化之路 第三章.浪潮之巅--深度学习在推荐系统中的应用 3.1 深度学习推荐模型的演化关 ...

  8. 【全面】人工智能技术栈与学习路线:机器学习 深度学习 视觉 NLP 推荐系统

    文章目录 一 概述(本文原创) 二 人工智能编程语言/数据结构与算法 三 人工智能基础原理 四 智能信息获取(简称爬虫) 与数据分析 1.发起请求 3.解析内容 4.保存数据 二.Requests库介 ...

  9. 【免费学习半个月】强烈推荐你学习这个《机器学习与推荐系统实训强化课》...

    前几天,我给朋友推荐一个课程,跟他说认真学能拿到头条offer,一开始还说我吹牛,看完介绍,结果直接就报名了.就是下面这个 <机器学习与推荐系统实训强化课> 「Machine Learni ...

最新文章

  1. sql_trace的介绍
  2. c#语言程序设计实例,C#语言程序设计用.ppt
  3. 【hdu 1043】Eight
  4. Flutter开发Flutter与原生OC、Java的交互通信-2(48)
  5. Linux的nm查看动态和静态库中的符号
  6. java字面量和符号引用_java -- JVM的符号引用和直接引用
  7. 【CV】使用Keras和迁移学习从人脸图像中预测体重指数BMI
  8. 26 | 案例篇:如何找出狂打日志的“内鬼”?
  9. redis配置环境变量
  10. 写给初中级前端工程师的进阶指南
  11. 刷bios工具_微星主板怎么更新bios版本?微星主板更新BIOS版本图文教程
  12. 报错:error while loading shared libraries: libz.so.1: cannot open shared object file
  13. 小猫钓鱼——栈和队列的应用(C++)
  14. LeetCode Sparse Matrix Multiplication
  15. Windbg及Dump文件分析方法
  16. 铁路标准 EN 50126
  17. Visual paradigm试用版绘制ER图时如何去水印
  18. VC++计算正反坐标方向角
  19. 在VUE中使用Echarts世界地图,并根据经纬度标记位置
  20. VS2017登陆失败:我们无法刷新此账户的凭证、我们无法添加此账户发送请求时出错、评估期已结束,请登录以解除产品锁定

热门文章

  1. Django Vue 搭建相亲网站
  2. Fig : 一款超高颜值和功能强大的终端自动补全工具
  3. 怎样看大盘指数即时分时走势图
  4. 给IT人士的保健建议
  5. Java OOP 6 异常
  6. 关于对每种图片格式的理解(学习记录)
  7. OpenCV学习之寻找轮廓实现视频流的运动目标检测
  8. 解决VMware中Ubuntu占用空间过大的问题(Ubuntu虚拟机空间回收)
  9. cache 的两种方式Write Through和Write back
  10. 电路分析基础笔记(四)动态电路的时域分析