免规则采集器列表算法(一下精准推荐的整体架构以及核心算法的实现原理总结)

优采云 发布时间: 2022-01-18 21:02

  免规则采集器列表算法(一下精准推荐的整体架构以及核心算法的实现原理总结)

  目录 前言 推荐架构 算法模型 传统推荐算法总结 前言

  相信很多小伙伴都听说过大数据、AI推荐、千人千面等高级词汇;我也经常看到,在很多app中,经常会向我们推荐一些产品,猜你喜欢,重点推荐等服务。

  很多朋友也应该去网上了解一下,发现真的是一头雾水,尤其是看到一些算法的时候,那些数学公式让人头疼。今天老谷就尝试介绍一下精准推荐的整体架构,以及核心算法的实现原理,让小伙伴们尽可能的了解。

  注意:阅读本文的朋友文章需要有一定的java基础和elasticsearch知识。

  推荐架构

  下面是一个通用的推荐系统架构图

  

  上述架构图的流程从两个维度来看

  用户请求路径

  1)用户终端发起请求,传入核心标签UserId

  因为有些平台在很多地方都有推荐服务,比如:购物车下的【精品推荐】,商品详情里的【猜你喜欢】,商品列表里的【热推荐】等;所以终端经常会带来这样的场景。参数,不同的场景会对应不同的模型数据

  2)然后后台接口发起对推荐服务的调用

  3)任何精准推荐都会有召回、排序、业务重排三个阶段;

  这三个是什么意思?拿张图简单解释一下

  

  通过步骤,可以达到推荐,千人千面的效果;整个流程的核心是召回算法和排序算法;我们从后台看一下数据分析维度的路径。

  数据分析路径

  任何分析都需要材料。材料是什么?其实这几年朋友们听得最多的就是大数据了;什么是大数据?简单的理解就是数据量大,数据维度多。我们可以分析这么多数据。

  在上面推荐的架构图中:

  1)我们通过在终端埋点采集用户行为日志,并存储在大数据平台中。

  2)采集业务数据,采集用户偏好行为数据,如:采集、点赞、评论等;存储在大数据平台

  3)基于大数据平台的数据,通过一些算法对数据进行分析,得到训练模型。

  4)通过训练好的模型可以获得相关推荐数据。

  5)将获取的推荐数据保存到mysql/redis等持久化工具中。

  为了达到用户请求的性能,推荐的数据会提前存储在数据库中,以保证用户体验。

  算法模型

  什么是算法?什么是模型?让我给你一个小学一年级的问题

  题目:找出规律,填写下面的值

1、3、5、7、9、11、13、?、?

  大家一看就知道答案了吧?我们不是在这里讨论最终答案是什么。我们来分析一下答案是怎么来的?

  看到上面的题目,我们来分解一下;我们已经知道一组数据

  1、3、5、7、9、11、13

  这些数据实际上等价于我们 采集 的已知数据。

  上面的问题现在我们需要根据已知数据来推断接下来的 2 个数字是什么?

  也就是我们知道用户的行为数据,然后对产品进行预测和推荐给用户。

  算法

  根据上面的标题,我们一眼就能看出第二个数比第一个数大2,即x2 = x1 + 2;在数学中,技术术语是等差数列。这是一个简单的算法,也可以理解为算法公式。

  训练模型

  在我们的推荐系统中,会有一个模型的概念,那么什么是模型呢?我们继续使用上述主题。让我们深入思考一下,为什么我们知道算法公式是x2 = x1 + 2?

  是不是因为我们发现 1 和 3 相差 2,然后发现 3 和 5 相差 2, 5 和 7 相差 2, 一直到 11 和 13 相差 2;所以我们决定,我们发现这列数据的规则是x2 = x1 + 2。

  在我们的推荐系统中,训练模型的思路也是一样的。我们先从采集的数据中取出一些数据,比如:1、3、5、7。我们首先从这部分数据中寻找规律,得到类似x2 = x1 + 2的公式;

  然后我们用这个公式推导出剩下的已知数据,比如:我们可以根据这个公式推导出下面的9、11、13。然后我们发现数据和我们的数据是一致的,我们可以认为该算法是可行的。

  上面第一次取出的部分测试术语是训练数据,剩下的数据称为测试数据

  1、3、5、7 是训练数据;9、11、13 是测试数据

  在推荐系统中,这整个过程可以理解为模型的训练,因为真实场景中的数据维度很多,不可能像我们简单的例子那样;在真实场景中,我们需要用到诸如协同过滤LFM、ALS算法、逻辑回归等LR算法,

  综上所述

  算法

  就是一种解决问题的思路算法公式。

  模型:理解为程序

  是通过算法+数据进行分析过程的一段程序。

需要数据作为入参,程序体作为算法;执行后返回具体的推荐数据。

