360方案 相关技术(推荐、排序、点击率预估)
来源:互联网 发布:淘宝客服泄露买家信息 编辑:程序博客网 时间:2024/05/14 00:15
这篇主要总结一下做的方案用到的推荐系统、排序学习和点击率预估的相关技术。
个性化推荐算法和模型
推荐方法是整个推荐系统中最为核心的部分,推荐方法的好坏在很大程度上决定了推荐系统性能的优劣。因此,国内外对于推荐算法的研究都较为深入,常用的推荐算法主要有以下几种:协同过滤推荐、基于内容的推荐和基于知识的推荐。
协同过滤
协同过滤推荐(Collaborative Filtering Recommendation)是推荐系统中应用最早,也是最为成功的推荐技术。其基本思想在于:用户的偏好是不会随时间改变而发生变化的。它一般采用KNN算法,通过计算用户之间的喜好的相似性来度量用户之间的距离,之后再通过选取目标用户的K个最近邻用户,根据这些邻居的兴趣爱好来预测目标用户对于特定物品的喜好程度。
由于纯粹的协同过滤推荐不需要任何有关物品的信息,推荐给用户的物品完全是系统从用户浏览行为或购买模式等信息中隐式获得的。因此,一方面,它对推荐的对象没有特殊要求,音乐、电影等非结构化的复杂对象也能够处理。另一方面,系统也不用获取和存储这些对象的相关信息。
在协同过滤推荐的发展中,主要衍生出基于用户的协同过滤(User CF)以及基于物品的协同过滤(Item CF)两种方法,前者是基于用户对物品的偏好找到相邻用户,之后再将邻居用户的喜好作为推荐结果推荐给当前用户。后者则在计算邻居时采用物品本身,即寻找相似物品,再基于用户的历史记录,将邻居物品推荐给当前用户。
两种方法也各有自身的适用场景:在非社交网站中,基于物品的CF更加有效,其原因在于,当身处一个非社交的环境中,内容之间的内在联系是非常重要的推荐原则,用户很可能不认识与之具有相同喜好的邻居用户,但是用户很可能会喜欢一件与之间浏览过的相类似的物品。因此,在这种情况下,使用基于物品的CF就合理的多。相反的,在当今流行的社交网络平台中,基于用户的CF就更适用的多。
基于内容推荐
基于内容的推荐(Content-based Recommendation)起源于信息检索和信息过滤领域,主要强调根据物品的描述和内容信息做出推荐。与协同过滤不同,它不需要用户对该物品的评价,而是利用机器学习相关技术从关于内容的特征描述中抽取或“学习”出用户的兴趣和偏好,然而再对其进行推荐。
基于内容的推荐无需大规模用户就能达到一定的推荐精度,没有冷启动问题,并且它对于具有特殊兴趣爱好的用户有一定的处理能力。但是,这种推荐算法需要抽取出具有良好结构性的特征,这些特征通常难以获取。
基于知识推荐
基于知识的推荐(Knowledge-based Recommendation)不依赖于用户或物品的历史记录,而是类似于推理技术,利用额外的因果知识生成推荐。
基于知识的推荐需要与用户具有较强的交互性,因此,它是更广义上“在大量潜在的候选项中,通过个性化方法来引领用户寻找到自身感兴趣或有用的物品”的过程。
排序学习
排序学习(Learning to rank)是一个信息检索与机器学习相结合的研究领域。它的目标是应用机器学习算法学习排序函数来计算文档和查询的相关性分数,并以此为依据对文档集合进行排序。其研究的核心问题在于如何构造一个函数或模型从而反映文档对于查询的相关度。
该方法将机器学习方法引入到信息检索的文档相关性排序问题中,充分考虑各种排序方法对最终排序结果的影响,通过训练学习排序模型,将各种排序方法视为特征,对文档的相关性做综合的评估。
根据不同的分类标准,排序学习可以有如下分类方法:
- 按照所使用的机器学习工具不同,可以分为:基于SVM的排序算法、基于神经网络的排序算法、基于Boosting的排序算法、基于其他机器学习工具(如遗传算法等)的排序算法。
- 按照学习到的排序模型是否为线性,可以分为线性排序算法和非线性排序算法。
- 根据训练数据的不同划分,可以分为为:基于单个样本的Pointwise算法、基于样本对的Pairwise算法和基于样本队列的Listwise算法。
下面,就对目前排序学习广泛使用的Pointwise算法、Pairwise算法和Listwise算法进行对比介绍:
基于单个样本的Pointwise算法
其基本思想是将训练集中的每个查询-文档对作为一个训练数据,采用某种合适的分类或回归的方法来学习一个排序模型。因为每个文档都被看做一个单独的训练数据,故被称为Pointwise法。训练数据少,算法简单明了。
比较有代表性的算法有:基于神经网络的排序算法RankProp、基于感知机的在线排序算法Prank(Perception Rank)/OAP-BPM和基于SVM的排序算法。
然而,这种排序学习方法完全从文档分类的角度计算,没有考虑文档间的相对顺序,因此排序效果不好。
基于样本对的Pairwise算法
在Pairwise算法中,每个输入数据为一对具有偏序关系(preference relation)的文档,通过对这些数据对的有监督学习来获得一个排序模型,其学习目标是使得结果列表中的错误的偏序对越少越好。
目前公认最为经典的三个Pairwise算法是:基于SVM的Ranking SVM算法、基于神经网络的RankNet算法和基于Boosting的RankBoost算法。
基于Pairwise的排序算法的不足之处:
a) 排序是对某个查询在所有候选文档的排序结果,而不是每对文档之间的偏序关系
b) Pairwise法假设所有的文档对是独立同分布的,但其实人们会偏向相关度高的文档
c) 相关训练集大小带来的模型偏置。从训练数据本身的构成来说,不同的查询拥有的文档对数目不同,这样不加均一化地在一起学习,其结果不可避免的向拥有文档对较多的查询偏移
基于样本队列的Listwise
Listwise算法将每个查询的“结果列表”(list)看成一个训练数据,该算法设计关键在于定义一个基于Listwise的损失函数(Loss function)以及选用合适的工具进行学习。大体可以分为两大类:
基于概率模型的列表级排序算法
以Listnet算法为代表,其基本思想是将排序问题看成一个排列概率问题,使用神经网络为学习工具,并使用梯度下降法为优化方法进行求解。
相比起Pairwise法的RankingSVM、RankNet、RankBoost算法,Listnet算法所获得的排序模型不仅是查询级的,而且更关注排名靠前的文档,因此也更满足实际信息检索用户的实际需求。
同样基于概率模型的Listwise算法还有RankCosine、ListMLE,它们与Listnet的不同之处在于它们定义的目标函数不同。
RankCosine的优化目标函数是基于余弦相似度的,它用两个向量分别代表真实结果列表和预测结果列表,并用两个向量之间的余弦角度来度量他们之间的距离
ListMLE说定义的目标函数则是基于极大似然估计的。ListMLE算法是一种基于Luce模型的排序算法,虽然ListMLE算法后于ListNet算法出现,但从性能上看并不优于ListNet。
基于直接优化评估标准的排序算法
针对Pairwise算法“优化目标和评价目标的不一致性”,即算法的学习目标为“最小化错误对“而学习后的评价标准却为MAP、NDCG等,但是结果通常是错误对越少MAP值却变得不好,因此提出了”直接优化评估标准“的排序算法。
该算法的基本思想是:首先定义一个面向某具体评估标准(MAP或NDCG等)的学习目标,然后选择合适的机器工具和优化算法进行求解,在此基础上构造更符合用户检索需要的排序模型。
Listwise算法的缺点在于:需要选取合适的目标来代替原有的“非光滑”的优化目标以及难以选取合适的优化算法进行求解。
点击率预估
在推荐系统中,对于推荐结果的点击率预估主要从两方面进行考虑:一种为基于相似性的方法,即考虑待推荐物品与用户点击历史物品之间的相似性,相似性大的物品赋予较大的点击可能性。另一种为基于概率的方法,即从推荐物品的点击概率值得大小方面考虑,点击概率较大的赋予较大的点击可能性。
目前点击率预估算法主要应用在广告投放上,但是在推荐系统中也可以考虑同样的方法。目前比较主流的点击率预估算法有:SVM、逻辑回归、贝叶斯、层次模型,时间空间模型、聚类、决策规则、条件随机模型等,下面对逻辑回归和贝叶斯网做一个介绍。
逻辑回归
逻辑回归模型是一个比较简单的模型 ,模型通过构建用户对目标点击的概率模型,来实现点击率预估。逻辑回归模型需要有历史数据,其中历史数据主要包括两个方面:历史的目标和用户的交互数据。逻辑回归模型需要用户提取特征,然后通过对历史数据的训练,构建出预测模型,然后对未知的目标进行点击率的预估。
逻辑回归模型实现的主要步骤如下:
特征选取:特征选取主要从两个方面去考虑,一方面是目标的特征,另一方面是用户的特征(特征选取是一大难题,要怎么样才能更好的刻画用户对目标的兴趣)
特征的验证及判断:直接观察法,卡方检验,单特征AUC等。
特征的处理与使用:离散化,交叉,连续特征离散化等
特征的过滤与修正:如果某些特征对点击预估性不强,对应的权重将变成0,不会影响预估。
模型训练:利用已有数据集及特征,用逻辑回归进行模型的训练,最终得到目标被点击的概率值,得出最终的排序。
动态贝叶斯网络方法
贝叶斯网是一种帮助人们将概率统计应用于需要复杂计算的领域,进行不确定性推理和数据分析的工具,也是一种图形化的表示变量间的联合概率分布函数的图形化模型。构建一个BN的主要部分是一个结构模型和一组条件概率分布。结构模型是一个DAG图,图中的节点是一些随机变量,用来描述事件、状态等实体的特征,图中的边用来描述节点之间的直接依赖关系。BN使用一个DAG刻画了变量之间的依赖关系和独立关系,这样,一个BN就将与一系列节点相关的条件概率分布函数组合成为一个整体的联合概率分布函数。通过BN构建的概率模型来计算目标Item的点击概率。
- 360方案 相关技术(推荐、排序、点击率预估)
- 程序化点击率预估(CTR)
- 点击率预估
- 点击率预估
- 为什么要预估点击率
- 为什么要预估点击率
- 广告点击率预估模型
- 广告点击率预估是怎么回事?
- CTR点击率预估
- 点击率预估综述
- 点击率预估综述
- 业余草推荐阿里妈妈自研广告点击率预估核心算法MLR
- 逻辑回归 广告点击率预估
- CTR点击率预估干货分享
- CTR点击率预估干货分享
- 广告点击率预估中的特征选择
- naive bayes预估展示广告点击率
- 广告拍卖机制与点击率预估概述
- 关于performSelector调用和直接调用区别
- 基于X86 TMDA CSMA的嵌入式研究
- SQLServer2008 镜像配置详解
- C#中产生SQL语句的几种方式
- OpenCV中,将一个彩色视频文件以灰度格式输出
- 360方案 相关技术(推荐、排序、点击率预估)
- 单链表判断是否带环,环的接入点
- 【Struts2五】ValueStack以及ognl表达式三(iterator标签详解)
- 当出现UnhandledExceptionFilter时,如何用windbg 定位正确堆栈
- 解读Android之Service(3)AIDL
- JavaScript常用技巧
- Android Design Support Library 中控件的使用简单介绍(一)介绍 在这个 Lib 中主要包含了 8 个新的 material design 组件!最低支持 Android
- IOS内购支付服务器验证模式
- 普元级联菜单