前一阵子的AlphaGo和围棋很火,当时的AlphaGo在战胜kejie后排名世界第一;最近王者荣耀很火,它的排位赛机制中的内部匹配系统也十分令人诟病。不管是在围棋赛场,还是在多人竞技电子赛场上,排位系统是很重要的。常见的算法有:Elo,TrueSkill™。

Elo在上一篇已经介绍,再来看下TrueSkill算法。更详细情况可见MS的paper。

TrueSkill排名系统是一个为MS的Xbox Live平台开发的基于实力(skill)的排名系统。排名系统的目的是,标识和跟踪玩家在一场比赛中的实力,以便能将他们匹配到有竞争的比赛上(王者中有“质量局”一说,估计是这个意思)。TrueSkill排名系统只使用在一场比赛中所有队伍的最终战绩,来更新在游戏中的所有玩家的实力估计(排名)。

1.介绍

在竞技游戏和体育中,实力排名(Skill rating)主要有三个功能:首先,它可以让玩家能匹配到实力相当的玩家,产生更有趣、更公平的比赛。第二,排名向玩家和公众公开,以刺激关注度和竞技性。第三,排名可以被用于比赛资格。随着在线游戏的到来,对排名系统的关注度极大地提高,因为上百万玩家每天的在线体验的质量十分重要,危如累卵。

在1959年,Arpad Elo为国际象棋开发了一个基于统计学的排名系统,在1970年FIDE采纳了该排名。Elo系统背后的核心思想是,将可能的比赛结果建模成关于两个玩家的实力排名s1和s2的函数。在游戏中,每个玩家i的表现分$ p_i \sim N(p_i; s_i, \beta^{2}) $ ,符合正态分布,其中实力(skill)为$s_i$,相应的方差为$\beta^{2}$。玩家1的获胜概率,由他的表现分$p_1$超过对手的表现分$p_2$的概率来给定:

\[P(p_1 > p_2 | s_1, s_2) = \Phi(\frac{s_1-s_2}{\sqrt{2}*\beta})\]

…(1)

其中$ \Phi$表示零均值单位方差的高斯分布的累积密度(查表法取值)。在游戏结束后,实力排名s1和s2会更新,以至于观察到的游戏结果变得更可能,并保持s1+s2=const常数(一人得分,另一人失分)。假如如果玩家1获胜则y=+1; 如果玩家2获胜则y=-1; 如果平局则y=0. 接着,生成的Elo(线性增长)会更新为:$ s1 \leftarrow s1 + y\Delta, s2 \leftarrow s2 - y \Delta $, 其中:

\[\Delta = \alpha \beta \sqrt{\pi} (\frac{y+1}{2} - \Phi(\frac{s1-s2}{\sqrt{2} \beta}))\]

其中,$\alpha \beta \sqrt{\pi}$表示K因子, $ 0 < \alpha < 1$决定着新事实vs.老估计的权重。大多数当前使用Elo的变种都使用logistic分布(而非高斯分布),因为它对棋类数据提供了更好的拟合。从统计学的观点看,Elo系统解决了成对竞争数据(paired comparison data)的估计问题,高斯方差对应于Thurstone Case V模型,而logistic方差对应于Brad ley-Terry模型。

在Elo系统中,一个玩家少于固定场次的比赛数(比如20场),那么他的排名将被看作是临时的(provisional)。该问题由Mark Glickman的Bayesian排名系统Glicko提出,该系统引入了将一个选手的实力建模成高斯置值分布(Gaussian belief distribution:均值为$ \mu $, 方差为$\sigma^2$)的思想。

实力排名系统的一个重要新应用是多人在线游戏(multiplayer online games),有利于创建如下的在线游戏体验:参与的玩家实力相当,令人享受,公平,刺激。多人在线游戏提供了以下的挑战:

  • 1.游戏结果通常涉及到玩家的队伍,而个人玩家的实力排名对将来后续的比赛安排(matchmaking)也是需要的。
  • 2.当超过两个玩家或队伍竞赛时,那么比赛结果是关于队伍或玩家的排列组合(permutation),而非仅仅是决出胜者和负者。

paper中介绍了一种新的排名系统:TrueSkill,它可以在一个principled Bayesian框架下解决这些挑战。我们将该模型表述成一个因子图(factor graph,第2节介绍),使用近似消息传递(第3节介绍)来推断每个选手实力的临界置信分布(marginal belief distribution)。在第4节会在由Bungie Studios生成的真实数据(Xbox Halo 2的beta测试期间)上进行实验。

2.排名因子图(Factor Graphs)

在一个游戏中,总体有n个选手 {1, …, n},在同一场比赛中有k只队伍参与竞技。队伍分配(team assignments)通过k个非重合的关于玩家总体的子集 $ A_j \in \lbrace 1, …, n \rbrace $,如果 $ i \neq j$, $A_i \bigcap A_j = \emptyset $。比赛结果 $ r := (r_1, …, r_k) \in \lbrace 1, …, k \rbrace $,每个队伍j都会有一个排名$r_j$,其中r=1表示获胜,而$r_i=r_j$表示平局的概率。排名从游戏的得分规则中生成。

给定实际玩家的实力s,以及队伍的分配$A := \lbrace A_1, …, A_k \rbrace$,我们对游戏结果r建模其可能概率:$P(r|s, A)$。从贝叶斯规则(Bayes’ rule)可知,我们获得其先验分布为:

\[p(s|r,A) = \frac{P(r|s,A) p(s) }{p(r|A)}\]

…(2)

我们假设一个因子分解的高斯先验分布为:$p(s) := \prod_{i=1}^{n} N(s_i; \mu_i, \sigma^2)$。每个玩家i在游戏中的表现为: $ p_i \sim N(p_i; s_i, \beta^2)$,以实力$ s_i $为中心,具有方差为$\beta^2$。队伍j的表现$t_j$被建模成其队员的表现分的总和:$ t_j := \sum_{i \in A_j} p_i $。我们以排名的降序对队伍进行重排序:$r_{(1)} \leq r_{(2)} \leq … \leq r_{(k)}$。忽略平局,比赛结果r的概率被建模成:

\[P(r| \lbrace t1, ..., t_k \rbrace) = P(t_{r_{(1)}} > t_{r_{(2)}} >... > t_{r_{(k)}})\]

也就是说,表现的顺序决定了比赛结果的顺序。如果允许平局,获胜结果$r_{(j)} < r_{(j+1)} $需要满足 $r_{(j)} < r_{(j+1)} + \epsilon $,那么平局结果 $r_{(j)} = r_{(j+1)} $ 需要满足 $ |r_{(j)} - r_{(j+1)} | \leq \epsilon $,其中$\epsilon > 0$是平局临界值,可以从平局的假设概率中计算而来。(见paper注1)

注意:”1与2打平”的传递关系,不能通过关系 $ | t_1 - t_2| \leq \epsilon$进行准确建模,它是不能传递的。如果$ | t_1 - t_2| \leq \epsilon$ 和 $ | t_2 - t_3| \leq \epsilon$,那么该模型会生成一个三个队伍的平局,尽管概率满足$ | t_1 - t_3| \leq \epsilon$

在每场游戏后,我们需要能报告实力的评估,因而使用在线学习的scheme涉及到:高斯密度过滤(Gaussian density filtering)。后验分布(posterior)近似是高斯分布,被用于下场比赛的先验分布(prior)。如果实力与期望差很多,可以引入高斯动态因子 $ N(s_{i,t+1}; s_{i,t}, \gamma^2) $,它会在后续的先验上产生一个额外的方差成分$\gamma^2$。

例如:一个游戏,k=3只队伍,队伍分配为 $ A_1 = \lbrace 1 \rbrace $, $ A_2=\lbrace 2,3 \rbrace $,$ A_3 = \lbrace 4 \rbrace $。进一步假设队伍1是获胜者,而队伍2和队伍3平局,例如:$ r := (1, 2, 2) $。我们将产生的联合分布表示为:$ p(s,p,t |r,A)$,因子图如图1所示。

图1: 一个TrueSkill因子图示例。有4种类型的变量:$s_i$表示所有选手的实力(skills),$p_i$表示所有玩家的表现(player performances),$ t_i $表示所有队伍的表现(team performances),$ d_j $表示队伍的表现差(team performance differences)。第一行因子对(乘:product)先验进行编码;剩下的因子的乘积表示游戏结果Team 1 > Team 2 = Team 3的似然。箭头表示最优的消息传递schedule:首先,所有的轻箭头消息自顶向底进行更新。接着,在队伍表现(差:difference)节点的schedule按数的顺序进行迭代。最终,通过自底向顶更新所有平局箭头消息来计算实力的后验。

因子图是一个二分图(bi-partite graph),由变量和因子节点组成,如图 1所示,对应于灰色圆圈和黑色方块。该函数由一个因子图表示————在我们的示例中,联合分布 $ p(s,p,t |r,A) $ ————由所有(潜在)函数的乘积组成,与每个因子相关。因子图的结构给定了因子间的依赖关系,这是有效推断算法的基础。回到贝叶斯规则(Bayes’ Rule)上,给定比赛结果r和队伍关系A,最关心的是关于实力的后验分布$p(s_i | r,A)$。$p(s_i | r, A)$从联合分布中(它集成了个人的表现{pi}以及队伍表现{ti})进行计算。

\[p(s | r, A) = \int_{-\infty}^{\infty}...\int_{-\infty}^{\infty}dp dt.\]

图2: 对于平局临界值$\epsilon$的不同值的近似临界值的更新规则。对于一个只有两只队伍参加的比赛,参数t表示胜负队伍表现的差值。在胜者列(左),t为负值表示一个意料之外的结果会导致一个较大的更新。在平局列(右),任何队伍表现的完全误差都是令人意外,会导致一个较大的更新。

3.近似消息传递(Approximate Message Passing)

在因子图公式中的和积算法(sum-product algorithm)会利用(exploits)图的稀疏连接结构,来通过消息传递(messgage passing)对单变量临界值(single-variable marginals)执行有效推断(ecient inference)。连续变量的消息传递通过下面的方程表示(直接符合分布率):

\[p(v_k) = \prod_{f \in F_{v_k}} m_{f \rightarrow v_k}(v_k)\]

…(3)

\[m_{f \rightarrow v_j}(v_j) = \int ... \int f(v) \prod_{i \neq j} m_{v_i \rightarrow f}(v_i) dv_{ \backslash j}\]

…(4)

\[m_{v_k \rightarrow f}(v_k) = \prod _{\hat{f} \in F_{v_k} \backslash {f}} m_{\hat{f} \rightarrow v_k} (v_k)\]

…(5)

其中$F_{v_k}$表示连接到变量$v_k$的因子集,而 $ v_{\backslash j} $则表示向量v除第j个元素外的其它成分。如果因子图是无环的(acyclic),那么消息可以被精确计算和表示,接着每个消息必须被计算一次,临界值 $ p(v_k) $可以借助等式(3)的消息进行计算。

从图1可以看到,TrueSkill因子图实际上是无环的,消息的主要部分可以被表示成1维的高斯分布。然而,等式(4)可以看到,从比较因子($I(\cdot > \epsilon) $)a或($ I(\cdot \leq \epsilon)$)到表现差$d_i$去的消息2和5并不是高斯分布的——实际上,真实的消息必须是(非高斯分布)因子本身。

根据期望传播算法(EP: Expectation Propagation),我们将这些消息作近似,通过将临界值$ p(d_i)$通过变化的矩匹配(moment matching)产生一个高斯分布$ \hat{p}(d_i) $,它与$ p(d_i) $具有相同的均值和方差。对于高斯分布,矩匹配会最小化KL散度。接着,我们利用(3)和(5)得到:

\[\hat{p}(d_i) = \hat{m}_{f \rightarrow d_i}(d_i) \cdot m_{d_i \rightarrow f}(d_i) \Leftrightarrow \hat{m}_{f \rightarrow d_i}(d_i) = \frac{\hat{p}(d_i)}{m_{d_i \rightarrow f}}(d_i)\]

…(6)

表1给出了所有的更新方程,这些等式对于在TrueSkill因子图中的推断是必要的。top 4的行由标准的高斯积分产生。底部的规则是由上述的矩匹配(moment matching)产生。第4个函数是对一个(双倍)截断式高斯分布的均值和方差的加乘校正项:

\[V_{I(\cdot > \epsilon)}(t, \epsilon) := \frac{N(t-\epsilon)}{\Phi(t-\epsilon)}, W_{I(\cdot > \epsilon)}(t, \epsilon) := V_{I(\cdot > \epsilon)}(t, \epsilon) \cdot (V_{I(\cdot > \epsilon)}(t, \epsilon) + t - \epsilon)\] \[V_{I(\cdot > \epsilon)}(t, \epsilon) := \frac{N(-\epsilon - t) - N(\epsilon -t)}{\Phi(\epsilon -t) - \Phi(-\epsilon -t) }\] \[V_{I(\cdot > \epsilon)}(t, \epsilon) := V_{I(\cdot > \epsilon)}^2(t, \epsilon) + \frac{(\epsilon -t) \cdot N(\epsilon -t) + ( \epsilon + t) N(\epsilon +t )}{\Phi(\epsilon -t) - \Phi(-\epsilon -t)}\]

表1: 对于缓存的临界值p(x)的更新方程、以及对于一个TrueSkill因子图中所有因子类型的消息$m_{f \rightarrow x}$。我们根据标准参数来表示高斯分布 $ N(\cdot; \mu, \sigma) $:准确率(precision) $ \pi := \delta^{-2} $,准确率调和平均(precision adjusted mean)$ \tau := \pi \mu $。以及关于该消息或从(6)获得的临界值的缺失的更新方程

由于消息2和消息5是近似的,我们需要对所有消息在任意两个近似临界$\hat{p}(d_i)$的最短路径上进行迭代,直到该近似临界值几乎不再改变。产生的最优化的消息传递schedule可以在图1中发现。(箭头和大写)

4.试验和在线服务

4.1 Halo 2 Beta Test

为了评估TrueSkill算法的表现,我们在Bungie Studios的游戏Xbox Halo 2的beta测试阶段生成的游戏结果数据集上进行试验。数据集包含了成千上万的游戏结果,包含4种不同的游戏类型:8个玩家自由对抗(自由模型),4v4(小队模式), 1v1, 8v8(大队模式)。每个因子节点的平局临界$\epsilon$通过统计队伍间平局的比例(“期望平局概率”)进行设置,将平局临界$\epsilon$与平局的概率相关联:

\[draw-probability = \Phi(\frac{\epsilon}{\sqrt{n_1+n+2}}\beta) - \Phi(\frac{-\epsilon}{\sqrt{n_1+n_2}\beta}) = 2 \Phi(\frac{\epsilon}{\sqrt{n_1+n_2}\beta}) - 1\]

其中n1和n2分别是两只队伍的玩家数目,可以与图1中的节点$ I(\cdot > \ epsilon)$或 $ I(|\cdot| \leq \epsilon)$相比较。表现的方差$ \beta^2 $和动态的方差 $ \gamma^2 $被设置成标准值(见下一节)。我们使用一个高斯表现分布(1)和 $ \alpha=0.07$在TrueSkill算法上与Elo作对比;这对应于Elo中的K因子等于24, 该值被认为是一个较好且稳定的动态值。当我们必须处理一个队伍的比赛时,或者超过两个队伍的比赛时,我们使用“决斗(duelling)”技巧:对于每个玩家,计算$ \Delta $,对比其它所有玩家,基于玩家的队伍结果、每个其它玩家的队伍结果、并执行一个$ \Delta $平均的更新。在最后一节描述的近似消息传递算法相当有效;在所有我们的实验中,排序算法的运行时在简单的Elo更新运行时的两倍以内。

预测表现(Predictive Performance) 下表表述了两种算法(列2和列3)的预测error(队伍在游戏之前以错误顺序被预测的比例)。该衡量很难被解释,因为排名(ranking)和比赛安排(matchmarking)会相互影响:依赖于所有玩家的(未知的)真实实力,最小的预测error可以达到最大50%。为了补偿该隐式的、未知的变量,我们在ELO和TrueSkill间安排了一个对比:让每个系统预测尽可能匹配的比赛,将它们应用在其它算法上。该算法会预测更多正确的比赛结果,能更好地匹配。对于TrueSkill,我们使用比赛安排标准(matchmaking criterion),对于Elo,我们使用在Elo得分中的差:$s_1 - s_2$。

匹配质量

排名系统的一个重要应用是,能够尽可能匹配到相似实力的玩家。为了比较Elo和TrueSkill在该任务上的能力,我们对比赛基于匹配质量(match quality)作划分,将两个系统应用到每场比赛上。如果匹配很好,那么很可能观察到平局。因而,我们可以画出平局的比例(所有可能的平局)在每个系统分配的匹配质量顺序上进行累积。在该图中,右侧可知,对于“自由模式(Free of All)”和1v1模式(Head to Head),TrueSkill比Elo更好。而在“4v4模式(Small Teams)”Elo比TrueSkill更好。这可能是因为额外的队伍表现模型(在该模式下大部分比赛是夺旗赛模式(Capture-the-Flag))的影响。

胜率(Win Probability)

一个排名系统的感观质量,可以通过获胜比例来衡量:如果获胜比例高,那么该玩家在该排名系统中分配太弱的对手是错误的(反之亦然)。在第二个试验中,我们处理了Halo 2数据集,但舍弃了那些没有达到一定匹配质量阈值的比赛。对于被选中的比赛,取决于每个玩家所玩的最低数目的比赛数,我们计算了每个玩家的获胜概率,来测量获胜概率与50%(最优获胜比例)的平均误差(越小越好)。产生的结果如图所示(在1v1模式下),它展示了TrueSkill模式下,每个参加了比较少比赛的玩家,会获得更公平的匹配(胜率在35%-64%)。

收敛性能(Convergence Properties)

最后,我们画出了两个典型的、在自由模式下(Free for All)两个最高排名的玩家的收敛轨迹:(实线:TrueSkill;虚线:Elo)。如上所见,TrueSkill会自动选择正确的learning rate,而Elo只会对目标实力做较慢的收敛。实际上,TrueSkill与信息论极限(information theoretic limit )更接近: nlog(n)位来编码n个玩家的排名。对于8个玩家的比赛,信息论极限是 $ log(n) / log(8) \approx 5$,每个玩家平均5场比赛,而这两位观察到的玩家的收敛约等于10场比赛!

4.2 Xbox 360 Live上的TrueSkill

微软的XBox Live主要是在线游戏服务。世界各地的玩家一起玩,他们具有不同的成百上千个头衔。在2005.9, XBox Live具有超过200w的订阅用户,在该服务上花费13亿个小时。新的改进版Xbox 360 Live服务使用TrueSkill算法来提供自动玩家排名(automatic player rating)和比赛安排(matchmaking)。该系统会每天处理成千上万的游戏比赛,使它成为贝叶斯推断(Bayesian inference)的最大应用。

在Xbox Live上,我们使用了一个数值范围,由先验$ \mu_0=25$和$ \delta_0^2=(25/3)^2$给定,对应于接近99%的正向实力概率。表现的方差由$\beta^2 = (\sigma_0/2)^2$给定,动态方差则选择$ \gamma^2 = (\sigma_0 / 100)^2 $。一个玩家i的TrueSkill实力,目前被表现为一个保守的实力估计,由低于1%的分位数$ \mu_i-3\delta_i$给定。该选择确保了排行榜(一个根据$\mu-3\delta得到的所有玩家列表$)的top榜单只可能被那些具有较高实力、更高确定度(certainty)的玩家占据,它们从$ 0=\mu_0 - 3 \delta_0$开始逐步建立。对玩家的成对比赛安排(Pairwise matchmaking),使用从相对最高可能的平均概率的平局概率派生而来的匹配质量准则来执行,取极限$ \epsilon \rightarrow 0 $,

\[q_{draw}(\beta^2, \mu_i, \mu_j, \sigma_i, \sigma_j) := \sqrt{\frac{2\beta^2}{2\beta^2 + \sigma_i^2 + \sigma_j^2}} \cdot exp(-\frac{(\mu_i - \mu_j)^2}{2 (2\beta^2 + \sigma_i^2 + \sigma_j^2)})\]

…(7)

注意,比赛安排过程(matchmaking process)可以被看成是一个逐次实验设计(sequential experimental design)的过程。因为一个匹配质量由它的结果的不可预知性(unpredictability)决定,比赛安排和发现最有益匹配的目标是为了均衡(align)。

另一个吸引人的副产品是,我们有机会在成千上万的玩家上学习TrueSkill的运转。而我们只开始分析大量的结果数据,已经有一些有趣的观察结果。

  • 1.比赛随有效实力等级的数目的不同而不同。机遇型游戏(Games of chance)(例如:单场双陆棋比赛或UNO)具有更窄的实力分布,而凭实力取胜的游戏(Games of skill)(例如:半实况的竞速比赛)具有更宽的实力分布。
  • 2.比赛安排(Matchmaking)和实力展示(skill display)会对玩家产生一个反馈循环,玩家经常会看它们的实力估计作为表现的奖惩。一些玩家试图通过:不玩、小小选择对手、或者作弊来保护或提升它们的实力排名。
  • 3.如果是新玩家,通常会在最初的几场比赛时失利,总的实力分布会偏移到先验分布之下。而当实力会初始化重置后,我们发现更准的比赛安排的效果会消失。

5.结论

TrueSkill一是个全局部署Bayesian的实力排名系统,它基于在因子图的近似消息传递。比起Elo系统,它具有许多理论和实际的优点,并在实践中运行良好。

而我们主要关注TrueSkill算法,在因子图框架内可以开发许多更多有趣的模型。特别的,因子图公式可以被应用到受限制的分类模型族(the family of constraint classication models),它包含了更宽范围的多分类和排名算法。另外,作为对个人实体进行排名的替代,你可以使用特征向量来构建一个排名函数,例如,对于网页可以表述成bags-of-words。最终,我们计算运行一个关于棋类游戏的完全时间独立的EP分析,来对获得关于象棋大师的TrueSkill排名。

6.实现

trueskill的一个python实现:http://trueskill.org/

另外,MS还提供了一个在线模拟器,这个可以结合着去理解:http://boson.research.microsoft.com/trueskill/rankcalculator.aspx

关于TrueSkill的数学基础,详见:http://www.moserware.com/assets/computing-your-skill/The%20Math%20Behind%20TrueSkill.pdf

参考

前一阵子的AlphaGo和围棋很火,当时的AlphaGo在战胜kejie后排名世界第一;最近王者荣耀很火,它的排位赛机制中的内部匹配系统也十分令人诟病。不管是在围棋赛场,还是在多人竞技电子赛场上,排位系统是很重要的。常见的算法有:Elo,TrueSkill™。

先来看下Elo算法。

1.介绍

Elo排名系统(Elo rating system)用于计算竞技比赛(比如:chess)的相对技能等级。它由 Arpad Elo创建。Elo系统(Elo system)的发明最初用于改善棋类排名系统,但后来也被用于多人竞技电子游戏:实况足球,等。

两个选手(player)在排名系统的不同,可以用来预测比赛结果。两个具有相同排名(rating)的选手相互竞争时,不管哪一方获胜都会得到相同的得分(score)。如果一个选手的排名(rating)比他的对手高100分,则得64%;如果差距是200分,那么排名高的选手的期望得分(expected score)应为76%。(可以理解为,获胜的机率更高)

一个选手的Elo rating由一个数字表示,它的增减依赖于排名选手间的比赛结果。在每场游戏后,获胜者将从失利方获得分数。胜者和败者间的排名的不同,决定着在一场比赛后总分数的获得和丢失。在高排名选手和低排名选手间的系列赛中,高排名的选手按理应会获得更多的胜利。如果高排名选手获胜,那么只会从低排名选手处获得很少的排名分(rating point)。然而,如果低排名选分爆冷获胜(upset win),可以获得许多排名分。低排名选手在平局的情况下也能从高排名选手处获得少量的得分。这意味着该排名系统是自动调整的(self-correcting)。长期来看,一个选手的排名如果太低,应比排名系统的预测做得更好,这样才能获得排名分,直到排名开始反映出他们真正的实力。

2.历史

Arpad Elo是大师级棋手,参加了美国国际象棋协会(USCF)。USCF原先使用由Kenneth Harkness一个数值排名系统,允许成员以分值的形式来记录他们的私人成绩,而非比赛的胜负场次。Harkness system 相当公平,但在一些情况下,会导致许多人认为是不准确的排名。为了USCF,Elo提出了一种新的基于统计学基础的系统。

Elo的核心假设是,每个选手在每场国际象棋上的表现水平是一个正态随机变量。尽管一个选手从这一场到下一场的表现或好或差,Elo假设每个选手的表现的均值随时间的变化很慢。Elo认为:一个选手的实力(true skill),就是选手表现(player’s performance)的随机变量的均值。

有必要做进一步假设,因为国际象棋的表现仍然是难以测量的。我们不能看到一连串的移动操作后就说:“该表现为2039分.” 比赛表现(Performance)只能从胜、平、负中看出。因此,如果一个选手赢下一场比赛,那么对于这场比赛来说,该选手比对手的表现的水平更高。相反的,如果选手失利,则认为表现的水平更低些。如果比赛平局,两个选手的水平相接近。

对比起胜或负,Elo没有精确指出两者在平局时的表现的接近程度。但他认为每个选手在表现上都有一个不同的标准差(standard deviation),他做了一个简化的假设。

为了简化计算,Elo提出了一种简单的方法来估计在模型中的变量(比如:每个选手的真实实力true skill)。计算相当简单,可以从表中进行,一个选手所期望获胜的场次,基于他的排名和对手排名决定。如果一个选手比所期望的得到更多获胜场次,他们的排名应向上调整,如果比期望的获胜场次较少,则向下调整得分。然而,这些调整与超出或少于期望胜场数的场次成线性比例。

从现代的角度看,Elo的简化版假设是没必要的,因为幂计算(power)并不昂贵,被广泛采用。再者,在简化版模型中,许多有效的估计技术很有名。最著名的有Mark Glickman,提出使用许多复杂的统计机制来估计相同的变量。另外,Elo system的计算简单性被证明是宝贵财富之一。有了便携计算器的帮助,一个选手可以计算接下来的正式发布的排名,误差在一分之内,从而帮助理解排名是公平的。

3. elo’s scheme的实现

USCF在1960年实施Elo的建议,该系统快速获得认可,比Harkness rating system更准,更公平。Elo的系统在1970年被世界国际象棋联盟(FIDE)采纳。Elo在1978年出版的《The Rating of Chessplayers,Past and Present》一书中详细描述了它的工作。

随后的统计测试已经表明,国际象棋的水平表现几乎不是正态分布。选手越弱,但获胜机率总是大于Elo模型的给出的预测机率。因此,USCF和一些国际象棋网站采用了基于logistic分布的公式。当在国际象棋中使用logistic分布时,已经发现了极大的统计异常现象。FIDE继续使用由Elo提出的排名差距表(rating difference table)。该表使用期望0, 标准差为2000/7进行计算.

在某种程度上,正态分布和logistic分布中的点,是在连续分布(a spectrum of distributions)上的任意点,它们都能良好工作。实际上,这些分布对许多不同的游戏都能良好运转。

3.1 不同的排名系统

短语”Elo rating“经常被用来表示由FIDE计算的一个选手的chess rating。然而,该用法是有冲突和混淆的,因为Elo的思想已经被许多组织采用:FIDE、ICC、FICS、PCA、Yahoo!Games。每个组织都有自己的实现,都不会按原始的Elo建议来实现。上述所有的ratings都可以认为是Elo ratings。

每个棋手由不同的组织授于的rating,比如:在2002年8月,Gregory Kaidanov具有FIDE rating: 2638分;具有USCF rating:2742分。注意,这些不同组织的Elo ratings不总是拿来直接对比的。例如,一个人可以有FIDE rating 2500分,而他的USCF rating可能接近2600分,ICC rating可能在(2500, 3100)分之间。

3.2 FIDE ratings

对于顶级选手,最重要的rating是FIDE rating。自2012年7月开始,FIDE每月更新顶级选手列表。

以下是2015年7月FIDE rating列表给出的统计:

  • 5323个选手具有active rating在2200-2299间,与候选大师(Candidate Master)的头衔相对应。
  • 2869个选手具有active rating在2300-2399间,与FIDE大师的头衔相对应
  • 1420个选手具有active rating在2400-2499间,大多数具有国际大师(International Master)或国际特级大师(International Grandmaster)称号。
  • 542个选手具有active rating在2500-2599间,它们具有国际特级大师(International Grandmaster)称号.
  • 187个选手具有active rating在2600-2699间,它们具有国际特级大师(International Grandmaster)称号。
  • 37个选手具有active rating在2700-2799间
  • 4个选手的rating超过2800.

FIDE rating的最高分为2882, Magnus Carlsen在2014年5月拿到。

3.3 表现排名(Performance rating)

表现排名分(Performance rating)是一个假设排名分,它只从一些赛事中产生。一些国际象棋组织使用”algorithm of 400”来计算表现排名(Performance rating)。根据该算法,表现排名(Performance rating)的计算根据下面的方式进行:

  • 1.对于每场胜利,你对手的rating加上400
  • 2.对于每次失利,你对手的rating减去400
  • 3.然后除以场次.

示例:2场胜利,2场失利

\[PR=\frac{w+400 + x+400 +y-400 + z-400}{4}\] \[=\frac{w+x+y+z+400(2) - 400(2)}{4}\]

因而可以用以下的公式来表述:

\[PR=\frac{\sum{所有对手的ratings} + 400 * (Wins-Losses)}{Games}\]

例如:如果你击败了一个具有Elo rating=1000的选手,那么你的表现排名为:

\[PR=\frac{1000+400*(1)}{1}=1400\]

如果你击败了两个Elo ratings=1000的选手,那么:

\[PR=\frac{2000+400*(2)}{2}=1400\]

如果和一选手打平了,则:

\[PR=\frac{1000+400*(0)}{1}=1000\]

这是一个简化版本,因为它没有采用K因子(该因子会在下面介绍),但它提供了一种简单的方式来获得PR(Performance Rating)的估计。

FIDE则通过下面公式的均值来计算performance rating:

对手排名平均值(Opponents’ Rating Average) + 排名差值(Rating Difference)

排名差值 (Rating Difference) $ d_p $基于一个选手的比赛得分百分数p,它被用作是在一个lookup table中的key值,其中p可以简单认为是取得得分的场数除以比赛场数。注意,最好的表现是800分。完整的表可以在FIDE handbook中找到。这里提供了一个简化版本的表。

p $d_p$
1.00 +800
0.99 +677
0.9 +366
0.8 +240
0.7 +149
0.6 +72
0.5 0
0.4 -72
0.3 −149
0.2 −240
0.1 −366
0.01 −677
0.00 −800

3.4 FIDE比赛类别

FIDE会根据选手的平均等级(average rating)将比赛分类。每个类别大多25个分值。类别1的平均等级分为2251-2275, 类别2的平均等级分为2276-2300等。对于女子比赛,类别则是更低的200, 因而类别1平均等级分为2051-2075等。最高级别的比赛是类别23,平均从2801-2825,为顶级的类别。

Category Minimum Maximum
14 2576 2600
15 2601 2625
16 2626 2650
17 2651 2675
18 2676 2700
19 2701 2725
20 2726 2750
21 2751 2775
22 2776 2800
23 2801 2825

3.5 实时排名(Live ratings)

FIDE每个月会更新它的rating列表。非官方的“Live ratings”会在每场比赛之间计算选手的ratings变化。这些Live ratings基于之前发布的FIDE ratings,因而,一个选手的Live rating和FIDE rating相对应。

3.6 USCF排名

  • 2400及以上:Senior Master
  • 2200-2399: National Master
    • 2200-2399, 300场比赛在2200分以上:Original Life Master
  • 2000–2199: Expert
  • 1800–1999: Class A
  • 1600–1799: Class B
  • 1400–1599: Class C
  • 1200–1399: Class D
  • 1000–1199: Class E
  • 800–999: Class F
  • 600–799: Class G
  • 400–599: Class H
  • 200–399: Class I
  • 0–199: Class J

总之,初学者在800分左右,中级选手在1600左右,职业选手在2400左右。

3.6.1 USCF使用的K因子

在USCF rating system中的K-factor, 可以通过将800除以该选手获得排名的有效场次$N_e$加上选手在比赛中完成的比赛场次m。

\[K=\frac{800}{N_e + m}\]

3.6.2 Rating底数(rating floors)

对于所有ratings,USCF维护着一个绝对的rating底数:100。这样,任何成员都不会在100分以下,不管他们的表现在USCF中是否受到过处罚。然而,各选手可以有更高的绝对rating底数,可以使用以下公式计算:

\[AF = min (100 + 4 N_w + 2 N_D + N_R, 150)\]

其中,$N_W$是获胜场次,$N_D$是平局场次,$ N_R $是选手完成三场或更好排名的赛事场次数目。

对于那些达到很高排名的有经验选手,会有更高的rating底数。这些更高的rating底数的存在,从ratings=1200开始到2100分,按100分递增(1200, 1300, 1400, …, 2100)。一个玩家的rating底数会采用它巅峰时的rating来计算,减去200分,接着下舍到最接近的rating底数上。例如,一个选手达到了一个peak rating=1464,它的rating floor=1464-200=1264, 向下舍入到1200. 在该模式下,只有Class C级别及以上的选手,具有更高的rating floor。所有其它的选手几乎都有floor=150。

比起上述标准的模式,还有两种方法来达到更高的rating floor。如果一个选手达成了Original Life Master的rating,它的rating floor会设置成2200. 该头衔是唯一的,不认可USCF头衔的其它组织会生成一个新的floor。对于rating在2000分以下的,在比赛中本不具备资格的选手,赢得2000美元及以上的现金奖,会提升选手的rating floor接近100分左右。例如,如果一个rating=1750的选手赢得4000美金,他会达到一个rating floor=1800。

4. 理论

成对比较(Pairwise comparisons)奠定了Elo rating方法的基础。

4.1 数学详解

表现(Performance)并不能被绝对化地衡量;它涉及到和其它选手比赛时的胜、负、平局。选手的排名(ratings)依赖于它们对手的排名,以及与他们的比赛结果。两个选手间排名的不同,决定了他们之间的期望得分的一个估计。对排名进行求平均和展开太过简单粗暴。Elo建议归一化排名(scaling ratings),因而在国际象棋中200个排名分的差异意味着,更强的选手会有一个接近0.75的期望得分(expected score:基本上是一个期望平均分),USCF初始会给普通的俱乐部选手1500排名分。

一个选手的期望得分(expected score),是他的获胜概率加上平局概率的一半。这样,期望得分=0.75就可以表示有75%的机会获胜,25%的机会失败,0%的机会平局。在另一个极端,它可以表示50%的机会获胜,0%的机会失败,50%的机会平局。平局的概率,在Elo的系统中未被指定。平局可以看成是一半获胜,一半失败(50% * 0.5)。

如果选手A具有排名分$R_A$,选手B具有排名分$R_B$,选手A的期望得分(expected score)的准确公式为(使用logistic曲线):

\[E_A=\frac{1}{1+10^{(R_B-R_A)/400}}\]

选手B的期望得分与选手A相类似:

\[E_B=\frac{1}{1+10^{(R_A-R_B)/400}}\]

也可以表示成:

\[E_A = \frac {Q_A}{Q_A + Q_B}\]

\[E_B = \frac {Q_B}{Q_A + Q_B}\]

其中,$ Q_A = 10^{R_A/400}$和 $ Q_B = 10^{R_B/400}$。注意,在后一个case中,两者使用相同分母。这意味着只需要通过学习分子,我们就能得到选手A的期望得分比选手B的期望得分大$ Q_A / Q_B$倍。每领先对手400排名分的优势,对比起对手的期望得分,该选手的期望得分会大10倍。注意,$ E_A + E_B = 1$,实际上,因为每个选手的真实实力是未知的,期望得分会使用选手的当前排名分来计算。

当一个选手的实际比赛得分超过他的期望得分,Elo系统会认为:该选手的排名过低了,需要向上调整。相似的,当一个选手的实际比赛得分低于他的期望分值时,该选手的排名分也会向下调整。Elo的原始观点是,一个选手高于或低于期望得分的量,成线性比例调整。每场比赛的最大可能调整,称为K因子(K-factor),对于Masters被设置成K=16, 对于较弱的选手设置成K=32.

假设选手A的期望得分为$E_A$,实际得分为$S_A$。排名更新公式为:

\[R'_A=R_A + K (S_A - E_A)\]

该更新会在每场比赛或锦标赛后,或者在合适的排名周期后被执行。举个例子:假设选手A具有rating=1613, 他会进行5轮的锦标赛。他输给了一个rating=1609的选手,和rating=1477的选手打平,分别战胜了rating=1388, 1586的选手,然后又输给了一个rating=1720的选手。该选手的实际得分为(0 + 0.5 + 1 + 1 + 0) = 2.5. 期望得分为:(0.51 + 0.69 + 0.79 + 0.54 + 0.35) = 2.88. 因此,该选手新的排名为(1613 + 32 *( 2.5 - 2.88)) = 1601, 假设使用K=32.

该更新过程是排名的核心,被使用在:FIDE, USCF, Yahoo! Games, ICC, FICS。 然而,每个组织都会采用不同的方式来处理自身排名中的不确定特性,尤其是新人的排名,以及处理排名的膨胀和通缩问题。新的选手会被分配临时排名,它们比已经确立的排名调整起来更剧烈。

这些排名系统所使用的方式也会被用到其它竞技比赛排名上——例如,国际足球比赛。Elo rating也可以应用在没有平局(只有胜负)的游戏中。

4.2 数学要点

Elo有三个主要的数据要点:正确的曲线,正确的K因子,临时周期的简单计算。

更精确的分布模型

USCF最早采用的是正态分布。它们发现实际结果与此并不太准确,尤其是对更低排名的选手。于是切换到logistic分布模型,USCF发现会提供更好的拟合。FIDE也使用logistic分布的近似。

更精确的K因子

第二个注意点是使用正确的K因子。国际象棋统计学家Jeff Sonas认为:在Elo中使用的原始的K=10(对于2400分以上的选手)是不准确的。如果K因子系数设置过大,排名会对最近少量的赛事过于敏感,每场比赛后大量分值会被交换。如果K值设置过小,则敏感度最低,该系统则不能对一个选手表现出的实际水平快速做出变化。

Elo的原始K因子估计,没有利用大数据量和统计证据。Sonas则指出:K因子=24(对于2400分以上的排名选手)更准确,即可以对将来表现做预测,也对现有表现更敏感。

固定的国际象棋网站基于排名范围来避免三个级别的K因子的交错。例如,除了当选手与临时选手比赛的情况之外,ICC会采用全局的K=32。USCF则根据三个主要的排名范围来调整K因子:

  • 小于2100以下的选手:K因子=32
  • (2100,2400)区间的选手:K因子=24
  • 大于2400的选手:K因子=16

FIDE则使用另外一套。详见wiki.

4.3 实际注意事项

游戏活跃度 vs. 排位保护

在一些情况下,排名系统会阻止那些希望保护排名的玩家的比赛活跃度。为了阻止玩家长期在高排位上,2012年,由英国特级大师John Nunn提出了一个提议来选择国际象棋世界冠军预选赛的要求:需包含一个活跃奖分(activity bonus),还应该结合排名。

在象棋世界之外,为担心选手躲避竞争来保护他们的排名,威世智(Wizards of the Coast)游戏公司在<万智牌:Magic: the Gathering>游戏比赛中放弃了Elo系统,采用了它们自己设置的“Planeswalker Points”。

选择匹配

一个更微妙的注意点关于配对问题(pairing)。当选手可以选择他的对手时,他们可以选择失败概率小些的对手,以便获胜。特别是2800分以上的选手,他们可以选择低风险的对手,包括:选择通过电脑可知在某种程度上可大概率战胜的;选择被高估的对手;或避免与排名差不多、保持头衔的强劲对手交锋。在选择高估对手的类别(category)中,排名系统的新进入者可能只参加过50场比赛,理论上他们会在临时分上被高估。当已排名玩家vs一个新进入排名玩家获胜时,ICC通过分配一个更低的K因子,从而对该问题会做补偿。

因此,Elo ratings online仍采用了一个有用机制来提供一个基于对手排名的排名。它总体上是可信的,然而,仍存在至少超过两个的主要问题:引擎滥用(engine abuse),选择性配对对手。

ICC最近也引入了自动匹配排名(“auto-pair”),它基于随机配对(random pairing),每次连续获胜,可以确保匹配到一个统计学上更难的对手:他也连续赢了x场比赛。因为潜在涉及到上百个选手,这会创建一些充满激烈竞争的主要大型Swiss赛事的挑战,全胜者将遭遇全胜者。该方法会为高排名选手的匹配最大化风险,例如,他将面对排名3000以下的选手的激烈对抗。它本身是一个分隔的排名系统,在1分(“1-minute”)和 5分(“5-minute”)的rating类别之下。最高排名达到2500是相当罕见的。

排名分膨胀(rating inflation)/通缩(deflation)

在排名系统中所有选手的平均排名分的增加或减少,通常被称为“排名膨胀(rating inflation)”或”排名通缩(rating deflation)”。例如,如果存在膨胀,一个当前排名分2500,实际上意味着少于之前的历史排名分为2500, 对于通缩反之亦然。当存在膨胀或通缩时,使用排名分来比较不同时代的选手是相当困难的。

通常认为,至少在顶级水平上,当前排名分是膨胀的。正如2009年9月 Nigel Short 所说:“最近的ChessBase上由Jeff Sonas所写的关于排名分膨胀的文章指出:我在1980年代的排名分在现在的水平近似2750分。”(注:Short在1980的最高排名分是1988年的2665分,相当于世界第三。而当他做出该评论时,2665分只够排第65名,而2750分则只能排第10位。在2012年的FIDE排行榜上,2665只够排第86位,而2750分只够排第13位)

有人曾提议:整体排名分的增加会影响更高的实力。国际象棋电脑的到来,可以对过往象棋大师的绝对实力,基于他们的历史战绩做出一定程度的目标评测,但这也是对选手的位置变动像电脑般的一个衡量,而非仅仅是他们有多强的一个衡量。

排名分超过2700的人数在增加。在1979年左右,只有一个选手(Anatoly Karpov)有这么高的排名分。在1992年,只有8位选手能达到2700分。而在1994年增加到了15个,2009年增加到了33个,2012年增加到了44个。当前的精英选手的benchmark需要超过2800分。

造成膨胀的一个可能原因是:排名分底数(rating floor),它长期被设置在2200分,如果一个选手掉分超过它,他们会被排行榜移除。结果,在水平低于该底数下的选手,只能当他们被高估时才会出现在排行榜上,他们会造成给排名分池子注入(feed)得分。在2000年,top 100的平均排位分是2644. 而2012年,它增加到2703.

在一个纯粹的Elo系统中,每个比赛都会产生排名分的等价交换。如果获胜方获得N个排名分,失败方则丢掉N个排名分。当比赛被进行和排名时,这会阻止得分新进入或离开该系统。然而,排名分低的新选手会进入该系统,而高排名分的有经验选手也会退出该系统。因此,一个长期运行的严格进行等价交换的系统会导致排名分通缩(rating deflation)

在1995年,USCF承认,一些年轻的选手,比排名系统所跟踪的提升得更多。结果,有稳定排名分的选手开始从对阵这些年轻未排名的选手上丢掉排分名。一些更年长的已排名选手很沮丧,认为这种排分不公平,其中一些因此退出了国际象棋。

与通缩对抗

由于当发生膨胀和通缩时所产生的巨大差异,为了与通缩对抗,大多数Elo ratings的实现都具有一个机制来向该系统注入得分,以保证一直能维持相当的排名分。FIDE具有两种通货澎涨解决机制。第一种,在“排名分底数(ratings floor)”下的表现不会被跟踪,因而,一个实力在底数之下的选以可能会被低估或高估,从不会被正确排名。第二种,已排名选手和高排名选手具有一个更低的K因子。新选手具有K=30, 在30场比赛后会下降到K=15, 当达到2400时K=10.

美国的当前系统,包含了一个获奖分机制,它会将排名分feed给系统,以便跟踪未提升的选手,为不同的选手设置不同的K值。在挪威所使用的方法,在初段和高段间会不同,对于年轻选手使用一个更大的K因子,当他们的表现得分超出预期时会有100%增强排名分。

在美国的排分名底数(rating floors),可保证一个选手从不会掉到特定下限以下。这也可以与通缩对抗,但USCF排名委员会主题已经对该方法不满,因为它不会feed进额外的分数来提升用户的排名分。对于这些排名分底数的一种可能动机是,与堆沙袋(sandbagging)对抗。例如:故意降低排名分以符合更低级别的比赛和奖金。

电脑排名

从2005-06年开始,人机象棋比赛已经演示过,象棋电脑可以击败强大的人类选手(深蓝vs.卡斯帕罗夫)。然而,电脑的排名分很难量化。他们参加锦标赛的比赛过少,很难给电脑或软件引擎一个精确的排名分。对于象棋引擎,排名分一定程度上依赖于在上面运行的程序。

一些排名分的确定,参见:Chess engine § Ratings

5.国际象棋外的用例

Elo rating system被用于国际象棋比赛中。为了符合参加职业象棋比赛,选手必须具备Elo排名分至少1600分,也可以完成50场或更多场与职业选手的比赛。

美国高校足球从1998到2013年也使用Elo方法来作为它们的BCS(大碗杯冠军系列赛)的评分系统,之后BCS被CFP(高校足球季后赛)取代。今日美国(USA Today)的Jeff Sagarin发布了大多数美国运动的队伍排名,包括高校足球的Elo系统排名分。BCS的运作者使用它的Elo排名分作为公式的一部分来决定BCS国家冠军赛的年度入围者。在2014年的CFP中也有效使用了该排名系统;参加CFP中的队伍和它相应的比赛通过选择委员会来选择。

除了英国之外,国家Scrabble组织都使用正态分布的Elo ratings。北美Scrabble选手联盟有最多的排名人数,在2011年有2000个人左右。Lexulous也使用Elo系统。

流行的FIBS( First Internet Backgammon Server)会基于一个修改版的Elo系统计算ratings。新选手会被分配一个1500的排名分,最好的人机排名可以超过2000分。相似的公式也被一些其它的西洋双陆棋(backgammon)网站采用,比如:Play65, DailyGammon, GoldToken和VogClub。VogClub的新选手排名分为1600.

欧洲围棋联盟(European Go Federation)采用一个基于Elo的排名系统,初始由捷克围棋联盟提出。

在其它的运动中,也会采用Elo算法。通常非官方,没有体育管理部门背书。世界足球Elo排名会对男子国家足球队进行排名。在2016年,美职棒大职盟(MLB)也采用了Elo排名,接着是Baseball Prospectus。Baseball Prospectus也做了基于Elo的蒙特卡罗胜率模拟,来预测哪个队伍会进入到季后赛。在2014年,在Box Score之外,一个叫SB Nation的网站,引入了一个Elo排名系统来对国际棒球进行排名。

另外一些基于Elo的有:FIFA女子世界排名,基于Elo算法的一个简单版本,其中FIFA使用elo的官方排名系统来对足球女子国家队进行排名。

在2015年,Nate Silver,和Reuben Fischer-Baum为NBA的队伍和2014赛季引入了Elo ratings。在2014的FiveThirtyEight网站上,为美国职业足球大联盟创建了基于Elo的排名系统,以及胜率预测。

英国 Korfball(荷兰式篮球)协会也基于Elo排名来决定2011/12赛季的杯赛的不利因素。

NHL(美国冰球联盟)也开发了基于Elo的排名分。冰球的Elo评估一个选手在两方面的整体水平:在力量、进攻、点球情况下的得分和防守。

Rugbyleagueratings.com使用Elo排名系统来对橄榄球联盟队伍进行排名。

许多在线游戏也使用Elo排名来对pvp(player-vs.-player)进行排名。从2005年开始,《黄金寺( Golden Tee Live )》就使用基于Elo的排名。新选手2100分,顶级选手超过3000分。在《激战(Guild Wars)》中,Elo的排名被用于记录通过两队对战的得失排名分。初始的K值为30,但在2007年改为5, 在2009年改成15. 《魔兽世界( World of Warcraft )》以前也使用Elo排名系统作为竞技场玩家和队伍的排名比较,现在则使用与Microsoft’s TrueSkill相类似的系统。《CS:GO》使用Elo系统来评估玩家在比赛获胜后增加的实力等级。MOBA游戏《英雄联盟LOL》在第二个赛季前使用Elo排名系统。等等。。。

其它用处

Elo排名系统被用于生物学上。

关于Mark Zuckerberg的《社交网络》电影中,Eduardo Saverin在Mark的宿舍楼编写了Elo排名的数学公式。在该场景后,Elo系统用于对女生的吸引力进行排名。(尽管电影中的方程式有些小错误)

参考

《Local Item-Item Models for Top-N Recommendation》一文提到了slim的实现。

1.介绍

top-N推荐系统无处不在。它们会提供一个用户可能感兴趣的关于N个items的ranked list。

。。。

2.概念

3.相关工作

3.1 top-N推荐方法

在top-N推荐领域有许多工作。这里我们提出了一新的SOTA的方法。Deshpande[8]开发了一种最近邻item-based方法,它展示了item-based模型会比user-based模型生成更好的top-N推荐。Cremonesi【7】开发了pureSVD方法,它使用一个trucated SVD矩阵分解R来生成top-N的推荐。该工作表明:将missing entries看成0会比矩阵补全方法生成更好的结果。这也是l2r方法的观点。

3.1.1 topN推荐的Sparse LInaear Method(SLIM)

Ning引入了SLIM,它是首个使用使用statistical learning来计算item-item关系的方法,并表明了对top-N推荐的最好方法之一。SLIM会估计一个sparse \(m \times m\)的聚合系数矩阵S。用户u在一个未评分item(urated item) i上的推荐分,可以通过对所有用户过往有评分item(rated items)进行一个sparse aggregation来计算:

\[\hat{r}_{ui} = r_u^T s_i\]

其中:

  • \(r_u^T\)是对应于user u的R的row-vector
  • \(s_i\)是matrix S的第i个column vector,通过求解以下的optimization问题来进行估计得到:
\[\underset{s_i}{minimize} (\frac{1}{2} \| r_i - R s_i \|_2^2 + \frac{\beta}{2} \| s_i \|_2^2 + \lambda \|s_i\|_1) \\ subject\ to \ s_i >=0, and \ s_{ii}=0\]

..(2)

常量 \(\beta\)和\(\lambda\)是正则参数。使用非负constraint,以便vector估计包含正系数(positive coefficients)。其中\(s_{ii}=0\)的constraint确认了:当计算一个item的weights时,item本身不会被用到,因为它会导致trivial solutions。

3.2 推荐的local models

估计多个local models的思想在O’connor[6]中被提出,它通过对rating matrix进行item-wise聚类、并为每个使用最近邻CF生成的cluster估计一个独立的local model来进行rating prediction。

Xu、【19】开发了一个方法会将users和items进行co-clusters,并在每个cluster(通过不同的CF方法,包括item-based最近邻方法)上估计一个独立的local model。一个user-item pair的predicted rating是来自于对该用户具有最大weight的subgroup的prediction。

Lee[14,15]提出了一个方法,它依赖于:rating matrix是本地low-rank。首先,neighborhoods被标记成为在user-item pairs周围的anchor points,它基于一个衡量users和items的pairs间的距离函数来生成,对于每个neighborhood会估计一个local low-rank model。该估计会以一种迭代的方式进行,其中:首先latent factors表示anchor points会被估计,接着基于与这些anchor points与 observed entries的相似度,latent factors会被重新估计,直到收敛。prediction的计算被看成是一个local models的convex组合,它会通过相对应的local anchor point的相似度对user-item pair进行加权。

GLSLIM则有些不同:

i) 在上述提到的工作中,只有local models会被考虑到;而GLSLIM也会计算一个global model,它对于每个user具有一个个性化的factor来决定在global和local信息间的相互影响(interplay)。 ii) GLSLIM会更新users的assignment到subsets上,可以更好地估计local models。 iii) Lee[14,15]使用user和item latent factors,而GLSLIM则关注于item-item models iiv) 在[6]中,作者使用item clusters,在[19]中作者使用co-clusters,在[14,15]中他们使用user-item anchor points。而GLSLIM则使用user subsets。

4.提出的方法

4.1 动机1

一个全局的item-item model可能捕捉用户集合的偏好不够充分,特别是当它们是具有多样、并且有时与偏好相左的用户子集。一个示例是:当local item-item models(iitem-item models会捕获在user subsets内的相似度)有效时,会胜过捕获全局相似度的item-item model(如图1所示)。它描绘了两个不同datasets的training matrix R,它们饮食了两个不同的user subsets。Item i是我们尝试去计算predictions的target item。在示例中,predictions通过使用一个item-item cosine similarity-based方法来计算。

图片名称

图1

在左边的dataset中,图1a存在一些items,它们只被一个subset的users评过分,另外也有一些items它们被两个subset的用户集评过分。当为user-subset A估计时,(对比为user-subset B、对比整个matrix),Item c和i具有不同的相似度。特别的,它们的相似度对于subset B的用户来说为0(因为item i没有被该subset的用户评过分),但它对于subset A的用户来说是非零的(我们可以进一步假设:在该示例中的泛化性没有损失,它是很高的)。接着,i和c间的相似度会是在global case中计算的均值。因此,为该dataset的user subsets估计该local item-item similarities可以帮助捕获user-subsets A和B的多样性偏好,如果我们只通过全局方式计算它们会缺失这些。

然而,当使用item j来为item i做预测时,全局估计和为subset A做出local估计的相似度会相同,因为,他们只会被subset A的users评过分。对于该dataset的相同holds见图1b,

参考

Xia Ning 和 George Karypis在《SLIM: Sparse Linear Methods for Top-N Recommender Systems》提出了SLIM。我们来看下具体的内容:

摘要

本paper关注于开发高效且有效的top-N推荐算法。提出了一种新的Sparse Linear Method,它通过从用户购买/rating 信息中进行聚合,来生成top-N推荐。通过求解一个l1-norm和l2-norm正则的优化问题,从SLIM中可以学到一个稀疏聚合系数矩阵W(sparse aggregation coefficient matrix)W。W可以用来生成高质量推荐,它的稀疏性(sparsity)允许SLIM来快速生成推荐。我们通过实验对比了SLIM与SOTA的方式。实验表明SLIM可以在运行时间和推荐质量上达到很大提升。

