工业界通用推荐系统架构:

Match&Rank

定义:Match基于当前user(profile、history)和context,快速在全库中找到TopN最相关的Item,给Rank来做小范围综合多目标最大化

通常做法:通常情况下,用各种算法做召回,如:item/user/model-based CF/DNN等等,做粗排之后交由后面的Rank层做更精细的排序,最终展现TopK item.

Match 算法典型应用

猜你喜欢:多样推荐  相似推荐:看了还看  搭配推荐:买了还买

协同过滤算法介绍(Collaborative Filtering简称CF):

1、定义:

简单地来说,CF就是收集(collaborative)用户偏好信息预测(filtering)用户的兴趣

数学形式化:矩阵补全问题

分类:

CF主要包括:

基于邻域(内存、共现关系)的协同过滤---->又包括user-based CF和Item-based CF

基于模型的协同过滤(model-based CF)

2、基于共现关系的协同过滤算法

1、User-based CF :基于用户的协同过滤算法,多用于挖掘那些有共同兴趣的小团体,通常新颖性比较好,准确性稍差

2、Item-based CF:基于物品的协同过滤算法,多用于挖掘物品之间的关系,然后根据用户的历史行为来为用户生成推荐列表

相比于user-based方法,item-based的应用更加广泛

3、相似度

计算相似度主要是通过余弦距离计算

similarity(A,B) = cos(A,B) = A*B/||A||*||B||

1)有时候为了简化,会直接去掉分母,会出现哈利波特效应

(哈利波特效应是指 某个物品太热,而导致好多物品都会跟热门物品关联)

2)在大数据量的环境下,直接计算两个用户之间的相似度,会出现很多用户之间没有对相同的物品进行过行为,大部分交集为         0,为了解决此问题,需要建立每个物品对应用户的倒排表,如下图所示:

可以根据倒排表,只对有效的pair进行计算,从而简化计算

还有一个子主题的知识,看一下下图便知怎么回事,如下图所示:

4、基于ItemCF的推荐算法调用示意图:

尽量不做补足抄底,用算法补全(补足抄底是指match阶段数据不够,可能会使用热门进行补足)

match后面一般有rank和rerank的策略

5、改进Item2Item

针对之前计算Item2Item存在问题:热门用户、哈利波特效应、用户行为缺乏考虑

解决办法:热门用户降权,热门Item降权

降低热门用户影响:

缓解哈利波特效应:

综合考虑:1、用户行为差  2、热门用户降权

6、实时Item2Item

针对之前的情况会出现新品推荐问题

解决办法:实时增量Item2Item

分子:根据user,item的时间顺序流,需要更新item的pair,到存储中去

实时更新统计量

具体详见下述参考文献1

7、混合Item2Item算法框架

针对之前的情况会出现每个场景都用同样的Item2Item

解决办法:有监督混合多种Item2Item算法

1)Learning to Rank

在信息检索中,给定一个query,搜索引擎会召回一系列相关的Documents(通过关键词匹配等方法),然后需要对这些召回的Documents进行排序,最后将Top N的Documents输出。而排序问题就是使用一个模型f(q,d)来对该query下的documents进行排序,这个模型是用机器学习算法训练的模型也可以是人工设定的规则;最关注的是各个Documents之间的相对顺序关系,而不是各个Docuemnts预测分数最准确

具体详见下述参考文献2

2)Hybrid Item2Item算法框架利用Learning to Rank的思想重构Item2Item

以短视频推荐为例:

Feature:

Item Feature : video ctr、video pv、video_comment、

Trigger Feature : trigger ctr、topic ctr

Model:

自己学习各自特征的重要性

Loss:Pairwise Loss,同时优化CTR、LikeR、FavorR

Lambdamart/Neural Nets

3、基于模型协同过滤

1、SVD算法:

目标函数:

SVD存在的几个问题:1、缺失数据和观测到的数据权重相同(>99% 稀疏性)   2、没有正则项,容易过拟合

SVD具体知识可参考下述参考4

2、矩阵分解(Matrix Factorization)算法

主要改进

用latent vector来表示user和item(ID embedding)

组合关系用内积inner product(衡量user对于某一类商品的偏好)

简化SVD:

举例:u_1,u_2,i_1,i_2,构造4条样本,构造v_u,v_i矩阵

损失函数:

w_ui是样本的权重,比如可观测和不可观测的,权重不同

具体详见下述参考文献5

3、Factored Item Similarity Model(因子项相似度模型)

1)MF用UserID来表示用户,可以叫做user-based CF.(找到相似的user用于推荐)

2)用用户评价过的item表示用户,可以叫做item-based CF(找到相似的item用于推荐)

具体可参考下述参考6

4、SVD++:Fusing User-based and Item-based CF

1) MF(user-based CF)表示UserID表示用户     ->  直接映射ID到隐空间

2) FISM(item-based CF)用用户评价的item来表示用户 -> 映射items到隐空间

3) SVD++混合两种想法

具体文献详见下述参考文献7

5、Generic Feature-based Recommendation

上述说到CF的一些算法,但是CF只是用交互矩阵来构建模型,没有利用user/item属性和上下文

如下图所示:

6、FM:Factorization Machines

FM受到前面所有的分解模型的启发,每个特征都表示成embedding vector,并且构造二阶关系

FM允许更多的特征工程,并且可以表示之前所有模型为特殊的FM

只有uid,item_id,那么就相当于是MF;UserID和Item评价,相当于是SVD++

具体文献详见下述参考文献8

7、之前和现在优化loss方面的区别

之前的很多工作都在优化L2 loss:

很多内容表明:一个低MSE模型不一定代表排序模型效果好

可能的原因:均方误差和排序指标之间的分歧(排序指标AUC等);观察有偏用户总是去对喜欢的电影打分

现在大部分工作都是朝向优化pairwise ranking loss

Known as the Bayesian Personalized Ranking loss  个性化排名 优化相对顺序,而不是优化绝对值

8、淘宝搜索推荐核心系统架构(2018)

具体文章可参考下述参考9

4、深度协同过滤模型(Deep Collaborative Filtering Model)

Methods of representation learning

Methods of matching function learning

embedding 学习常用算法:

1、矩阵分解(Matrix Factorization)

2、topic model

1) embedding from topic model:

看看下面这两张图片你会明白很多东西,?

2) LDA in music recommendation:(LDA是一个无监督算法,和聚类有点类似的味道)

建模:歌曲(doc) - 歌词(word) 只看歌词可能是片面的,有时候需要加上其它的特征;用户(doc) - 歌曲(word)

应用:

相似歌曲:根据doc的topic分布计算相似度

生成歌单:每个topic下概率最大的doc

频率比较低的词学习的效果不好

3、word2vec

1)由来:

传统的N-gram统计语言模型:最大化转移概率:w = argmax P(w|History);将词看作原子单位,相互独立;不考虑词之间的相似性;效果受限于语料规模;大多数情况下语料不足,需要平滑

神经网络语言模型:最大化最大似然估计:w = argmax P(w|content);词的分布式表示:词向量;超越n-gram模型-通过上下文,即周围的环境来表示词

其它方法:

LSA:Latent Sematic Analysis 没有线性规则;LDA:Latent Dirichlet Allocation 大数据训练太慢

2)实现方法:

Skip-Ngram是根据word来预测上下文的概率P(context|word)

CBOW(continuous Bag of Words):根据context来预测word概率P(word|context)

3) 训练

Hierarchical Softmax:使用一颗二分Huffman树表示,叶子节点是单词,词频越高离根节点越低,优化计算效率O(logV)

Negative Sampling:

4)优势

不丢失信息的情况下降低维度;矩阵及向量运算便于并行;向量空间具有物理意义;可以在多个不同的维度上具有相似性

