关于自然语言处理:推荐系统一超详细知识介绍一份完整的入门指南解答推荐系统相关算法流程

39次阅读

共计 5605 个字符,预计需要花费 15 分钟才能阅读完成。

1. 举荐算法的初步了解

如果说互联网的指标就是连贯所有,那么举荐零碎的作用就是建设更加有效率的连贯,举荐零碎能够更有效率的连贯用户与内容和服务,节约了大量的工夫和老本。

1.1 举荐零碎次要解决问题

  • 工作一:开掘长尾:帮忙用户找到想要的物品(音乐、商品、新闻),开掘长尾效应中的非风行市场

咱们在网上冲浪时,经常被大量的物品信息所吞没。从海量信息中找到本人想要的信息,实属不易(如面对淘宝各种各样的打折流动手足无措)。在经济学上,有一个经典的名词叫“长尾效应”,该效应的内容是:从人们需要的角度上看,大多数的需要会集中在某一小部分,而这部分咱们能够称之为风行,而散布在残余局部的需要是个性化的、零散的和小量的需要。这就意味着,有大量资源是鲜有人问津的,这不仅造成了资源利用上的节约,也会使口味偏小众的用户被风行的内容所吞没。

  • 工作二:升高信息过载

进入互联网时代后,信息量已处于爆炸的状态。如果把所有内容都展现进去,用户必定无奈全副接管,这必然会造成信息过载,信息的利用率将非常低下。因而就须要举荐零碎来帮咱们把低价值的信息给筛选掉。

  • 工作三:进步站点的点击率、转化率

好的举荐零碎总是能给用户举荐出想要的内容,让用户更频繁地拜访站点,加强用户黏度。

  • 工作四:加深对用户的理解,为用户提供个性化的定制服务

当零碎胜利举荐了一个用户感兴趣的内容后,咱们对该用户的兴趣爱好就越清晰。当咱们精准地描绘出每个用户的形象后(精准的用户画像),就能够为他们定制出一系列个性化的定制服务,让领有各种各样需要的用户都能在咱们平台上失去满足。

如果把举荐零碎简略拆开来看,举荐零碎次要是由数据、算法、架构三个方面组成。

  • 数据提供了信息。数据贮存了信息,包含用户与内容的属性,用户的行为偏好例如对新闻的点击、玩过的英雄、购买的物品等等。这些数据特色十分要害,甚至能够说它们决定了一个算法的下限。
  • 算法提供了逻辑。数据通过一直的积攒,存储了巨量的信息。在微小的数据量与数据维度下,人曾经无奈通过人工策略进行剖析干涉,因而须要基于一套简单的信息处理逻辑,基于逻辑返回举荐的内容或服务。
  • 架构解放了双手。架构保障整个举荐自动化、实时性的运行。架构蕴含了接管用户申请,收集、解决,存储用户数据,举荐算法计算,返回举荐后果等。有了架构之后算法不再依赖于手动计算,能够进行实时化、自动化的运行。例如在淘宝举荐中,对于数据实时性的解决,就保障了用户在点击一个物品后,后续返回的举荐后果就能够立即依据该点击而扭转。一个举荐零碎的实时性要求越高、访问量越大那么这个举荐零碎的架构就会越简单。

1.2 举荐零碎的整体框架

举荐的框架次要有以下几个模块

  • 协定调度:申请的发送和后果的回传。在申请中,用户会发送本人的 ID,地理位置等信息。后果回传中会返回举荐零碎给用户举荐的后果。
  • 举荐算法:算法依照肯定的逻辑为用户产生最终的举荐后果。不同的举荐算法基于不同的逻辑与数据运算过程。
  • 音讯队列:数据的上报与解决。依据用户的 ID,拉取例如用户的性别、之前的点击、珍藏等用户信息。而用户在 APP 中产生的新行为,例如新的点击会贮存在存储单元外面。
  • 存储单元 :不同的数据类型和用处会贮存在不同的存储单元中,例如 内容标签与内容的索引存储在 mysql 里,实时性数据存储在 redis 里,须要进行数据统计的数据存储在 TDW 里

2. 举荐零碎

2.1 举荐算法流程介绍

举荐算法其实实质上是一种信息处理逻辑,当获取了用户与内容的信息之后,依照肯定的逻辑解决信息后,产生举荐后果。热度排行榜就是最简略的一种举荐办法,它依赖的逻辑就是当一个内容被大多数用户喜爱,那大概率其余用户也会喜爱。然而基于粗放的举荐往往会不够准确,想要开掘用户个性化的,小众化的趣味,须要制订简单的规定运算逻辑,并由机器实现。

举荐算法次要分为以下几步:

  • 召回:当用户以及内容量比拟大的时候,往往先通过召回策略,将 百万量级的内容先放大到百量级
  • 过滤:对于内容不可反复生产的畛域,例如实时性比拟强的新闻等,在用户曾经曝光和点击后不会再推送到用户背后。
  • 精排:对于召回并过滤后的内容进行排序,将 百量级的内容并依照程序推送
  • 混排:为防止内容越推越窄,将精排后的举荐后果进行肯定批改,例如管制某一类型的频次

    • 强规定:依据业务规定进行批改,例如在流动时将某些文章置顶。

    例如在抖音与快手的散发中:抖音强平台基于内容品质散发,快手重平台基于社交和趣味散发,抖音:内容品质 > 关系 > 双向互动。快手:内容品质 约等于 关系 > 双向互动。抖音基于将内容从小流量开始,其中体现优质的内容将一直的进入更大的流量池中,最终进入举荐池,造成 90 天 + 精品召回池,最终的后果也是优质内容的热度随着时间推移逐步累积减少,头部内容的集中度很高。

起源:方正证券《抖音 vs 快手深度复盘与前瞻 - 短视频 130 页剖析框架》

2.1.1 召回策略

  • 召回的目标:当用户与内容的量级比拟大,例如对百万量级的用户与内容计算概率,就会产生百万 * 百万量级的计算量。但同时,大量内容中真正的精品只是多数,对所有内容进行一次计算将十分的低效,会节约大量的资源和工夫。因而采纳召回策略,例如热销召回,召回一段时间内最热门的 100 个内容,只需进行一次计算动作,就能够对所有用户利用。
  • 召回的重要性:尽管精排模型始终是优化的重点,但召回模型也十分的重要,因为如果召回的内容不对,怎么精排都是谬误的。
  • 召回办法:召回的策略不应该是简略的策略堆砌,而应该是办法的互相补充。

    • 热销召回:将一段时间内的热门内容召回。
    • 协同召回:基于用户与用户行为的相似性举荐,能够很好的冲破肯定的限度,发现用户潜在的趣味偏好。
    • 标签召回:依据每个用户的行为,构建标签,并依据标签召回内容。
    • 工夫召回:将一段时间内最新的内容召回,在新闻视频等有时效性的畛域罕用。是常见的几种召回办法。

2.1.2 精排策略

精排模型的不同类别

精排模型的基本原理

2.2 常见举荐算法介绍

参考:Learning and Reasoning on Graph for Recommendation
http://staff.ustc.edu.cn/~hexn/slides/cikm19-tutorial-graph-rec.pdf

举荐算法大抵能够分为以下几种类型:

  1. 基于风行度的算法
  2. 协同过滤算法(collaborative filtering)
  3. 基于内容的算法
  4. 基于模型的算法
  5. 混合算法
  6. 基于风行度的算法

更多内容查看

我的项目原链接:https://blog.csdn.net/sinat_39620217/article/details/129046810

专栏链接:https://blog.csdn.net/sinat_39620217/category_12205194.html

2.2.1 基于风行度的算法

基于风行度的算法非常简单粗犷,间接依据内容的 PV(Page View,访问量)和 UV(Unique Visitor,独立访客)等数据来进行热度排序来举荐给用户。常见场景有热歌榜、微博热门话题、知乎热榜等等。

这种类型的算法特点是简略,实用于刚注册不久的用户(冷启动)。然而其毛病也很显著,无奈针对特定的用户进行个性化的举荐,也就意味着一百个读者只能读出同一个哈姆雷特。当然,也能够进一步对基于风行度的算法进行改良,使举荐内容领有肯定水平的个性化,例如退出用户分群个性,只把热榜上的体育新闻举荐给体育迷,只把热榜上的娱乐新闻举荐给喜爱看八卦新闻的用户。

2.2.2 协同过滤算法

协同过滤算法(Collaborative Filtering)是一种非常罕用的算法,在很多购物平台中都会用到。协同过滤算法有两种类型,别离是基于用户(User)和基于物品(Item)的协同过滤算法。

a. 基于用户的协同过滤算法
  • 步骤一:取得每个用户对各个物品的评估或青睐水平(可通过浏览、珍藏和购买等记录来计算)。
  • 步骤二:根据用户对物品的评估计算出所有用户之间的类似度。(也就是利用用户对所有物品的评估来形容用户)
  • 步骤三:选出与以后用户最类似的 K 个用户。
  • 步骤四:将这 K 个用户评估最高并且以后用户又没有浏览过的 N 个物品举荐给以后用户。
b. 基于物品的协同过滤算法
  • 步骤一:与基于用户的算法一样,取得取得每个用户对各个物品的评估或青睐水平。
  • 步骤二:根据用户对物品的评估计算出所有物品之间的类似度。(也就是用所有用户对物品的评估来形容物品)
  • 步骤三:对于以后用户评估高的物品,找出与之类似度最高的 N 个物品。
  • 步骤四:把这类似度最高的 N 个物品举荐给以后用户。

一个简略的基于用户的协同过滤算法例子。首先咱们依据用户对物品的评估构建出一个用户和物品的关联矩阵,如下:

图中的行是不同的用户,列是不同的物品,单元格(x,y)的值则是 x 用户对 y 物品的评估(或青睐水平)。咱们能够把某一行视为某一个用户对所有物品偏好的向量,这样把用户向量化后,就能够计算出每两个用户之间的向量间隔了,这里咱们应用余弦类似度来作为向量间隔。

