标签:
这篇论文是Cohen1999年发表在Artificial Intelligence(A类)上的一篇文章,针对的是object ranking问题。
在归纳学习(inductive learning)中最受关注的是分类学习问题,而其实还有一类排名学习问题也很重要。可以基于概率分类器模型或者回归模型进行排名模型的构建。排名任务较分类任务更容易,因为偏好信息比标签更容易获取。举几个例子,根据用户特征对邮件中未读邮件进行个性化排名,等待用户阅读。根据用户对电影的评分信息,将电影进行排名然后生成推荐列表反馈给用户。再比如信息检索中根据与查询的相关性对网页进行排名。在推荐系统中,根据用户对商品的评分信息,对商品进行排名,实际上,用户的评分信息其实就是个偏好关系(但每个用户的同一个评分代表的偏好程度不相同)。
看一个抽象的例子:其中f和g都是排序函数,分别对instance进行排序。将f和g转化为Rf和Rg,然后将其线性组合生成PREF得到带权的偏好函数。
看个具体的例子:给定一个文档集合X,里面每个文档的属性是单词,取值为单词出现的频数,总共有N个属性{w1,w2…wn}。fi(u)表示文档u的第i个属性的出现频率。那么,Rfi将根据第i个属性的大小对文档进行排序。但是每个单词的重要性不同,因此需要进行加权求最终的排名。
再看一个更具体的例子:一个元搜索应用程序(a metasearch application)的目标是对给定的一个查询,结合几个搜索引擎的结果然后对网页进行排名。比如有N个搜索引擎e1,e2…en。Li表示ei给出的网页排名列表。fi(u)=-k表示第ei将网页u排名为k,fi(u)=-M(M>|Li|)表示ei将没有出现在Li的网页的排名设为W。
假设我们有若干个排名专家(ranking experts),每个ranking expert生成一个排名函数。对每个ranking expert的权值wi是增量更新的。假设学习的过程迭代T次,每次输入的训练集为Xt,每个ei给出一个排序函数fti(第t次迭代ei给出的排序函数),此时的Xt包含了所有Lti(第t次迭代ei的排行榜)。然后生成Rti(第t次迭代第i个偏好函数),然后计算一个损失函数。
feedback生成方式分两种:
1.唯一相关的页面要优先于所有的页面
2.通过收集某个用户的点击数据,认为相关页面要优先于其前面的所有的页面feedback其他方式:
1.直接:通过询问用户将这个ranking expert生成的网页排名重排名
2.间接:通过用户在网页上停留的时间将网页进行重排名
然后再利用Hedge algorithm算法,这个算法维护着一个正的权值向量wt=(wt1.wt2…wtn),w1i初始化为1/N。表示初始状态时,每个ranking expert的权重是相同的。然后每次计算带权偏好函数PREF:
其中β是一个介于0到1的参数,Zt是一个归一化参数,使得w更新后所有权值和为1.
在Hedge algorithm中需要计算一个排名p,那么首先需要指出的是怎样衡量这个排名的好坏,因此提出了一个指标AGREE:
但是找到一个理想化的排名使得AGREE最大这个问题是一个NP-complete问题。因此本文就提出了一个贪心的求解算法greedy ordering algorithm:
在这个算法中,可以将PREF看成是一个有向带权图,其中边(u,v)的权值就是PREF(u,v)。可以发现π()函数实际是PREF出度减入度并且这个算法中,排名依次降低(p(v)=|V|,而V是在减少的)。
左边是真实PREF关系(2k+2个偏好关系)
右边是根据贪心算法得到的排序关系有k+2个是满足真实偏好关系的
逼近程度:1/2
这个算法对PREF做了稍微的调整,对于有向图中两个节点之间的两条边,删除PREF(u,v)和PREF(v,u)中较小的一条,并且修改较大的那条边的值为|PREF(v,u)-
PREF(u,v )|,当PREF(u,v)=PREF(v,u)=1/2时,两条边都删除掉。
求解步骤:
1.将PREF进行调整得到简化图
2.找到图中的强连通图:{a,c,d}和{b}
3.先对连通图进行排序(只要连通图1中有一条边指向连通图2,那么1就是优先的):{b}>{a,c,d}
4.再对每个连通图内部进行排序(利用前面的贪心算法):c>d>a
总的排序就是b>c>d>a
1.small graphs:由于真实的排序问题中,最优解无法得到,因此采用一些真实解可以利用暴力求解得到的小图来进行实验。度量的标准是实验排名与真实排名的差距。
2.large graphs:真实解未知,度量标准依赖于所有边的总的权值。
除了最基本的贪心算法和改进的贪心算法之外,还有一个随机的算法用作参照:这个算法是随机的产生一个排列,然后输出这个排列的或者它的逆序中更好的一个排序(二选一)。其实随机算法通过大量实验,可以找到最优解,当然在实际应用中这是不可行的(暴力求解)。
每个图只有九个或更少的节点,但是每个节点数量的图都生成10000个随机的图,并且随机生成PREF(u,v),PREF(v,u)=1-PREF(u,v),而对于随机算法,评估10n个随机排列的平均性能(n是节点个数)。
其中分子里面的p是实验预测的排名,分母的p是真实的排名。 这个式子的结果就是预测的性能评估方法,越大表示越接近真实解。
将节点个数相同随机图(10000个)的计算的度量值进行求平均,然后得到下面这个实验结果图。
当结点个数大于5时,贪心算法的性能比随机算法的性能要好并且时间复杂度一直很低。
分子是预测排名关系中有先后关系的PREF的差值和 分母是所有节点对之间的PREF的差值的和
可以发现贪心算法和改进的贪心算法几乎性能相同,主要是因为大的随机图几乎就是一个强连通图。并且可以看到贪心算法明显的要比随机算法好。
这是一个真实的排名问题:元搜索引擎。
之前描述了PREF,并没有告知怎么求PREF,然后讨论了根据PREF求解rank,现在通过一个实际的例子来学习PREF,并通过学到的PREF来对instances进行排名。
Preference Learning——Object Ranking:Learning to Order Things
标签:
原文地址:http://blog.csdn.net/zm714981790/article/details/51141259