线性规则:

4、DNN(Youtobe应用)

1) embedding from DNN:

2)DNN at Google

训练training:通过分类任务学习出用户向量和视频向量,每个视频作为一个类别,观看完成是视频作为一个正例;把最后一层隐层输出作为用户向量(U+C);video embedding:pre trained to feed or training together

服务serving:输入用户向量,查询出与之向量相似度TopK高的视频

3)DNN at Google 前人的一些经验

随机负采样效果好于hierarchical soft-max

使用全量的数据而不是只使用推荐数据

每个用户生成固定数量的样本

丢弃搜索词的序列性

输入数据只使用历史信息

上面主要说一下怎么获取embedding几种方法,其实即使你模型构建好啦,来了一个人,你通过模型给他返回一个可推荐物品列表,返回topK个item,想过这个模型之后选取topK等等过程工业界是怎么实现的嘛

这个部分叫做服务serving,想想去饭店吃饭服务员怎么服务的,其实是一个道理,来一个用户你给他服务给他他最想看的几个物品

下面看一下这个部分的通用框架:

下面框图是一个参数服务器,说白啦就是一个集群,你把数据给它它分给好几个机器处理,最后汇总一下返回,优点就是大数据量的情况下可以加快速度

DB部分:考虑到这种实时的要求,会采用NoSQL存储系统:存储键值对文档,修改灵活;无join操作,操作简单,速度快

kv存储是NoSQL存储的一种,hbase:分布式、持久化、常用于大数据存储,redis:基于内存、速度快、常用于缓存

现在我接触到的存储:定时更新的库会是hbase、hive,如果涉及到实时的话更多的使用redis和ES

哈哈哈,我要去跑步啦,周末愉快~~~

参考:

1、http://net.pku.edu.cn/~cuibin/Papers/2015SIGMOD-tencentRec.pdf

2、https://www.cda.cn/uploadfile/image/20151220/20151220115436_46293.pdf

3、https://blog.csdn.net/huagong_adu/article/details/40710305

4、https://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html

5、https://datajobs.com/data-science-repo/Recommender-Systems-%5BNetflix%5D.pdf

6、https://www.researchgate.net/publication/262219034_FISM_factored_item_similarity_models_for_top-N_recommender_systems

7、https://www.cs.rochester.edu/twiki/pub/Main/HarpSeminar/Factorization_Meets_the_Neighborhood-_a_Multifaceted_Collaborative_Filtering_Model.pdf

8、https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf

9、https://www.sohu.com/a/212035397_612370