如果咱们要为用户 1 举荐物品,则须要找出与用户 1 类似度最高的 K 名用户(设 K =2)评估的物品,并且去掉用户 1 曾经评估过的物品,最初依照评估大小进行排序,举荐出 N 个物品(设 N =2)给用户 1。

同样地,接下来举一个简略的基于物品的协同过滤算法例子。

基于物品的计算形式大致相同,把用户和物品的关联矩阵中的某一列视为所有用户对该物品的评估,这样把物品向量化后,就能够计算出物品之间的类似度矩阵。

计算出所有物品之间的类似度如下。

最初,如果咱们要为用户 1 举荐物品,则须要先找到用户 1 评估最高的物品。而后找到与该物品类似度最高且用户 1 未有评估过的 N(设 N =2)个物品,将其举荐给用户 1。

2.2.3 基于内容的算法

  • 位置:最早被应用的举荐算法,年代久远,但当今依然被宽泛应用,成果良好
  • 定义:给用户 X 举荐和之前喜爱过的物品类似的物品,即 U2I2I,U2Tag2I

下面提到的两种算法看起来很好很弱小,通过进一步改良也能克服各种缺点。然而有一个问题是,如果我是《哈利波特》的粉丝,我已经在商城买过一本《哈利波特与魔法石》。这时商城的书库又上架了一本《哈利波特与死亡圣器》,显然,我应该会很感兴趣。然而下面提到的算法这时候就都不太好使了,因而基于内容的举荐算法就因运而生了。

  1. 这里举一个简略的例子,当初零碎里有一个用户和一条新闻。通过剖析用户最近的行为(能够是该用户最近看过什么新闻)和新闻的文本内容,提取出数个关键字,
  2. 将这些关键字作为属性,也就能够把用户和新闻向量化:

  3. 接着计算向量间隔,得出用户和该新闻的类似度,再依据类似度进行举荐。在向量化的时候,咱们也能够进一步地改良。如,在为一名喜爱看英超联赛的足球迷举荐新闻时,如果有某一条新闻里存在体育、足球、英超关键词,显然前两个词都不如英超这个词来得精确。那么咱们如何在零碎里突显这种“重要性”呢?这时候咱们能够不再简略地用 0,1 或者词频来进行向量化,而是为每个词都赋予权重。这个权重能够从整个新闻语料库中计算出来(如 TF-IDF 算法),在向量化时引入权重的影响,能够取得更精确的成果。
  4. 然而,又有一个问题呈现了。要是用户的关键词是足球,而新闻的关键词是德甲、英超,那么依照下面办法计算出的类似度为 0。显然这不合乎常理,在此,咱们引入主题聚类:

  5. 咱们能够通过预训练好的 Word2Vec 对关键词进行表征,而后再聚类出多个主题,最初用主题代替关键词来向量化文本。这样,足球和德甲、英超等关键词就能够通过主题来关联在一起了。

基于内容的举荐算法可能很好地解决冷启动问题,同时也不会受热度的限度,因为它是间接基于内容进行匹配的。然而,它也会存在一些缺点,如适度专业化(over-specialisation),该缺点会始终给用户举荐内容相干的物品,而失去了举荐内容的多样性和让用户接触新内容的机会。

c. 基于内容的举荐零碎 demo

更多内容查看

我的项目原链接:https://blog.csdn.net/sinat_39620217/article/details/129046810

专栏链接:https://blog.csdn.net/sinat_39620217/category_12205194.html

2.2.4 精排模型——逻辑回归为例

2.2.5 交融算法

实际上,事实世界的举荐零碎往往都不会只用某一种算法来构建。一些比拟大型的零碎甚至会交融数十种算法。咱们能够通过加权、变换、层叠等多种办法来综合不同算法的举荐后果,或者是在不同的计算环节(如召回,排序等)中使用不同的算法来混合,达到更贴合理论业务的须要。

2.3 算法掂量指标以及取得举荐成果

2.3.2 举荐成果评估

3. 用户画像(进步举荐算法成果的大杀器)

3.1 原始数据

3.2 事实标签

3.3 模型标签

3.4 内容画像

更多内容查看

我的项目原链接:https://blog.csdn.net/sinat_39620217/article/details/129046810

专栏链接:https://blog.csdn.net/sinat_39620217/category_12205194.html

4. 结巴分词用于内容类似举荐

计算物品最类似的其余物品,间接用于 I2I 类似举荐,或者 U2I2I 举荐

以文章为例,进行内容类似举荐,个别须要以下几个步骤:

4.1 内容获取

4.2 中文分词:提取关键词

4.3 Doc2Vec:均匀、加权均匀

4.3 Word2vec:语意扩大

4.4 TopN 类似近邻搜寻

4.5 redis 缓存

4.6Flask/Java Web 服务

必看!!

更多内容查看

我的项目原链接:https://blog.csdn.net/sinat_39620217/article/details/129046810

专栏链接:https://blog.csdn.net/sinat_39620217/category_12205194.html

正文完
 0