Preference Learning——Object Ranking:Learning to Order Things

来源:互联网 发布:樱井翔堀北真希 知乎 编辑:程序博客网 时间:2024/06/08 04:34

这篇论文是Cohen1999年发表在Artificial Intelligence(A类)上的一篇文章,针对的是object ranking问题。

Abstract

归纳学习(inductive learning)中最受关注的是分类学习问题,而其实还有一类排名学习问题也很重要。可以基于概率分类器模型或者回归模型进行排名模型的构建。排名任务较分类任务更容易,因为偏好信息比标签更容易获取。比如说,一个用户在未读邮件列表中选择了第三封邮件进行阅读,虽然这并不一定表示第三封邮件是紧急邮件,也没有足够的信息来度量它的数值型紧急性,但是将第三条邮件排在其他邮件的前面这很明显是个不错的选择,这种偏好信息相对与用于分类或回归的信息更容易获取。获得这些偏好信息进而优化模型提供给用户更好的体验:根据用户特征对邮件中未读邮件进行个性化排名,等待用户阅读;根据用户对电影的评分信息,将电影进行排名然后生成推荐列表反馈给用户;再比如信息检索中根据与查询的相关性对网页进行排名;在推荐系统中,根据用户对商品的评分信息,对商品进行排名,实际上,用户的评分信息其实就是个偏好关系(但每个用户的同一个评分代表的偏好程度不相同);

Define Notations:

  • object ranking:训练数据集中样本之间的偏好关系,形如v优先于u,样本没有类标签只有特征数据。
  • X:样本集合{X1,X2…Xn},n表示样本个数。
  • f(v):f是排序函数(ordering function),f(u)>f(v)表示u排在v的前面。如果f(u)是正交符号(⊥),表示无法对u进行排序。

在传统的分类学习中,模型的假设是基于数据集的特征,而在偏好学习中,一个偏好函数可能是其它许多原始偏好函数的结合。我们通常会假设N个可获取的原始偏好函数:R1,R2…Rn.我们之后可以将这些原始偏好函数进行线性结合成一个新的偏好函数:

  • Rf:Rf是偏好函数(preference function ),由 f 排序函数(rank ordering)导出。如果Rf(u,v)=1表示更偏好u,Rf(u,v)=0表示更偏好v。当Rf(u,v)=1/2表示u和v无法进行比较。
    Rf
  • 看一个具体的例子:给定一个文档集合X={X1,X2…Xn},里面每个文档的属性是单词,取值为单词出现的频数,总共有N个单词属性{w1,w2…wn}。fi(u)表示文档u的第i个属性的出现频率。那么,Rfi将根据第i个属性的大小对文档进行排序。但是每个单词的重要性不同,因此需要对所有的偏好函数Rfi进行加权求最终的偏好关系。

学习完一组偏好函数Ri后,需要将其线性组合成一个统一的偏好函数PREF:

  • PREF(u,v ): 带权偏好函数(preference function ),取值在[0,1]区间。PREF(u,v)返回一个数值型数字,表示u应该排在v前面的确信度。当PREF(u,v )的值越接近1表示u排在v前面越可信,当PREF(u,v )为1/2时表示我们对u和v的排名关系不确定,这可以理解为放弃对其进行排名。

PREF

  • 看一个抽象的例子:其中f和g都是排序函数,分别对instance进行排序。将f和g转化为Rf和Rg,然后将其线性组合生成PREF得到带权的偏好函数。我们将偏好函数转化为一个有向图,图中边值就是PREF的值。我们的目的是找到一个排名使其尽可能的满足PREF偏好函数。

排序函数

Linear Combination

给定一个更具体的例子:一个元搜索应用程序(a metasearch application)的目标是对给定的一个查询,结合几个搜索引擎的结果然后对网页进行排名。比如有N个搜索引擎e1,e2…en。Li表示ei给出的网页排名列表。fi(u)=-k表示第ei将网页u排名为k,fi(u)=⊥,表示ei将没有出现在Li的网页的排名设为⊥。将这个例子一般化如下:

假设我们有若干个排名专家(ranking experts),每个ranking expert生成一个排序函数f。假设学习的过程迭代T次,每个ei给出一个排序函数fti(第t次迭代ei给出的排序函数),每次输入的训练集为Xt,此时的Xt包含了所有Lti(第t次迭代ei的排行榜)。然后生成Rti(第t次迭代第i个偏好函数),然后计算一个损失函数。通常我们随机初始化一个权值向量,然后对每个ranking expert的权值wi增量更新的。

  • 本文提出一个基于加权多数算法(weighted majority algorithm)和Hedge algorithm算法的增量更新求解w的算法(权值分配算法)。这个算法维护着一个正的权值向量wt=(wt1.wt2…wtn);w1i初始化为1/N。表示初始状态时,每个ranking expert的权重是相同的。然后每次计算带权偏好函数PREF;
    PREF

  • 每次迭代之后都会生成一个排序函数f,然后转化为R,线性结合为PREF,最后生成一个排名p;基于这个排名,用户会反馈一些新,这些信息分为以下两种:

    直接:通过询问用户将这个ranking expert生成的网页排名重排名
    间接:通过用户在网页上停留的时间将网页进行重排名