所以数据量、维度的多少会直接影响模型的准确率

  接下来介绍推荐系统中常用的算法。

  传统推荐算法

  让我们举个例子。有图书平台,需要开发推荐系统。我们现在掌握的已知数据如下

  

  我们发现在上图中,它被列为书名,也就是用户;其中的值 1 表示已读取。空值表示没有读取任何内容。那么现在如何根据这些数据进行推荐呢?我们来看看传统的推荐思路

  基于用户的协同过滤算法(UserCF)

  基本上从用户的角度来看

  首先,需要找到和自己读过相同书籍的其他用户,然后再推荐这些用户喜欢的其他书籍,也就是从用户的共性出发。这个想法的技术术语是 UserCF

  比如上面的例子中,张三和李四都看过《Java编程思想》,那么系统认为两人有共同点。

  所以推荐给张三和李斯的《孙子兵法》。

  推荐给李四的书是张三曾经读过的《人人都是产品经理》

  基于项目的协同过滤算法(ItemCF)

  基本上从商品的角度来看

  他们需要推荐与他们已经读过的书相似的书。

  从书的通用性出发,张三阅读了属于IT类书籍的《Java编程思想》,然后系统可以推荐给张三的《大前端修身》或者《游戏开发》。这个想法的技术术语是 ItemCF

  UserCF 和 ItemCF

  从两种算法的原理可以看出,UserCF的推荐结果侧重于反映用户兴趣相近的小群体的热点,而ItemCF的推荐结果侧重于维护用户的历史兴趣。也就是说,UserCF的推荐更具有社交性,体现了物品在用户小兴趣群中的热度,而ItemCF的推荐更个性化,体现了用户自身的兴趣传承。

  UserCF适用场景

  1)在新闻网站中,用户的兴趣不是特别细化,绝大多数用户都喜欢看热门的新闻。即使是个性化,也是比较粗粒度的,比如有些用户喜欢体育新闻,有些喜欢社会新闻,UserCF可以给用户推荐和他有相似爱好的一群其他用户今天都在看的新闻,这样在抓住热点和时效性的同时,保证了一定程度的个性化。

2)UserCF 适合用于新闻推荐的另一个原因是从技术角度考量的。因为作为一种物品,新闻的更新非常快,每时每刻都有新内容出现,而ItemCF需要维护一张物品相关度的表,如果物品更新很快,那么这张表也需要很快更新,这在技术上很难实现。绝大多数物品相关度表都只能做到一天一次更新,这在新闻领域是不可以接受的。而 UserCF 只需要用户相似性表,虽然UserCF对于新用户也需要更新相似度表,但在新闻网站中,物品的更新速度远远快于新用户的加入速度,而且对于新用户,完全可以给他推荐最热门的新闻,因此 UserCF 显然是利大于弊。

  ItemCF适用场景

  1)在图书、电子商务和电影网站,比如亚马逊、豆瓣、Netflix中,ItemCF 则能极大地发挥优势。首先,在这些网站中,用户的兴趣是比较固定和持久的。这些系统中的用户大都不太需要流行度来辅助他们判断一个物品的好坏,而是可以通过自己熟悉领域的知识自己判断物品的质量。因此,这些网站中个性化推荐的任务是帮助用户发现和他研究领域相关的物品。此外,这些网站的物品更新速度不会特别快,一天一次更新物品相似度矩阵对它们来说不会造成太大的损失,是可以接受的。

  

  总结

  上面介绍了UserCF和ItemCF的协同算法,也是过去常用的推荐算法;然而,近年来出现了一种协作算法 LFM(潜在语义模型)。潜在语义模型的核心思想是通过潜在因素进行连接。用户兴趣和项目。

  例如,用户 A 的兴趣涉及侦探小说、科普类书籍,以及一些计算机技术类书籍,而用户 B 的兴趣则更多地集中在数学和机器学习方面。

  向 A 和 B 推荐书籍:

  对于UserCF,我们首先需要找到和自己读过相同书籍的其他用户(兴趣相近的用户),然后将这些用户喜欢的其他书籍推荐给他们;

  对于 ItemCF,他们需要推荐与他们已经阅读过的书籍相似的书籍。例如,作者 B 读过很多数据挖掘方面的书籍,可以向他推荐机器学习或模式识别方面的书籍。

  其实上面的推荐缺少用户兴趣和物品的关系,即用户A和用户B有一定的相似度,但又不完全一样

  例如,用户A对侦探小说、计算机技术感兴趣;用户B对侦探小说、经济学感兴趣;很有可能向用户 A 推荐经济学书籍。

  如何解决?我们只需要添加用户兴趣和物品的关系即可。您可以从对书籍和对象兴趣进行分类开始。对于用户来说,首先获取他的兴趣类别,然后从该类别中挑选他可能喜欢的项目。

  这种基于兴趣的分类方法大致需要解决三个问题:

  (1) 如何对项目进行分类?

  (2) 如何确定用户对哪些类别的项目感兴趣,感兴趣的程度如何?

  (3)对于给定的类,选择哪些属于该类的物品推荐给用户,如何确定这些物品在一个类中的权重?

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线