一.介绍

电商快速出现、成长很快,提供大量商品和详细信息,改变着用户购买商品的习惯。这使得在线交易更为方便。然而,由于符合用户期望的商品数目快速增加,如何高效快速地帮助用户筛选符合用户品味的商品变得越来越重要。特别的,给定用户的purchase/rating profies,为用户推荐一个关于items的ranked list很重要,这就是广泛使用的top-N推荐系统。

最近,在许多top-N推荐算法提出。这些算法被归类成两类:neghborhood-based CF方法和model-based方法。在neighborhood-based方法中,它们基于item neighborhoods可以快速生成推荐,但会牺牲一定的推荐质量。另一方面,model-based方法,特别是基于latent factor models生成推荐的开销高些,但这些推荐的质量更高,它们在大型推荐任务中达到了最好的效果。

在本paper中,我们提出了一种新的sparse linear method来进行top-N推荐,它们可以快速做出高质量的推荐。SLIM会从用户的purchase/rating profiles中,通过求解一个正解最优化问题,为items学习一个sparse coefficient matrix。在coefficient matrix中会引入Sparsity,它允许我们高效生成推荐。特征选择方法使得SLIM可以大量减少所需时间来学习coefficient matrix。另外,SLIM可以被用来做top-N的推荐。

SLIM方法解决了高质量/高效的topN推荐,它很适合实时应用。我们开展了大量线上实验。结果表明,比起SOTA方法,SLIM可以生成更好的推荐,并且很快速。另外,它在使用ratings做top-N推荐上达到了很好的效果。

二.相关工作

略.

三.定义与概念

在本paper中的符号:

  • u和t:会用来表示users和items
  • \((u_i, t_j)\):表示单个users和items
  • U\((\mid U\mid = m)\)和T \((\mid T\mid = n)\):分别表示所有users和items
  • 矩阵A:整个user-item的parchases/ratings的集合,会分别通过一个m x n的user-item purchase/rating matrix A来表示,其中(i,j)的entry(表示为\(a_{ij}\))是1或者一个正值,如果用户\(u_i\)对item \(t_j\)做过购买或评分行为,否则就会标记为0
  • \(a_i^T\):表示A的第i行,表示user \(u_i\)在所有items T上的购买和评分历史
  • \(a_j\):表示A的第j列,表示所有用户U在item \(t_j\)上的购买/评分历史

在本paper中,

  • 所有vectors(例如:\(a_i^T\)和\(a_j\))都被表示成粗体小写字母,
  • 所有matrics(比如:A)则是大写。
  • 行向量(row vectors)则通过转置T表示,否则缺省就是列向量(column vectors)。
  • 一个预测/近似值则通过\(\sim\)来表示。

我们会使用相应的matrix/vector概念来替代user/item的purchase/rating profiles。

四.SLIM

4.1 Slim topN推荐

在本paper中,我们提出了一种SLIM来做top-N推荐。在SLIM方法中,在用户\(u_i\)在一个未购买/未评分过item \(t_j\)上的推荐分,可以通过计算\(u_i\)已经购买/评分过的items的一个稀疏聚合(sparse aggregation)来计算得到

\[\hat{a}_{ij} = a_i^T w_j\]

…(1)

其中:

  • \(a_{ij}=0\),
  • \(w_j\)是一个稀疏的关于聚合系数(aggregation coefficients)的size-n column vector。

因此,SLIM使用的模型可以表示为:

\[\hat{A} = AW\]

…(2)

其中:

  • A:是二元的user-item购买/评分矩阵,
  • W:是一个\(n \times n\)的sparse matrix的聚合系数(aggregation coefficients),第j列对应于等式(1)中的\(w_j\),
  • \(\hat{a}_i^T(\hat{a}_i^T = a_i^T W)\):表示用户\(u_i\)在所有items上的推荐分

用户\(u_i\)的top-N推荐通过对\(u_i\)的未购买/未评分items上、基于在\(\hat{a}_i^T\)基于推荐分递减来达到,并推荐top-N个items

4.2 为SLIM学习W

在A中,我们将user \(u_i\)在item \(t_j\)上的购买/评分行为(例如:\(a_{ij}\))看成是ground-truth的item推荐分。给定一个user-item 购买/评分矩阵A(size为\(m \times n\)),我们可以学到等式(2)中sparse \(n \times n\)的matrix W,可以通过下面的正则最优化问题进行minimizer:

\[\underset{W}{minimize} \frac{1}{2} \| A - AW \|_F^2 + \frac{\beta}{2} \| W \|_F^2 + \lambda \| W \|_1 \\ subject\ to \ W >= 0, diag(W) = 0\]

…(3)

其中:

  • \(\| W \|_1 = \sum\limits_{i=1}^n \sum\limits_{j=1}^{n} \mid w_{ij} \mid\) :是W的entry-wise l1-norm
  • \(\| \cdot \|_F\):是matrix Frobenius norm(弗罗贝尼乌斯范数)
  • AW:是推荐得分的预估矩阵(例如:\(\hat{A}\)) 乘以 等式2的sparse linear model
  • 第一项\(\frac{1}{2} \| A - AW \|_F^2\) (例如:平方residual sum):用来衡量linear model是如何拟合训练数据的,
  • \(\| W \|_F^2\)和\(\| W \|_1^2\)分别是\(l_F\)-norm和l1-norm正则项
  • 常数\(\beta\)和\(\lambda\)是正则参数。参数越大,正则化越强

约束条件:

  • 在W上会使用非负(non-negativity constraint)约束,若存在,学到的W表示了在items间的正向关系
  • 约束条件 diag(W)=0 也会被使用,以避免trivial solutions(例如:optimal W是一个identical matrix,以便一个item总能推荐它本身,以便最小化 \(\frac{1}{2} \| A - AW \|_F^2\))。另外,约束 diag(W)=0 确保了\(a_{ij}\)不会被用于计算 \(\hat{a}_{ij}\)

  • 1) Slim的l1-norm和\(l_F\) norm正则:为了学到一个sparse W,我们需要引入W的\(l1-norm\) 作为等式(3)的regularizer。众所周知,\(l1-norm\)正则化会将sparsity引入到solutions中【12】

除了l1-norm外,我们还有W的\(l_F\)-norm作为另一个regularizer,它会导致该最优化问题变成一个弹性网眼(elastic net)问题[13]。\(l_F\)-norm可以衡量模型复杂度,并阻止overfitting(在ridge regression中)。另外,\(l_1\)-norm和\(l_F\)-norm regularization一起隐式地将solutions中的相关items进行了group【13】

  • 2) 计算W:因为W的列是独立的,等式(3)的最优化问题可以被解耦成以下的最优化问题的集合:
\[\underset{w_j}{minimize} \frac{1}{2} \| a_j - A w_j \|_2^2 + \frac{\beta}{2} \| w_j \|_2^2 + \lambda \| w_j \|_1 \\ subject \ to \ w_j >=0 \\ w_{jj} = 0\]

…(4)

这允许W的每一列可以被独立求解。在等式(4)中:

  • \(w_j\)是W的第j列
  • \(a_j\)是A的第j列
  • \(\| \cdot \|_2\)是vectors的\(l_2\)-norm
  • \(\| w_j \|_1 = \sum\limits_{i=1}^n \mid w_{ij} \mid\)是vector \(w_j\)的entry-wise \(l_1\)-norm。

由于W的column-wise独立特性,学习W的过程可以很方便并行化。等式(4)的最优化问题可以使用坐标下降法和soft thresholding来进行求解。

  • 3) 具有Feature Selection的SLIM:等式(4)中的\(w_j\)的估计可以被看成是一个正则回归问题的解,其中:A的第j列是等估计的依赖变量,可以看成是A的其余n-1列(独立变量)的一个函数。该观点建议:feature selection方法可以潜在用于:在计算\(w_j\)之前,减小独立变量的数目。这些feature selection方法的优点是:他们会减少A中列的数目,它可以实质上减少SLIM学习所需的整体时间。

受其它observations的启发,我们将SLIM方法扩展成包含feature selection。我们将这些方法称为“fsSLIM”。尽管可以使用许多feature selection方法,在本paper中,受itemkNN top-N推荐算法的启发,我们只研究了一种方法。特别的,由于目标是学习一个线性模型(linear model)来估计A(\(a_j\))的第j列,接着A的列与\(a_j\)最相似,可以被用于selected features。我们的实验会在后面展示,使用cosine相似度和这种feature selection方法,会产生一个方法:它具有更低计算要求,具有最小的质量退化。

4.3 对于SLIM,高效的topN推荐

等式(2)中SLIM方法以及W的稀疏性,使得在topN推荐上更快。在等式(2)中,\(a_i^T\)总是非常稀疏(例如:用户通常只会对少量的items进行购买/评分),并且当W也稀疏时,通过利用W的稀疏结构,\(\hat{a}_i^T\)的计算可以非常快(例如:沿着W在它行中的非零值上的列进行一个”gather”操作,对应于在\(a_i^T\)中的非零值)。因此,对于user \(u_i\)的推荐的计算复杂度是:

\[O(n_{a_i} \times n_w + N log(N))\]

其中:

  • \(n_{a_i}\): 是在\(a_i^T\)中的非零值数目
  • \(n_w\): 是在W中行的非零值的平均数目
  • \(N log(N)\)项:是用于对N个items最高分进行排序,它可以从在\(\hat{a}_i^T\)潜在的\(n_{a_i} \times n_w\)的非零条目中使用线性选择以线性时间被选中。

4.4 SLIM vs. 已存在的线性方法

线性模型已经在topN推荐中被使用。例如,在[2]中的itemkNN方法具有一个线性模型,它与SLIM相似。itemkNN的模型是一个knn item-item cosine相似度矩阵S,也就是说,每行\(s_i^T\)具有精准的k个非零值,它表示在item \(t_j\)和它的k个最相似邻居间的cosine相似度。在itemkNN和SLIM的线性模型间的基本不同点是:前者高度依赖于预指定的item-item相似度measure(它用于区分neighbors);后者通过求解等式(3)中的最优化问题来生成W。在这种方式中,W可以潜在编码items间丰富且微妙的关系,它们通常不能被常见的item-item 相似度metrics轻易衡量。在第4节中,通过实验结果验证表明,W要胜过S。

Rendle[11]讨论了一个adaptive k-NN方法,它使用与在itemkNN相似的模型,但会可适应性地学习item-item相似矩阵。然而,在[11]中的item-item相似度矩阵是 完整的稠密、对称矩阵,并且具有负值。W与Rendle的item-item相似度矩阵不同,除了它的稀疏性外,它还会产生更快的推荐,并且存储要求更低,由于最优化过程,W不是必需是对称的,因此对于推荐来说允许更灵活