loss

  • 这个损失函数表示生成的R与反馈信息不同的平均概率。可以将这个反馈信息加上权值,比如不同的用户反馈的信息重要性不一样,这样模型会更复杂一些,对用户会有针对性;

  • w的迭代公式如下, 其中β是一个介于0到1的参数,Zt是一个归一化参数,使得w更新后所有权值和为1.:

W

  • 下面是本文提出的在线权值分配算法( on-line weight allocation algorithm)的伪代码:

Hedge

Ordering Instances

  • 在线权值分配算法中需要计算一个排名p(X的全排列),那么首先需要指出的是怎样衡量这个排名的好坏,因此提出了一个指标AGREE。对p中所有的p(u)>p(v)的元素对(u,v)都要计算它的PREF值,然后求和,最后对这个目标函数求最大化:

AGREE

  • 但是找到一个理想化的排名使得AGREE最大这个问题是一个NP-complete问题。因此本文就提出了一个贪心的求解算法greedy ordering algorithm

greedy ordering algorithm

  • 这个算法将PREF简单的看做是一个带权图,然后赋予每个节点v一个potential value π(v):节点v的out边的权值和-节点v的in边的权值和(通俗的理解:小于自己的人的比重减去大于自己的人的比重得到的就是自己的绝对位置)。该贪心算法每次在V中选择potential value 最大的那个节点,将其排名设置为p(t)=|V|,排名依次降低(p(v)=|V|,而V是在减少的),然后在V中剔除掉这个节点,以及这个节点对其他节点的影响。

这里写图片描述

  • 算法性能:

性能

  • 看一个具体的例子:

例子

π(b) = 2,  π(d) = 3/2,  π(c) = -5/4, π(a) = -9/4========>p(b)=4
π(d) = 3/2,  π(c) = -1/4, π(a) = -5/4========>p(d)=3
π(c) = 1/2, π(a) = -1/2========>p(c)=2,p(a)=1
排名顺序:b > d > c > a.

Improvements

  • 看一个例子:

左边是真实PREF关系(2k+2个偏好关系)
右边根据贪心算法:π(k+1)=2是最大的,因此首先最高排名为节点k+1,去掉k+1节点后,其他节点之间没有任何关系,因此随机排列。最后得到的排序关系有k+2个是满足真实偏好关系的,

例子

  • 对于上面这种问题,图中的偏好关系是偏序,因此找到任何一个排名只要包含这个偏序关系都将是最优解。

这个算法对PREF做了稍微的调整,对于有向图中两个节点之间的两条边,删除PREF(u,v)和PREF(v,u)中较小的一条,并且修改较大的那条边的值为|PREF(v,u)-PREF(u,v )|,当PREF(u,v)=PREF(v,u)=1/2时,两条边都删除掉。这样就构造了一个图,每对节点只有一条边。划分强连通图得到了两种类型的边:

inter-component edges:连接两个不同强连通图的边
intra-component edges:同一个连通图内部的边

如果两个强连通图之间有一条u到v的边,那么我们可以很确定p(u)>p(v).这样我们可以找到所有偏序关系。

  • 改进算法的第一步:根据inter-component edges导出的偏序关系将所有强连通图进行排序。具体的就是U中有若干个节点连接到U’中的若干个节点,那么认为U>U’.
  • 第二步:利用之前的贪心算法求出每个强连图内部节点之间的偏序关系,如果节点数较少,我们可以直接暴力求解。

SCC

  • 看个具体的例子:

SCC

求解步骤:
1.将PREF进行调整得到简化图
2.找到图中的强连通图:{a,c,d}和{b}
3.先对连通图进行排序(只要连通图1中有一条边指向连通图2,那么1就是优先的):{b}>{a,c,d}
4.再对每个连通图内部进行排序(利用前面的贪心算法):c>d>a
5.总的排序就是b>c>d>a

Experiments Set

  • 进行两组实验:

1.small graphs:由于真实的排序问题中,最优解无法得到,因此采用一些真实解可以利用暴力求解得到的小图来进行实验。度量的标准是实验排名与真实排名的差距。
2.large graphs:真实解未知,度量标准依赖于所有边的总的权值。

  • 算法对比:

除了最基本的贪心算法和改进的贪心算法之外,还有一个随机的算法用作参照:这个算法是随机的产生一个排列,然后输出这个排列的或者它的逆序中更好的一个排序(二选一)。其实随机算法通过大量实验,可以找到最优解,当然在实际应用中这是不可行的(暴力求解)。

Small Graphs Experiments

  • 实验设置

每个图只有九个或更少的节点,但是每个节点数量的图都生成10000个随机的图,并且随机生成PREF(u,v),PREF(v,u)=1-PREF(u,v)。而对于随机算法,计算10n个随机排列的平均性能(n是节点个数)。

  • 评估方法

其中分子里面的p是实验预测的排名,分母的p是真实的排名。 这个式子的结果就是预测的性能评估方法,越大表示预测越接近真实解

评估

  • 实验结果

将节点个数相同随机图(10000个)的计算的度量值进行求平均,然后得到下面这个实验结果图。

  • 当节点个数大于5时,贪心算法的性能比随机算法的性能要好并且时间复杂度一直很低。

结果

Large Graphs Experiments

  • 评估方法

对于每个节点数量的图我们同样随机生成10000个然后计算平均性能。由于在Large Graph中我们无法用暴力求解最优解,因此我们度量的标准是预测的排名满足真实PREF的程度。具体公式如下:分子是预测排名关系中有先后关系的PREF的差值和,分母是所有节点对之间的PREF的差值的和,总共有n(n1)/2对偏序关系。

评估

  • 实验结果

可以发现贪心算法和改进的贪心算法几乎性能相同,主要是因为大的随机图几乎就是一个强连通图。并且可以看到贪心算法明显的要比随机算法好

结果

Experimental for Metasearch

这是一个真实的排名问题:元搜索引擎,通过对这个问题的模拟实验我们可以学习到一个特有领域的搜索引擎。
之前描述了PREF,并没有告知怎么求PREF,然后讨论了根据PREF求解rank,现在通过一个实际的例子来学习PREF,并通过学到的PREF来对instances进行排名。

  • 测试用例(用来构建查询):

1.检索机器学习研究者的主页(ML)
2.检索大学的主页(UNIV)

  • 数据准备(事先搜集):

1.一个ML的列表(210行),包括名字,所属机构以及主页(URL)
2.一个UNIV列表(290行),包括名字和地理位置以及主页(URL)。
每一行都可以构建一个查询,每一个的URL都是唯一相关的页面

  • 查询的方式如下:

其中ML构建了16个ranking expert(每种类型的查询方式就是一个ranking expert),UNIV构建了21个ranking expert。
其中的NAME用人的全名或者大学的名称替换,PLACE用地理位置替换。
每个查询最后保留前30名的网页。

这里写图片描述

  • 实验的目的

学习如何组织这些ranking expert的排名(对各种ranking expert的赋予不同的权值)。

  • 形式化描述:

对于每个查询t,每个ranking expert有一个排名Li,对于排名第一的网页定义其ft1 =30,以此类推,最后一个网页ft30=1,将没有出现在Li中的网页的fti =0,Xt是所有ranking expert的并集。

  • 在进行这个实验的时候还添加了反馈信息,因为原有的偏好训练集并不能带来足够的信息,而反馈信息可以更进一步的改善模型的性能。

feedback生成方式设置了两种:
1.唯一相关的页面要优先于所有的页面
2.唯一相关的页面要优先于其前面所有的页面

Evaluation and Results

  • 评估方法

实验采取的评估方法式留出法中的留一法(leave-one-out):针对每个查询t,将其它所有的查询作为训练数据,然后利用训练到的模型对t进行查询获取查询后的网页排名。

  • 反馈信息

前面提到了两种反馈信息的设定,在一次查询中:
第一种反馈信息在每个ranking expert中是一样的(因为唯一相关页面是一样的)。
第二种每个ranking expert产生的排名不同,因此反馈信息也不一致(因为唯一相关页面的名次不一定相同)。因此,对ranking expert随机抽取100次,将median rank作为最终标准来产生反馈信息。

  • 性能度量

将学习率β=0.5(通常一个良好的学习速率)
实验度量的是每个ranking expert将唯一相关网页排名在前k名的查询t的数量.

  • 结果展示
    观察结果发现,单个的ranking expert的性能都要比整体的Learned System要差,就算是最好的ranking expert也没有超越Learned System,他们的性能相当,因此,学习一个整体的Learned System是很有必要的。
    结果

当然也可以采用其他的度量手段,比如相关网页排名的平均值等等。

0 0
原创粉丝点击