推荐系统中的召回算法--协同过滤相关推荐

  1. 推荐系统中的召回算法大致梳理(非完整)

    推荐系统中的召回算法大致梳理(非完整) 定义 推荐策略中的两个关键问题分别是"召回"和"排序". "召回match"是指从全量信息中触发尽可 ...

  2. 推荐系统实践----基于用户的协同过滤算法(python代码实现书中案例)

    本文参考项亮的<推荐系统实践>中基于用户的协同过滤算法内容.因其中代码实现部分只有片段,又因本人初学,对python还不是很精通,难免头大.故自己实现了其中的代码,将整个过程走了一遍. 1 ...

  3. 推荐系统算法—协同过滤算法详解

    文章目录 基于用户的协同过滤(UserCF) 基本思想 例子 UserCF 改进 基于物品的协同过滤(ItemCF) 基本思想 例子 ItemCF 改进 归一化 UserCF 与 ItemCF 对比 ...

  4. 推荐算法 itemcf java_推荐系统之基于物品的协同过滤算法(ItemCF)

    推荐系统之基于物品的协同过滤算法(ItemCF) 发布时间:2018-03-04 16:55, 浏览次数:1778 , 标签: ItemCF 推荐系统之基于物品的协同过滤算法(ItemCF) 前端时间 ...

  5. 【干货】推荐系统中的机器学习算法与评估实战

    [导读]推荐系统是机器学习技术在企业中最成功和最广泛的应用之一.本文作者结合MLMU演讲[1]的Slides,对推荐系统的算法.评估和冷启动解决方案做了详细的介绍. 作者 | Pavel Kordík ...

  6. 搜索推荐系统中的召回

    搜索推荐系统中的召回 1. 召回简介 2. 召回指标 3. 召回策略 3.1 基于内容匹配的召回 3.2 基于协同过滤的召回 1. 召回简介 谈召回离不开搜索推荐,通过用户搜索或者系统推荐获取客户想要 ...

  7. 推荐系统笔记:基于模型的协同过滤

    1 介绍 基于邻域的协同过滤方法可以看作是机器学习中常用的k-最近邻分类器KNN的泛化. 这些方法是基于实例的方法,因此,除了可选的预处理阶段之外,没有专门为预测预先创建模型. 推荐系统笔记:Intr ...

  8. 探索推荐引擎内部的秘密:深入推荐引擎相关算法 - 协同过滤

    上一篇转载的博客<探索推荐引擎内部的秘密 - 推荐引擎初探>,详细讲述了推荐引擎的原理.算法.应用,并且给出了一些优化的trick,真心不错. 这里把第二篇<探索推荐引擎内部的秘密 ...

  9. 个性化试题推荐系统 协同过滤推荐算法在在线考试系统中的运用 基于用户/项目的协同过滤推荐算法 混合协同过滤推荐算法 协同过滤混合推荐算法

    个性化试题推荐系统 协同过滤推荐算法在在线考试系统中的运用 一.项目开发技术及功能介绍 1.SSH开发框架(spring+struts+hibernate) 2.js.jquery.bootstrap ...

最新文章

  1. 你的.net 2.0 真的能与1.1 安全正确地运行在同一台电脑上吗? 小心Server Application Unavailable 错误...
  2. chrome使用技巧
  3. qemu-kvm部署虚拟机
  4. cp文件服务器,docker容器与物理机的文件传输—docker cp命令
  5. python用import xlwt出现红字_如何用python处理excel
  6. study notes for python
  7. java 线程 wait 一定要同步_java中使用wait就得使用同步锁,而且2个线程必须都使用同步代码块,否则就会异常...
  8. 12.12 带触发器按钮的输入框
  9. 使用npm uninstall卸载express无效
  10. 编码基本功:相似函数参数顺序要一致
  11. SpringCloud整合Feign的调用源码流程解析
  12. 高级电工电拖实训考核装置
  13. tensorflow2.0 numpy.ndarray 与tenor直接互转
  14. Python中Numpy中省略号的作用
  15. 2.1.2笼形天线、V形对称天线、电视发射天线
  16. 脉冲在matlab,脉冲时间信号MATLAB表示
  17. Cadence的版图绘制、DRC、LVS、PEX-以反相器为例
  18. BT面板创建站点显示已存在问题解决
  19. 【尚筹网项目】 三、【后台】 管理员信息维护
  20. bert-pytorch版源码详细解读

热门文章

  1. EF架构~单表一对多集合的插入(树型结构)
  2. 《HiBlogs》重写笔记[1]--从DbContext到依赖注入再到自动注入
  3. Windows编译OpenSSL
  4. MyEclipse和tomcat结合编写jsp对于中文乱码的解决方法
  5. PAT甲级1103 Integer Factorization (30 分):[C++题解]背包问题,DP解法
  6. 线段覆盖加强版(快速+贪心)
  7. 中国人民大学《组织行为学》_12怎样让员工快速融入群体?
  8. rules不显示 vue_使用stylelint规范vue项目
  9. Linux MySQL Connector/C++ 编程实例
  10. 服务器虚拟机进不了暗黑3游戏,暗黑破坏神3无法初始化 D3D的解决方法