对于每个item的rating评测,Paterek[15]引入了一个线性模型(linear model),其中,一个user \(u_i\)在一个item \(t_j\)上的评估,可以通过对\(u_i\)在所有其它items上的评分的聚合(aggregation)来进行计算。它们会学习聚合系数(aggregation coefficients),对于每个item,通过求解一个\(l_2\)-norm正则的最小二乘问题来进行。学到的系数是fully dense的。对比起Paterek方法,SLIM的优点是在学习期间采用了\(l_1\)-norm正则,它强制要求W是稀疏的,因此,在W中最具信息量的信号来自所有购买/评分行为,以便可以更好融合信息,对比Paterek方法,它只使用一个购买/评分活动的特定集合。

4.5 在SLIM和MF方法间的关系

对于top-N推荐来说,MF方法是这样一个模型:

\[\hat{A} = U V^T\]

…(5)

其中,\(U\)和\(V^T\)分别是user和item因子。对比在等式(5)中的MF模型、以及等式(2)中的SLIM方法,我们可以看到:SLIM模型可以被看成是MF模型的一个特例(例如:A等同于U,并且W等同于\(V^T\))

等式(5)中的U和\(V^T\),在一个latent space,它的维度通常被指定成一个参数。”latent”空间这时完全变成等式(2)中的item space,因此,在SLIM中没必要学习在”latent” space中的用户表示,因此,学习过程可以被简化。另一方法,\(U\)和\(V^T\)通常具有低维度,因此,在A中的\(U\)和\(V^T\)的低秩近似(low-rank approximation),有用的信息可能被潜在丢失。相反,在SLIM中,由于在users上的信息在A中完全保留,在items上的counterpart可以通过learning进行最优化,SLIM可以潜在的给出比MF方法更好的推荐

另外,由于等式(5)中的\(U\)和\(V^T\),通常是dense的,\(a_i^T\)的计算需要对来自\(U\)和\(V^T\)的dense vectors的每个\(\hat{a}_{ij}\)进行计算。这比起MF方法,会产生一个高计算复杂度,其中k是latent factors的数目,n是items的数目。通过使用在[16,17,18]中的稀疏MF算法,计算复杂度可以被潜在减小。然而,这些稀疏MF算法没有一个可以被用来求解top-N推荐问题,由于它们的高度计算开销。

五.方法

5.1 数据集

我们在8个不同的真实数据集上评估了SLIM的效果,这些数据集如表1所示。可以归为两大类。

第一类:(包括:ccard、ctlg2、ctlg3以及ecmrc[2])来自于顾客的购买交易(purchasing transactions),这4个数据集只有二元购买信息。

  • ccard dataset:对应于在主要商场的信用卡(credit card)购买交易,每个card具有至少5笔交易
  • ctlg2和ctlg3数据集对应于在两个主要的邮购目录零售商(mail-order catelog retailers)上的catalog购买交易
  • ecmrc dataset对应于基于web电商网站的购买交易。

第二类:(BX、ML10M、Netflix和Yahoo)包含了多值评分(multi-value rating)。所有的ratings会被转化成二元索引。

  • BX数据集是来自Book-Crossing dataset上的一个子集,其中每个user会对20个items进行评分,每个item会被至少5个users和最多300个users进行评分过。
  • 电影评分的ML10M dataset,从MovieLens研究项目中获得。
  • Netflix dataset则从Netflix Price dataset中抽取获得,每个user会对20-250个电影进行评分,每个电影会被20-50个users进行评分。- Yahoo dataset是从Yahoo Music 用户对歌曲的ratings中抽取得到,其中:每个user会对20-200个歌曲评过分,每首music会至少被10个users和至多5000个users评过分。

5.2 评估方法 & metrics

我们使用5倍的 Leave-One-Out交叉验证(LOOCV)来评估SLIM方法的效要。在每个run中,datasets会被split成一个training set和一个testing set,它通过随机选择每个user的非零entries之一,并将它放置到testing set中。training set会被用于训练一个模型,接着对于每个user,模型会生成一个size-N的ranked list的推荐items。该evaluation会通过对比每个user的推荐列表以及用户在testing set上的item。结果的主要部分等于10. 然而,我们也会报告对于N的不同值的一些有限结果。

推荐质量通过HR(Hit Rate)、以及平均倒数命中排序(ARHR:Average Reciprocal Hit-Rank)进行评估【2】。HR的定义如下:

\[HR = \frac{\# hits}{\# users}\]

…(6)

其中:

  • \(\#users\)是users的总数目
  • \(\#hits\)是在testing set中users的item命中size-N的推荐列表的总数目。

第二个measure指标是:ARHR,它的定义如下:

\[ARHR = \frac{1}{\#users} \sum\limits_{i=1}^{\#hits} \frac{1}{p_i}\]

…(7)

其中:

  • 如果一个user的一个item被命中(hit),p就是该item在ranked推荐结果中的position。

ARHR是HR的加权版本,它可以用来measure一个item被推荐有多强烈,其中weight是在推荐列表中hit position的倒数(reciprocal)。对于使用评分(ratings)的实验,我们通过查看他们推荐items是否好,并且具有一个特别的rating value,来评估该方法的效果。出于该目的,我们也定义了per-rating Hit Rate(rHR)以及cumulative Hit Rate(cHR):

  • rHR的计算成:在items上的hit rate,它们具有一个特定的rating value
  • cHR可以计算成:在items上的hit rate,它们的rating value不低于一个特定的rating threshold

注意:在top-N推荐文献中,已经存在其它metrics来进行评估。比如:包括AUC(area under the ORC曲线),它会对在一整个ranked list中的true postives和false postives的相对位置进行measure。AUC的variances可以measure在一个randed list中的top部分的位置。另一个流行的metric是召回率(recall)。然而,在top-N的推荐场景中,我们相信,HR和ARHR是最直接和最有意义的measure,因为users只会关注:一个短推荐列表是否有感兴趣的items、而非一个非常长的推荐列表。因此,我们会使用HR和ARHR进行评估。

六、实验结果

图片名称

图片名称

对应于parmas的列为:对于itemkNN和userkNN,参数分别是neighbors的数目。对于itemprob方法,参数是neighbors数目和transition参数\(\alpha\)。对于PureSVD,参数是:sigular values的数目以及在SVD期间的迭代次数。对于WRMF方法,参数是latent space的维度以及在购买时的weight。对于BPRMF方法,参数是latent space的维度和学习率。对于BPRkNN方法,参数是learning rate和正则参数\(\lambda\)。对于方法slim,参数是l2 norm正则参数\(\beta\)以及l1-norm正则参数lambda。对于方法fsSLIM,参数是neighbors的数目和l1-norm正则参数\(\lambda\)。对应于HR和ARHR的列:表示了hit rate和average reciprocal hit-rank. 对应于mt和tt的列,分别表示模型学习和推荐所使用的时间。mt/tt数目(s, m, h)表示秒、分钟、小时。粗体数目是分个dataset上最好的效果。

参考

microsoft在2016年提出了MV-DNN结构:《A Multi-View Deep Learning Approach for Cross Domain User Modeling in Recommendation Systems》。我们来看下该paper。

介绍

为了解决CF和CB的诸多限制,我们提出了利用user features和item features的推荐方法。为了构建user features,不同于许多user profile-based的方法,我们提出了从浏览记录、搜索历史中抽取丰富特征来建模用户的兴趣。依赖的假设是:用户的历史在线动作会影响用户的背景(background)和偏好(preference),因此提出了一种关于用户会对哪些items和topics感兴趣的更精确看法。例如,一个用户做出的许多查询和网页访问都与婴儿有关,那么她很可能是一个新生儿的母亲。有了这些丰富的在线行为,推荐相关items可以更有效率和有效果。

在我们的工作中,我们提出了一种新的deep learning方法,它扩展了DSSM(Deep Structured Semantic Models),它将users和items映射到一个共享语义空间中,并推荐那些在映射空间中与该用户具有最大相似度的items。为了达到该目的,我们的模型会对users和items进行投影,每一者都通过一个丰富的特征集表示,通过非线性转换层映射到一个完全共享的隐语义空间中,其中user的mapping以及该用户喜欢的items的mappings间的相似度会最大化。这允放该模型学习感兴趣的mappings:比如,访问了fifa.com的用户可能会读取关于世界杯相关的新闻文章、或喜欢关于PC or XBox足球游戏。用户侧的丰富特征可以允许建模用户的行为,从而克服在content-based推荐中的限制。它也可以有效解决用户的冷启动问题,因为模型允许我们从queries和相关推荐items(比如音乐)上捕获用户兴趣,即使它们没有使用音乐服务的历史记录。我们的deep learning模型具有一个ranking-based objective函数,它会将正样本(用户喜欢的items)的排序比负样本的更高。该ranking-based objective对于推荐系统更好。

另外,我们扩展了原始的DSSM模型(它被称为是single-view DNN),因为它从来自单个域的user-features 和items学习模型。我们将新模型命名为“Multi-View DNN”。在文献中,multi-view learning是一个比较成熟的领域,它可以从相互不共享的公共特征空间的数据中进行学习。我们将MV-DNN看成了在multi-view learning setup中一种通用的Deeplearning方法。特别的,在我们的数据集中有News、Apps和Movie/TV logs,我们不需要为这种不同域(domain)构建独立模型,它们可以将user features映射到相同域(domain)的item features上,我们会构建一个新的multi-view模型,它会为在隐空间中的user features发现一个单一映射,可以从所有域中使用items的特征进行联合优化。MV-DNN会利用多个跨域数据来学习一个更好的用户表示(user representation),也会利用全域的用户偏好数据使用以一种规则的方式解决数据稀疏性问题。

3.数据集描述

这部分会介绍数据集。我们描述了数据收集过程,以及每个数据集的特征表示,以及一些基础的数据统计。

在该研究中会使用4个数据集,它们从microsoft的产品中收集,包含:

  • (1) Bing Web vertical搜索引擎日志
  • (2) Bing News vertical的新闻文章浏览历史
  • (3) Windows AppStore的App下载日志
  • (4) XBox的Movie/TV观看日志

所有日志的收集从2013-12 〜 2014 6月,包含了英语系国家:美国、加拿大、英国。

(用户特征: user features):我们从Bings收集了用户的搜索queries和它们的点击urls来形成用户特征。queries首先会被归一化、获取词干、接着将它们split成unigram特征,urls会被简写成domain-level(例如:www.linkedin.com)来减小特征空间。我们接着使用TF-IDF得分来保持最流行和重要(no-trivial)特征。整体上,我们选择了300w的unigram特征和500k的domain特征,来产生一个总长度为3500w的用户特征向量

(新闻特征:News Features):我们收集了从Bing News vertical的新闻文章点击。每个News Item通过三部分特征表示。第一部分是,使用字符tri-gram表示编码的标题特征。第二部分是,使用二值特征编码的News的top-level类目(比如:娱乐)特征。第三部分是,每篇文章的命名实体,使用一个NLP parser抽取得到,同样使用tri-gram进行编码。这会产生一个包含10w维的特征向量

(APP特征):用户APP的下载历史,来自windows AppStore日志。每个App的标题使用字符tri-gram表示,会以二值形式组合上类目特征(比如:游戏)。对于APP描述常变化的特性,我们决定不包含这些特征。这一部分会产生一个5w维的特征向量

(Movie/TV Features):对于Xbox日志,我们为每个XBox用户收集了Movie/TV观看历史。每个item的标题和描述,会组合成文本特征,接着使用字符型tri-gram编码。该genre也使用二值特征编码。这一部分会产生5w维特征向量

在我们的神经网络框架中,user features被映射到user view上,其余被映射到不同的item views上。出于训练目的,每个user view会被匹配到一个item view上,它包含了用户的完整集合。为了这样做,我们对登陆用户的每个user-item view pair, 以及基于id间交叉做了抽样。这会为每个user-item view pair产生不同数目的用户。表1描述了在该paper中的一些统计。

4. 用于建模用户的DSSM

DSSM的引入是为了增强在搜索上下文中的query document matching。

图1 DSSM深度结构语义模型

DSSM的典型结构如图1所示。到DNN的输入(原始文本特征)是一个高维向量,例如,在一个query或一个文档中的terms原始数目(没有归一化)。接着DSSM会将该输入传给两个神经网络,两者都有各自不同的输入,会将它们映射到在一个共享语义空间中的语义向量中。对于网页文档排序,DSSM会计算一个query和一个document间的相关得分(对应两个语义向量间的cosine相似度),并通过相似得分进行文档排序。

更正式的,如果x表示输入的term向量,y表示输出向量,\(l_i, i=1,...,N-1\)表示内部的hidden layers,\(W_i\)表示第i个权重矩阵,\(b_i\)表示第i个bias term,我们有:

\[l_1 = W_1 x \\ l_i = f(W_i l_{i-1} + b_i), i=2,...,N-1 \\ y = f(W_N l_{N-1} + b_N)\]

…(1)

其中,我们使用tanh函数作为在output layer和hidden layers \(l_i\)上的activation函数:

\[f(x)= \frac{1 - e^{-2x}} {1+ e^{-2x}}\]

…(2)

在一个query Q和一个document D间的语义相关得分,接着通过R进行measure:

\[R(Q, D) = cosine(y_Q, y_D) = \frac{y_Q^T y_D} {||y_Q|| \cdot ||y_D||}\]

…(3)

其中,\(y_Q\)和\(y_D\)各自是query和document的语义向量。在Web搜索中,给定query,document会通过它们的语义相关得分进行排序。

惯例上,每个word w通过一个one-hot词向量表示,其它维度对应于词汇表size。然而,词汇表size经常在现实中非常大,one-hot向量的词表示会让模型学习开销很大。因此,DSSM使用word hashing layer通过一个letter-trigram向量来表示一个词。例如:给定一个词(web),在添加了词边界符号后(#web#),该词被分割成ngram序列(#we, web, eb#)。接着,该词被表示成一个关于letter-trigrams的count vector。例如,web的letter-trigram表示为:

在图1中,第一层 matrix \(W_1\)表示letter-trigram矩阵,它从一个term-vector转移到它的letter-trigram count vector上,无需学习。尽管英文words的总数目会增长得相当大,去重后的英文letter-trigrams的总数目通常是有限的。因此,它可以泛化到在训练数据中那些未见过的新词上。

在训练中,假设一个query与该query下被点击的documents相关,DSSM的参数(例如:权重矩阵\(W_i\)),可以使用该信号被训练。例如,给定一个query后一个document的后验概率,可以从两者间的语义相关分数中会通过一个softmax函数进行估计:

\[P(D|Q) = \frac{exp(\gamma R(Q,D))}{\sum\limits_{D' \in D} exp(\gamma R(Q,D'))}\]

…(4)

其中\(\gamma\)是softmax的一个平滑因子,它通常会在一个held-out数据集上进行经验型设置。D表示要排序的候选文档集合。理想的,D应包含所有可能的文档。实际上,对于(query, clicked-document) pair,可以使用\((Q, D^+)\)表示,其中:

  • Q表示一个query
  • \(D^{+}\)表示点击的文档,
  • \(\lbrace D_j^-; j=1, ..., N\rbrace\)来表示: N个随机选中的未点击文档
  • D: 包含\(D^{+}\)和N个随机选中的未点击文档来近似D

在训练中,模型参数被估计成:给定queries,被点击文档的极大似然:

\[L(\Lambda) = \log \prod\limits_{(Q,D^+)} P(D^+ | Q)\]

…(5)

其中,\(\Lambda\)表示神经网络的参数集。

5.MV-DNN

DSSM可以看成是一个multi-learning框架,其中它会将两种不同的数据视图映射到一个共享视图(shared view)中。在某种程度上,它可以被看成是:在一个更通用的setting中来学习两个不同views间的一个共享mapping。

图2: 多域推荐(multiple domain recommendation)的MV-DNN。它使用一个DNN来将高维稀疏特征(例如:users, News, App的原始特征)映射成低维dense特征到一个联合语义空间中(joint semantic space)。第一个hidden layer,有50k units,会完成word hashing。word-hashed features接着通过多个非线性投影投影层被投影。最后一层的activities会形成在语义空间中的特征。注意,在该图中的输入特征维度x(5M和3M)被假设成:每个view可以有任意的特征数。详见文本。

在该工作中,我们提出了一个DSSM的扩展,它具有对数据的多个views,我们称之为Multi-view DNN。在该setting中,我们具有v+1个views,一个主视图(pivot view)称为\(X_u\),其它v个辅助视图(auxiliary views)为:\(X_1, ..., X_v\)。每个\(X_i\)具有它自己的输入域\(X_i \in R^{d_i}\)。每个view也具有它自己的非线性映射层 \(f_i(X_i, W_i)\),它会将\(X_i\)转换到共享语义空间\(Y_i\)上。训练数据包含了一个样本集合。第j个样本具有主view \(X_{u,j}\)的一个实例,以及一个活动辅助视图\(X_{a,j}\),其中a是在sample j中active view的索引。所有其它视图输入\(X_{i:i \neq a}\)被设置为0向量(0 vectors)。该学习目标是(objects)是为每个view(比如:相似的求和)发现一个线性映射,以便最大化相似度(在主视图\(Y_u\) mapping以及其它视图\(Y_1, ..., Y_v\) mapping间的语义空间的相似度)的求和。公式为:

\[p = arg max_{W_u, W_1,...,W_v} \sum\limits_{j=1}^N \frac{e^{\alpha_a cos(Y_u, Y_{a,j}}}{ \sum_{X' \in R^{d_a}} e^{\alpha cos(Y_u, f_a(X', W_a))} }\]

…(6)

MV-DNN的结构如图2所示。在我们的推荐系统设置中,我们将\(X_u\)设置为user features的主视图,并为各种不同的想推荐的items类型创建了辅助视图。

该目标函数是意图是,为users features尝试找到单个mapping(\(W_u\)),可以将users features转换到一个空间中,它与该用户在不同视图/域中所喜欢的所有其它items相匹配(match)。该方法会共享参数,并允许该域(domains)即使没有足够信息也能学习较好的mapping(通过其它带有足够信息的domains数据来学)。

如果假设具有相似新闻文章品味的用户,同时也在其它域(domains)上有相似品味,这意味着这些domains可以从通过News domain学到的user mapping上受益。如果该假设是合法的,那么从任意domain上的样本都可以帮助将相似用户在所有domains上进行更准确的分群。经验结果表明,在该domains上的假设是合理的,我们会在实验章节再做描述。

5.1 训练MV-DNN

MV-DNN可以使用SGD进行训练。实际上,每个训练样本会包含一个输入对(inputs pairs),一个用于用户视图(user view),一个用于其它数据视图。因此,尽管事实上在我们的模型只有一个用户视图(user view),通常采用N个用户特征文件会更方便,每个对应于一个item feature file,其中N是user-item view pairs的总数目。在算法1中,我们会描述训练MV-DNN的高级过程。当各自对所有\(W_i \in \lbrace W_u, W_1, ..., W_v \rbrace\)进行求导时,我们会得到两个非零导数 \(\frac{\partial p }{\partial W_u}\)和 \(\frac{\partial p}{\partial W_a}\),它允许我们应用与DSSM相同的梯度更新规则【9】,使用\(X_u\)来取代q,使用\(X_a\)来取代d。

算法1

5.2 MV-DNN的优点

尽管MV-DNN是从原始的DSSM框架进行扩展而来的,但它具有许多独特的特性比前者更优。首先,原始的DSSM模型用于相同特征维度size的query view和document view的,使用相同的表示(representation)进行预处理(例如:letter tri-gram)。这在特征组合阶段会有巨大限制。由于推荐系统的差异性,很可能user view和item view会有不同的输入特征。同时,许多类型的特征不能使用letter trigram进行最优表示。例如,URL domain feature通常包含了前缀和后缀,(比如:www, com, org),它们会被映射到相同的特征上(如果使用了letter tri-gram)。实际上,我们已经发现,当输入原始文本很短时(例如:原始DSSM模型中的query text和document title),该letter tri-gram表示很理想,但如果建模包含了大量queries和url domains的用户级别特征(user level features)就会变得不合适。新的MV-DNN会移除该限制,来包含类别型特征(比如:电影类型和app类目,地理特征:比如国家和区域),也可以包含原始文本特征(用户输入侧使用1-grams或2-grams来表示)。

第二,MV-DNN可以扩展到许多不同的domains上,原始DSSM框加做不到。通过在每个user-item view pair上执行pair-wise训练(如算法1描述所示),我们的模型可以很方便的采用view pairs的新集合,在训练过程中的任意阶段,它包含了完全独立的users和items集合;例如:添加来自Xbox games的一个新数据集。通过在每个训练迭代过程中选择user-view pairs,我们的模型事实上可以收敛到一个最优的user view embedding上,它通过所有的item views训练得到。注意,尽管理论上我们在不同的item-views上具有不同的user sets,在我们的实验期间,考虑便利性和特征归一化的方便,我们会选择在所有views上保持相同集合的用户。

6.数据降维

实际上,提出的深度学习方法通常需要为user view处理高维特征空间中的海量训练样本。为了扩展系统,我们提出了许多降维技术来减少在user view上特征数。接着,我们提出了一个思想来压缩(compact)和总结(summarize)用户训练样本,它可以将训练数据的数目减少到与users数目成线性倍数上。

6.1 top features

对于user features,一种简单的降维方法是,选择top-k个最常用的特征。。。。

6.2 K-means

6.3 LSH

6.4 减小训练样本数

每个view的训练样本包含了一个关于\((User_i, Item_j)\) pairs集合(表示:\(User_i喜欢Item_j\))。实际上,一个user可能会喜欢许多items,它们有时候会造成训练数据非常大。例如,在我们的新闻推荐数据集上,大概有10亿pairs数目,这会造成训练过程非常慢(当使用最优的GPU实现时)。

为了解决该问题,我们会压缩训练数据,以便它对于每个user每个view都可以包含单个训练样本。特别的,压缩版的训练样本包含了user features 与一个用户在该view中所喜欢的所有items的平均分的 features组成的pairs。

实验

详见paper。

参考