AdaRank和AdaBoost

这篇论文的题目是AdaRank: A Boosting Algorithm for InformationRetrieval。作者是微软亚洲研究院的的徐君和李航。

这篇文章的主要思想就是利用boosting算法的思想在learning to rank里直接优化评价方法(directoptimization of performance measure).涉及到learning to rankboosting的知识。

先说learning to rank

排序学习,是一种基于supervised learning 的排序方法。传统的排序方法一般是通过构造一个排序函数(scoring function)来实现,该排序函数可以体现不同的标准,在IR领域一般是按照相关度进行排序。在搜索引擎中,对于一条查询词query,搜索引擎将返回一个相关的文档document 列表,然后根据文档和查询词之间的相关度,对列表中的文档进行排序,然后返回给用户。如果传统的排序模型中参数较多的话,会使得经验方法调参特别困难。于是引入了机器学习的思想来解决这一问题,于是就有了learning to rank的出现。

再说boosting

起源:

Boosting是一种提高任意给定学习算法准确度的方法。它的思想起源于 Valiant提出的 PAC ( Probably Approxi mately Cor2rect)学习模型。Valiant和 Kearns提出了弱学习和强学习的概念 ,识别错误率小于1/2,也即准确率仅比随机猜测略高的学习算法称为弱学习算法;识别准确率很高并能在多项式时间内完成的学习算法称为强学习算法。同时 ,Valiant和 Kearns首次提出了 PAC学习模型中弱学习算法和强学习算法的等价性问题,即任意给定仅比随机猜测略好的弱学习算法 ,是否可以将其提升为强学习算法 ? 如果二者等价 ,那么只需找到一个比随机猜测略好的弱学习算法就可以将其提升为强学习算法 ,而不必寻找很难获得的强学习算法。1990年, Schapire最先构造出一种多项式级的算法 ,对该问题做了肯定的证明 ,这就是最初的 Boosting算法。一年后 ,Freund提出了一种效率更高的Boosting算法。但是,这两种算法存在共同的实践上的缺陷 ,那就是都要求事先知道弱学习算法学习正确的下限。1995年 , Freund和 schapire改进了Boosting算法 ,提出了 AdaBoost (Adaptive Boosting)算法,该算法效率和 Freund于 1991年提出的 Boosting算法几乎相同 ,但不需要任何关于弱学习器的先验知识 ,因而更容易应用到实际问题当中。之后 , Freund和 schapire进一步提出了改变 Boosting投票权重的AdaBoost . M1,AdaBoost . M2等算法 ,在机器学习领域受到了极大的关注。只要理解了AdaBoost的思想也就很容易理解Adarank的思想。

简单介绍下AdaBoost

AdaBoost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器,即弱分类器,然后把这些弱分类器集合起来,构造一个更强的最终分类器。算法本身是改变数据分布实现的,它根据每次训练集之中的每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改权值的新数据送给下层分类器进行训练,然后将每次训练得到的分类器融合起来,作为最后的决策分类器。

使用AdaBoost分类器可以排除一些不必要的训练数据特征,并将关键放在关键的训练数据上面

AdaBoost算法的具体描述如下:

假定X表示样本空间,Y表示样本类别标识集合,假设是二值分类问题,这里限定Y={-1,+1}。令S={(Xi,yi)|i=1,2,…,m}为样本训练集,其中Xi∈X,yi∈Y。

1.  ①     始化m个样本的权值,假设样本分布Dt为均匀分布:Dt(i)=1/m,Dt(i)表示在第t轮迭代中赋给样本(xi,yi)的权值

②     令T表示迭代的次数

2.  ③   For t=1 to T d

3.根据样本分布Dt训练分类器ht。

4.用分类器ht对原训练集S中的所有样本分类。

5.得到本轮的分类器ht:X →Y,并且有误差εt=Pri-Di[ht(xi) ≠yi]。

6.令αt=(1/2)ln[(1-εt)/ εt]。

7.更新每个样本的权值

8.

9.end for

10.      ④     最终的预测输出为:



          

其中:


看完AdaBoost,AdaRank还会远吗?

AdaRank General FrameWork


下面是本文用到的一些字母符号:


 E表示的评价方法,可以是Map也可以是NDCG,只要取值在[-1,1]之间即可

算法:

1.     初始化,初始化查询词的重要性分步。刚开始每个查询词的重要性分步都是相同的.

2.      2.训练弱排序模型。利用当前查询词的重要性分步以及指定的评价标准,计算当前弱排序模型的权重,并将其线性的加入到以前的排序模型中。

3.     3.更新每个查询词的重要性分步。根据指定的评价标准衡量当前的排序模型对每个查询词的排序结果,并由此设置下一轮每个查询词的重要性分步,以使下一轮的训练算法中重点照顾那些困难的查询词,即根据指定的评价标准得分不是很高的查询词。



AdaRank是基于boosting的算法,与AdaBoost有很多相似,但也有不同最大不同:

更新权重的方法:

AdaBoost是根据当前的权重分步以及当前弱分类器的表现

而AdaRank则是根据当前的权重分步以及到目前为止构造的弱排序器模型的表现。



既然是基于boosting的算法,因此需要知道弱学习器学习正确率的下限。

本文也给出了证明:


Experiment Results:

弱学习器的构建

可以根据样本分步进行有放回的抽样,利用样本的子集构建。

In thispaper ,choose the feature that has the optimal weighted performance among allof the features:


没有被选中的features 的权重为0。

作者对构建弱学习器的解释:

The construction of weak learner is basedon the re-weighted training data. The learning process is: reweighting thequeries (and documents) with the current model, constructing the weak rankerbased on reweighted queries (also documents), determining the \alpha’s.

In the paper, we used one feature as a weakranker, i.e., given the reweighted queries, we scan all of the features. Foreach feature, we tested the MAP (or NDCG) on the re-weighted training queries,and chose the best one

数据集用的为:OHUMEd、WSJ、AP and Gov

结果略。

参考:

AdaRank:ABoosting Algorithm for information retrieval

 



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值