推荐系统
推荐系统是一种信息过滤系统,为了解决信息过载问题
系统组成一般包括日志系统,推荐算法和内容展示UI
其中推荐算法为核心,它一般又可以分为三层:基础层,推荐(召回)层,排序层。基础层为召回层提供特征,召回层为排序层提供候选集,排序层输出排序后的推荐结果。
上图参考自:微博推荐系统介绍
基础层主要通过NLP、CV、知识图谱等技术构造特征,推荐(召回)层基于用户历史行为数据信息,特征信息等从庞大的商品内容集里面筛选出一个候选集,以减小排序层的计算量。
推荐系统, 计算广告, 搜索引擎
推荐,广告和搜索是互联网时代的三种主要信息获取方法,都是为了解决信息过载问题,只是具体的方式和目的有所不同。
实际上推荐和广告是非常相似的,背后的很多算法也都可以通用,只不过前者作为一个用户产品,是为了改善用户体验的,后者是一个商业产品,是为公司变现的方式。而相对于搜索,最大的不同就是它是用户主动输入搜索内容,引擎基于用户输入进行召回和排序。
推荐系统经典算法
上图参考:今日头条推荐算法原理全文详解
从上图中也可以看出,除了协同过滤,另外四种算法在广告点击率预估中也有非常广泛的应用,也说明了推荐与广告的相通之处。
图中的LR和GBDT是机器学习中非常经典的算法,这里简单介绍一下另外三种。
协同过滤(Collaborative Filtering)
协同过滤是基于用户历史行为数据来进行统计分析和相似度计算的。
要注意的是它的相似度计算是基于用户历史行为数据的,而不是用户或物品的属性来计算的;另外,它是一种基于统计分析的方法,可以说不涉及机器学习的内容。
协同过滤也被称为基于邻域的方法,因为它是根据相似度进行筛选和排序,可以理解为最后的结果都在一个相近的范围内。
它包括UserBased CF和ItemBased CF,即基于用户和基于物品的协同过滤。
UserBased CF:两个用户买了很多相同的东西,则可以认为两者兴趣相似,就向彼此推荐一方喜欢但另一方还没买的东西。
UserBased CF的用户相似度计算公式:余弦相似度
其中,N(u)表示用户u购买过的商品集合,N(v)表示用户v购买过的商品集合,分子表示用户u和v都购买过的商品数,分母是一个归一化因子。最后的计算结果就是用户u和v的相似度,两者购买的商品重合度越高,相似度越大。
ItemBased CF:买了物品1的人一般还会买物品2,如:羽毛球和羽毛球拍。
物品的相似度计算和用户相似度计算是一样的,只是含义发生了变化。其中N(i)表示购买了物品 i 的用户集合,N(j)表示购买了物品 j 的用户集合。最后的计算结果就是物品 i 和 j 的相似度,同时购买两种商品的人数越大,相似度越大。
协同过滤,它的解释性非常好,尤其是ItemBased CF,想必在淘宝上也都看过相似的推荐解释:买了物品1的人一般还会买物品2。也正是因为它的解释性而有了较为广泛的应用。
但是它的计算量和存储要求都是较大的,对于UserBased CF,它需要存储一个用户相似度矩阵,对于ItemBased CF,它需要存储一个物品相似度矩阵,而且有新的用户或商品加入,需要进行矩阵的更新,都是较为耗时和耗内存的工作。因此,公司一般不会只用一种算法作为最后的推荐,也都会结合多种算法各自的优势,进行合理的推荐。
因子分解机(Factorization Machine)
从公式可以看出,FM是从线性回归进化而来,它不仅考虑了一阶特征,而且考虑了二阶交叉特征,能够挖掘更多的特征信息。但它不是像第二个公式一样简单的为每一个交叉特征赋予一个权重,而是为每一个特征设定一个隐向量vi ,这个隐向量就表征了特征的信息,两个特征隐向量的点积就是该交叉特征的权重,这样的操作相对于第二个公式有两个好处:
参数的数量大幅度缩减,从n×(n−1)/2降低到nk
稀疏数据下学习不充分的问题也能得到充分解决。
这里的k是隐向量的维度,是人为设定的,在大规模的问题中,远小于n。稀疏数据是大部分数据都为0的数据,如one-hot之后的特征数据。
学习不充分问题可以有如下理解:原本的多项式回归参数w12的学习只能依赖于特征x1和x2,也就是只有在x1和x2都不为0的情况下,它才能够被学习;而对参数〈v1,v2〉而言就完全不一样了,它由v1和v2组成,如对于向量v1,它可以通过多个交叉组合特征学习得到,比如可以由x1x2,x1x3,…学习获得,这样可供学习的非零样本就大大增加了。
还有它的公式推导和改进方法可以参见:分解机(Factorization Machines)推荐算法原理
wide&deep模型
上图来自论文:Wide & Deep Learning for Recommender Systems
wide&deep模型是谷歌2016年提出的,它结合了wide model和deep model,让模型同时具备了Memorization (记忆)和 Generalization(泛化)功能。输入包括原始特征+组合特征, 输出需要根据业务决定,如点击概率。
wide model实际上就是一个逻辑回归模型,它可以对原始特征和手工的交叉特征进行学习,有非常好的记忆功能,偏向于推荐用户之前有过行为的相似物品,推荐相对保守。
deep model就是一个深度神经网络,它可以学习到原始特征的潜在交叉特性,对有很好的泛化能力,推荐的商品可能不是那么的相关,保证了推荐的多样性。
两者的结合实际上是一个非常直观的想法,两者优势的互补使推荐效果有较好的提升,也已经得到了非常广泛的应用。
更多参考: