阿里提出基于Transformer的个性化重排序模型PRM,首次用于大规模在线系统 论文作者 Changhua Pei,Yi Zhang,Yongfeng Zhang   编译  吴少杰   编辑 ... 

论文作者|ChanghuaPei,YiZhang,YongfengZhang

编译|吴少杰

编辑|蔡芳芳

概览

在推荐系统中,排序至关重要。排序算法给出的排序表的质量对推荐系统的收益和用户满意度有很大的影响。为了优化排序性能,业界提出了大量的排序算法。通常,推荐系统中的排序只考虑用user-item对的特性,而不考虑来自列表中其他item的影响,特别是那些邻近的item。尽管pairwise和listwise的LTR(learningtorank)试图以item对或item列表为输入来解决问题,但它们只专注于优化损失函数,以更好地利用label。它们没有明确地模拟特征空间中item之间的相互影响。

本文主要贡献如下:

问题我们提出了一个个性化的推荐系统重排序问题,据我们所知,这是第一次在大规模的在线系统重排序任务中显式地引入个性化的重排序信息。实验结果证明了在列表表征中引入用户表征进行重排序的有效性。

模型我们使用具有个性化嵌入的Transformer来计算初始输入排序表的表征,并输出重新排序的分数。与基于RNN的方法相比,self-attention机制使我们能够更有效、更高效地建模任意两个item之间用户特定的相互影响。

数据我们发布了一个在本文中使用的大规模数据集(电子商务重排序数据集)。这个数据集是从一个真实的电子商务推荐系统中构建的。数据集中的记录包含一个推荐列表,记录用户-点击标签和特征以便进行排名使用。

评估我们进行了离线和在线实验,结果表明我们的方法明显优于最先进的方法。在线A/B测试表明,我们的方法实现了更高的点击率和更高的实际系统收益。

重排序模型公式

在这一部分中,我们首先给出一些关于如何学习推荐系统的排序和重新排序方法的初步知识。然后阐述了本文要解决的问题。本文使用的符号见表1。

学习排序(通常称为LTR)方法广泛应用于实际系统中的排序,以生成用于信息检索的有序列表和推荐。LTR方法根据item的特征向量学习全局评分函数。有了这个全局函数,LTR方法通过对候选集合中的每个item进行评分来输出一个有序列表。此全局评分函数通常通过最小化以下损失函数L来学习:

其中R是所有用户的推荐请求集。Ir是请求r的候选项集。xi表示项i的特征空间。yi是项i的label,即单击或不单击。P(yi|xi;θ)是预测的点击概率。L是用损失函数。

然而,xi不能足够学习一个好的打分函数。我们发现推荐系统的排名应该考虑以下额外信息:(a)item对之间的相互影响;(b)用户与item之间的交互。item对之间的相互影响可以直接从初始列表Sr中得到,Sr是LTR为请求r生成的排序列表。一些文献提出了如何更好地利用item对的互信息的方法。

然而,很少有工作考虑用户和item之间的交互。item对的相互影响程度因用户而异。本文引入一个个性化矩阵PV来学习user-specific的编码函数,该函数能够建模item对之间的个性化相互影响。模型的损失函数可以表示为方程2。

其中Sr是前一个排序模型给出的初始列表。θ是我们重新排序模型的参数。X是列表中所有item的特征矩阵。

个性化重排序模型

在这一部分中,我们首先概述了我们提出的个性化重新排序模型(PRM)。然后详细介绍了模型的各个组成部分。

4.1模型架构

PRM模型的体系结构如图1所示。该模型由输入层、编码层和输出层三部分组成。它将先前排序方法生成的item的初始列表作为输入,并输出重新排序的列表。详细结构将在以下章节中单独介绍。

4.2输入层

输入层的目标是准备初始列表中所有项的综合表征,并将其feed到编码层。首先,我们有一个固定长度的初始序列表S=[i1,i2,…,in],由前面的排序方法给出。与前面的排序方法一样,我们得到了原始特征矩阵X∈Rn×d(feature)。X中的每一行表示每个项目i的原始特征向量Xi。

PersonalizedVector(PV)对两个项目的特征向量进行编码可以模拟它们之间的相互影响,但是这些影响对用户的影响程度是未知的。需要学习用户特定的编码函数。虽然整个初始列表的表示部分反映了用户的偏好,但对于一个强大的个性化编码函数来说是不够的。如图1(b)所示,我们将原始特征矩阵X∈Rn×d(feature)与个性化矩阵PV∈Rn×d(pv)连接,得到中间嵌入矩阵E′∈Rn×(d(feature)+d(pv)),如方程3所示。PV由一个预先训练的模型生成,该模型将在下一节介绍。PV的性能增益将在评估部分介绍。

PositionEmbedding(PE)为了利用初始列表中的序列信息,我们在输入嵌入中注入一个位置嵌入PE∈Rn×(d(feature)+d(pv))。然后利用方程4计算编码层的嵌入矩阵。在本文中,我们使用了一个可学习的PE,我们发现它略优于其他文献中使用固定位置的嵌入。

最后用一个简单的前馈网络将特征矩阵E′′n∈Rn×(d(feature)+d(pv))转化为E∈Rn×d,其中d是编码层每个输入向量的嵌入维数。E可表示为方程式5。

式中,WE∈R(d(feature)+d(pv))×d是投影矩阵,b(E)是d维向量。

4.3编码层

图1(a)中编码层的目标是集成项对和其他额外信息的相互影响,包括用户偏好和初始列表的排序顺序。为了实现这一目标,我们采用了类似于Transformer的编码器,因为Transformer已经在许多NLP任务中被证明是有效的,特别是在机器翻译中,与基于RNN的方法相比,它具有强大的编码和解码能力。Transformer中的self-attention机制特别适合于我们的重排序任务,因为它直接建模任意两个item之间的相互影响,而不考虑它们之间的距离。如果没有距离衰减,Transformer可以捕获初始列表中彼此相距较远的项之间的更多交互。如图1(b)所示,我们的编码模块由Transformer编码器的Nx块组成。每个块(图1(a))包含一个注意层和一个前馈网络(FFN)层。

AttentionLayer我们在本文中使用的注意函数定义为方程式6:

其中矩阵Q、K、V分别表示查询、键和值。d是矩阵K的维数,以避免内积的大值。softmax用于将内积的值转换为值向量V的加权。在我们的论文中,我们使用self-attention,其中Q,K和V是从同一个矩阵投影的。

为了模拟更复杂的相互影响,我们使用如等式7所示的多头attention:

其中WQ,WK,WV∈Rd×d.WO∈Rhd×d(model)是投影矩阵。h是头的数目。在下一节的烧蚀研究中将研究不同h值的影响。

Feed-ForwardNetwork这种位置前馈网络(FFN)的主要功能是增强具有非线性和输入向量不同维数之间相互作用的模型。

StackingtheEncodingLayer在这里,我们使用attention模块后面接position-wise的FFN作为一个Transformer的编码器块。通过叠加多个块,可以得到更复杂、更高阶的互信息。

4.4输出层

输出层的功能主要是为每个项目i=i1,…,in(在图1(b)中标记为score(i))生成一个分数。我们使用一个线性层,后跟一个softmax层。softmax层的输出是每个项目的点击概率,标记为P(yi|X,PV;θ)。我们用P(yi|X,PV;θ)作为得分(i)对项目进行一步重排序。分数(i)的公式为:

其中F(Nx)是Transformer编码器Nx块的输出。WF是可学习投影矩阵,bF是偏差项。n是初始列表中的item数。

在训练过程中,我们使用点击数据作为标签,并最小化方程9所示的损失函数。

4.5个性化模型

在这一节中,我们将介绍一种计算每个个性化矩阵PV的方法,它表示用户和项之间的交互。直接的方法是通过重新排序损失,用PRM模型以端到端的方式学习PV。然而,如第3节所述,重新排序的任务是优化先前排序方法的输出。在重新排序任务时学习到的特定于任务的表征缺少用户的通用偏好。在此基础上,利用预先训练好的神经网络生成用户的个性化嵌入PV,作为PRM模型的额外特征。训练前的神经网络是从整个平台的点击日志中学习的。

图1(c)显示了本文中使用的预训练模型的结构。这个sigmoid层输出用户u在给定用户的所有行为历史(Hu)和用户的侧信息的情况下,对项目i的点击概率(P(yi|Hu,u;θ′)。用户侧信息包括性别、年龄、购买水平等。该模型的损失由点交叉熵函数计算,如方程10所示。

其中D是在平台上显示给用户u的一组项。θ是预训练模型的参数矩阵。yi是项目i上的标签(点击或不点击)。我们使用sigmoid层之前的隐向量作为个性化向量pvi(在图1(c)中),来输入到我们的PRM模型中。

图1(c)显示了预训练模型的一种可能架构,其他通用模型,如FM、FFM、DeepFM、DCN、FNN和PNN也可以用作生成PV的替代方案。

实验结果

在本节中,我们首先介绍用于评估的数据集和基线。然后将我们的方法与这些数据集上的基线进行比较,以评估我们的PRM模型的有效性。同时,进行了消融研究,以帮助了解我们模型的哪一部分对整体性能的贡献最大。

5.1数据集

我们基于两个数据集评估我们的方法:Yahoo和E-commerce重新排名数据集,没有可供推荐的具有上下文信息的公开重新排名数据集。因此,我们从一个流行的电子商务平台构建电子商务重排序数据集。两个数据集的概述如表2所示。

YahooLetor数据集我们使用同Seq2Slate中相同的方法对YahooLetor数据集进行处理,以适合推荐的排名模型。首先,我们使用阈值Tb将评分(0到4)转换为二进制标签。其次,我们使用衰减因子η来模拟item的展现概率。YahooLetor数据集中的所有文档都由专家打分,前提是用户完整地查看了每个查询的所有文档。然而,在实际的推荐场景中,用户以自顶向下的方式查看item。由于移动应用程序的屏幕只能显示有限数量的item,因此一个item的排名位置越高,用户查看该item的概率就越小。本文用1/pos(i)η作为衰减概率,其中pos(i)是项目i在初始列表中的排名位置。

电子商务重排数据集该数据集包含一个来自真实世界推荐系统的点击式数据形式的大规模记录。数据集中的每条记录都包含每个用户的推荐列表,其中包含用户的基本信息、单击标签和原始功能以进行排名。

5.2基准线

学习排名(LTR)和重新排名方法都可以作为我们的基线。

LTRLTR方法用于两个任务。首先,LTR方法可以根据每个用户请求r的候选集Ir生成重新排序模型的初始列表Sr。其次,使用pairwise或listwise损失函数的LTR方法可以作为重新排序的方法,以初始列表Sr为输入,再进行一次排序。本文中使用的典型LTR方法包括:

1)SVMRank这是一种具有代表性的学习排序方法,它利用pairwise损失来建立评分函数模型。

2)LambdaMart这是一种具有代表性的学习排序方法,它使用list-wise损失来建模评分函数。LambdaMart是根据[31]的评估,在那些配备列表损失函数的LTR方法中最先进的LTR。

3)DNN-basedLTR这是在我们的在线推荐系统中部署的LearningTorank的方法。它使用标准的Wide&Deep网络结构[9]通过pointwise损失函数对评分函数进行建模。

4)DLCM它是一种基于LTR方法生成的初始列表的信息检索重排序模型。GRU用于将本地上下文信息编码为全局向量。将全局向量与每个特征向量相结合,得到了比LTR的全局排序函数更强大的评分函数。

5.3评价指标

Precision@k定义为所有测试样本的top-k推荐项中点击项的分数,如等式11所示。

其中R是测试数据集中所有用户请求的集合。Sr是由重排序模型为每个请求r∈r给出的项的有序列表,Sr(i)是第i项。1是指示是否单击项i的函数。

MAP@k是测试数据集中被k截断的所有排名列表的平均精度的缩写。定义如下。

对于在线A/B测试,我们使用PV、IPV、CTR和GMV作为度量标准。PV和IPV定义为用户查看和单击的项目总数。CTR是点击率,可通过IPV/PV计算。GMV是用户在推荐item上花费的总金额(收入)。

5.4实验设置

对于基线和PRM模型,我们对那些临界超参数使用相同的值。YahooLetor数据集的隐藏维度d(model)设置为1024,电子商务重新排序数据集的隐藏维度d(model)设置为64。我们的PRM模型中Adam优化器的学习率与[28]相同。使用负对数似然损失函数,如等式9所示。

p(dropout)设置为0.1。YahooLetor数据集的批大小设置为256,电子商务重新排序数据集的批大小设置为512。这些设置是通过微调基线来获得的,以获得更好的性能。我们还尝试了不同的实验设置,实验结果与当前设置一致,并进行了修正。属于模型自定义部分的其余设置将在评估部分的相应部分中列出。

5.5离线实验

在本节中,我们首先对YahooLetor数据集和电子商务重新排名数据集进行离线评估。然后给出了在线A/B测试的结果。我们还进行了消融研究,以帮助发现PRM模型的哪一部分对性能贡献最大。

在本节中,我们将对YahooLetor数据集进行评估,以讨论以下问题:

1)RQ0:我们的PRM模型是否优于最先进的方法?为什么?

2)RQ1:性能是否随不同LTR方法生成的初始列表而变化?

表3显示,与所有基线相比,我们的PRM-BASE实现了稳定且显著的性能改进。

当基于SVMRank生成的初始列表时,PRM-BASE在MAP上超越DLCM1.7%,在Precision@5上超出1.4%。与SVMRank相比,在MAP和精度分别提高了5.6%和5.7%。基于LambdaMART生成的初始列表,PRM-BASE在MAP和Precision@5上的性能分别比DLCM高0.7%和2.1%。与LambdaMART相比,PRM-BASE在MAP上提高了2.6%,在Precision@5上提高了3.1%。

PRM-BASE使用与DLCM相同的训练数据,不包含个性化模块。相对于DLCM的性能增益主要来自于Transformer强大的编码能力。多头注意机制在模拟两个item之间的实际影响方面表现得更好,特别是当编码列表的长度变长时。在我们的模型中,注意机制可以模拟O(1)编码距离内任何item对之间的相互作用。

由于PRM-BASE采用Transformer结构,因此有许多子模块可能对性能有影响。我们进行消融研究,以帮助我们了解哪一个子设计最有助于突破底线。消融研究是在SVMRank生成的初始列表上进行的。当使用LambdaMART生成的初始列表时,发现了类似的结果,由于空间有限,本文省略了这些结果。表4显示了三部分的消融结果:第一部分(第一行)显示了基线DLCM的性能。第二部分(第二排)“Default”是PRM-BASE模型的最佳性能。第三部分(剩余行)展示了PRM模型的不同烧蚀变体,包括:移除位置嵌入(PE)、移除残余连接(RC)、移除dropout层、使用不同数量的块和在多个头部注意力中使用不同数量的头部。注意,我们在“Default”PRM模型中设置了b=4和h=3。

如表4所示,去除位置嵌入后,我们的模型的性能大大降低。这证实了初始列表给出的顺序信息的重要性。在去除位置嵌入后,我们的模型从候选集而不是有序列表中学习评分函数。注意,即使没有位置嵌入,我们的PRM-BASE仍然可以达到与DLCM相当的性能,这进一步证实了我们的PRM-BASE模型可以比DLCM更有效地编码初始列表。

当去除残余连接和脱落层时,模型的映射分别略微下降了0.1%和0.7%,这表明我们的模型对梯度消失和过拟合等问题不太严重。我们的模型的性能首先随着块的数量(1-?2-?4)而增加,然后随着块的数量(4-?6-?8)而减少,因为当我们将8个编码块堆叠在一起时会发生过度拟合。

我们还尝试了多头注意层的不同设置(h=1,2,3,4)。表4中没有观察到明显的改善,这与NLP任务得出的结论不同[26]。在自然语言处理中的实验表明,在多脑注意机制中使用更多的脑时,由于以下原因可以捕获更多的信息,因此通常是有帮助的。

(1)从方程7中我们发现,每个头部的函数起着将原始特征向量映射到不同子空间的作用。因此,使用更多的头,我们可以在不同的子空间中建模更多的项目交互。

(2)[26]表明使用更多的头有助于编码长序列的信息。这是合理的,因为某个项的输出向量是列表中所有项向量的加权和。当序列变长时,列表中的每个项对输出向量的贡献都变小。但是,在我们的重新排序设置中,初始列表中的所有项都是高度同质的。当将原始特征向量映射到更多不同的子空间时,有一些小的改进。因此,我们建议只使用一个磁头来节省计算成本,因为性能改善并不明显。

5.5.2电子商务重排名数据集离线评估

我们对电子商务排名数据集进行离线评估,以回答以下问题。

RQ2:个性化模块的用户体验的性能如何?

评价结果见表5。对于我们的PRM模型,我们不仅评估了PRM-BASE的性能,还评估了带有预先训练的个性化向量PV(称为PRM-个性化预训练)的模型变体的性能。由于我们之前对YahooLetor数据集的评估已经证实,我们的模型和DLCM在所有指标上都取得了更好的性能,而且DLCM[1]也有一致的结果,因此我们忽略了与SVMRank和LambdaMART在我们的电子商务重新排名数据集上的比较。初始列表是由一个基于DNN的LTR方法生成的,该方法部署在我们的实际推荐系统中。

我们对Yahoo-Letor数据集的统计显示,平均点击率为30%,这意味着对于每一个包含30个推荐文档的查询,大约有9个文档被用户点击。然而,在我们真实世界的电子商务重新排名数据集中,平均点击率不超过5%。这意味着在YahooLetor数据集上的排名要比在电子商务重新排名数据集上的排名容易得多。两个数据集上相同排序方法的MAP值也证实了这一点:DLCM在Yahoo-Letor数据集上可以达到0.64MAP,而在电子商务重排序数据集上只能达到0.28MAP。结合表5和表3,我们发现排名任务越难,PRM模型的改进就越大。

表5显示,与PRM-BASE相比,我们的PRM个性化预训练实现了显著的性能改进。PRM个性化Pretrain在MAP上的性能比PRM-BASE高4.5%,在精度@5时的性能比PRM-BASE高6.8%。这主要由个性化向量PV导入,该向量PV由一个预先训练的模型学习,其体系结构如图1(c)所示。PRM个性化预训练模型有两个优点:(1)预训练模型可以充分利用较长的用户日志周期,提供更通用、更具代表性的用户偏好嵌入。(2)通过长期的通用用户嵌入,我们的PRM模型能够更好地学习用户特定的编码功能,能够更准确地捕捉每个用户的项目对之间的相互影响。请注意,预训练模型的架构与我们的PRM模型的耦合度不高,其他通用模型[16、23、24、30、36]也可以用作生成PV的替代方案。

5.6在线实验

我们还在一个真实世界的电子商务推荐系统中进行在线A/B测试,测试内容包括PV、IPV、CTR和GMV这些指标的含义在前面的“评估指标”一节中进行了解释。这些指标评估用户在推荐系统中浏览(PV)、点击(IPV、CTR)和购买(GMV)的意愿。对于每种算法,都有成千上万的用户和数百万的在线测试请求。

表6显示了三种方法相对于线上基础排序(DNN-based的LTR)的相对改进。

首先,在线A/B测试表明,无论采用何种重新排序方法,重新排序都有助于提高在线度量。再次,我们可以得出结论,重新排序通过考虑初始列表中item的相互影响有助于提高性能。值得注意的是,在我们的在线系统中,PV有0.77%的增长(DLCMv.sWithoutre-ranking)是非常显著的,因为这意味着用户在使用重新排名方法后会看到大约数十亿个额外的item。

第二,我们可以得出结论,与DLCM相比,PRM-BASE模型带来了额外的0.50%的浏览item绝对增长和额外的0.69%的点击item绝对增长。最后,通过使用个性化模块,我们的PRM个性化预训练模型比PRM-BASE模型能进一步提高GMV6.29%的绝对值。回想一下,在电子商务重排序数据集的离线实验中,与PRM-BASE相比,PRM个性化Pretrain在MAP上增加了4.5%。结果表明,利用预先训练好的用户描述,个性化编码函数可以更精确地捕捉item对之间的交互,为重排序方法带来显著的性能提升。

5.7可视化注意力权重

我们将模型学习到的注意力权重可视化,以回答以下问题。

RQ3:self-attention机制能从不同的方面学习有意义的信息吗,例如,item的位置和特点?

特征上的注意力我们首先将item之间的平均注意力权重可视化为两个特征:类别和价格。在测试数据集上计算的结果如图2所示。热图中的每个块表示属于七个主要类别的item之间的平均注意力权重。块颜色越深,权重就越大。从图2(a)我们可以得出结论,注意机制可以成功地捕获不同类别的相互影响。类别相似的item往往具有较大的注意力权重,说明它们之间的相互影响较大。例如,“男鞋”对“女鞋”的影响要大于对“电脑”的影响。“电脑”、“手机”和“家用电器”由于都是电子产品,所以彼此之间的注意力权重很大,这一点也很容易理解。类似的情况可以在图2(b)中观察到。在图2(b)中,我们根据价格将项目分为7个级别。项目之间的价格越接近,相互影响就越大。

位置上的注意力图3显示了初始列表中不同位置的平均注意权重。首先,图3(a)显示了我们的模型中的自我注意机制可以捕捉到不考虑编码距离和推荐列表中位置偏差的相互影响。排在列表前面的item通常更容易被点击,因此对列表末尾的item有更多的影响。例如,我们观察到第一个位置的item对第30个位置的item的影响比第26个位置的item的影响更大,尽管后者更接近它。与图3(b)相比,位置嵌入的效果也很明显,图3(b)中每个位置之间的注意权重分布更加均匀。

结论&未来工作

本文提出了一种个性化的重排序模型(PRM),用于改进由最新的学习排序方法给出的初始列表。在重排序模型中,我们使用Transformer网络对item之间的依赖关系和用户与item之间的交互进行编码。个性化向量可以进一步改善重排序模型的性能。在线和离线实验都表明,我们的PRM模型可以极大地提高公开基准数据集和我们发布的真实数据集的排名性能。我们发布的真实数据集可以使研究人员研究推荐系统的排序/重排序算法。

我们的工作在特征空间中显式地建模复杂的item-item之间的关系。我们相信对标签空间的优化也会有帮助。另一个未来的方向是通过重新排名来学习多样化。尽管我们的模型在实际中并没有损害排名的多样性。在我们的重新排名模型中引入多元化目标是值得尝试的,我们将在今后的工作中进一步探索这一方向。

THE END
1.在线编程——排序算法总结有哪些算法是在线排序算法在线编程——排序算法总结 找实习,阿里一面遇到手写快排,写出来感觉没错(VS2013能通过),但在阿里的测试平台上运行未通过。细思极恐,赶紧总结一波。有幸看到SteveWang的两篇博客:排序算法总结(1)与排序算法总结(2)以及基数排序、计数排序与桶排序,总结的相当详细,我这里算是重新拜读一遍,结合自己的理解写下来。 https://blog.csdn.net/zichen_ziqi/article/details/80419920
2.12VB排序算法双向选择排序视频在线观看超清720P高清 540P 2.0x1.5x1.25x1.0x0.8x 50 跳过片头片尾是|否 恢复默认设置 首页>原创> 12、VB排序算法_双向选择排序 笑口常开 订阅0 分享: 直播热点 下载APP领会员 直播中 小言儿~ 直播中 丽丽感谢家人宠爱 直播中 悠然~https://www.56.com/u85/v_MTY1MDg1NjEw.html
3.MLK机器学习常见算法优缺点了解一下腾讯云开发者社区决策树算法 分类算法 聚类算法 集成算法(AdaBoost算法) 人工神经网络算法 排序算法 关联规则算法(Apriori算法) 01 决策树算法 决策树优点 1、决策树易于理解和解释,可以可视化分析,容易提取出规则。 2、可以同时处理标称型和数值型数据。 3、测试数据集时,运行速度比较快。 https://cloud.tencent.com/developer/article/1485883
4.由浅入深玩转快速排序算法在线工具 首页 话题 文库 我的 更多 商店 码库 Wiki 软件 网址 文章 文稿 书库 图册由浅入深玩转快速排序算法 出处:mp.weixin.qq.com 摘要本文带你了解被誉为20世纪科学和工程领域的十大算法之一的“快速排序”算法。阅读原文 xiaozi 于2024-04-26 分享https://tool.lu/index.php/article/69v/detail
5.如何准备算法面试?算法面试不是高考。 把这个过程看作是和面试官一起探讨一个问题的解决方案。 对于问题的细节和应用环境,可以和面试官沟通。 这种沟通本身很重要,它暗示着你思考问题的方式。 例子 我们需要对一组数据进行排序 设计排序接口,标准库的设计,业务中排序算法。 排序是基础操作,很重要。 解决 快速排序算法:O(nlogn)https://www.imooc.com/article/36452
6.Python3实现对列表按元组指定列进行排序的方法分析python这篇文章主要介绍了Python3实现对列表按元组指定列进行排序的方法,结合实例形式分析了Python3针对列表排序的常见操作技巧与注意事项,需要的朋友可以参考下本文实例讲述了Python3实现对列表按元组指定列进行排序的方法。分享给大家供大家参考,具体如下:Python版本: python3.+ 运行环境: Mac OS IDE: pycharmhttps://www.jb51.net/article/153239.htm
7.快速排序算法算法原理 快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为两个子序列(sub-lists)。 步骤为: 从数列中挑出一个元素,称为“基准”(pivot), 重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(相同的数可以到任何一边)。在这个分割结束之后,该基准就处于数列https://tool.dreamlikes.cn/algorithm/quicksort
8.MySQL性能优化51CTO博客从数据库处理的查询复杂度来看,第一种为两类很简单的查询,第二种有一条SQL语句有GROUP BY 操作,比第一种解决方案增加了排序分组操作; 从应用程序结果集处理来看,第一种11次结果集的处理,第二种2次结果集的处理,但是第二种解决方案中第二次结果处理数量是第一次的10倍; https://blog.51cto.com/u_13661275/3223259
9.2020届计算机科学方向毕业设计(论文)阶段性汇报图排序的硬件加速器设计 Gorder图排序算法的简单介绍,硬件加速Gorder的基本思路,模拟实验结果。 蒋泽天 多图的批量协同匹配与在线增量式匹配方法第一阶段工作汇报 多图的批量协同匹配与在线增量式匹配方法第一阶段工作汇报,主要包括研究内容回顾,先前方法复原情况,以及理论分析内容进展。 https://zhiyuan.sjtu.edu.cn/html/zhiyuan/announcement_view.php?id=3709
10.快速排序在线编程k6k4在线编程:现在给定一个整数数组,请用快速排序算法对该数组进行排序。https://k6k4.com/code/sshow/aaoxpweyb1597887379356
11.排序算法总结菜鸟教程排序算法 平均时间复杂度 冒泡排序 O(n2) 选择排序 O(n2) 插入排序 O(n2) 希尔排序 O(n1.5) 快速排序 O(N*logN) 归并排序 O(N*logN) 堆排序 O(N*logN) 基数排序 O(d(n+r)) 一. 冒泡排序(BubbleSort) 基本思想:两个数比较大小,较大的数下沉,较小https://www.runoob.com/w3cnote/sort-algorithm-summary.html
12.重现当年AlphaGo神来之笔,DeepMind新AI发现提速70%排序算法因为,无论是排序还是哈希,它们的应用场景从在线购物、云计算到供应链管理等各个场景都能用到,每天会被调用上亿次! 不过,如DeepMind所说: 大家千万不要太兴奋了,AI的力量用于代码效率提升才刚刚开始。 Alpha家族“新贵”发现更快排序算法 这个AI名叫AlphaDev,属于Alpha家族“新贵”,并且基于AlphaZero打造(就是2017年https://m.thepaper.cn/wap/v3/jsp/newsDetail_forward_23406067
13.在线数字排序器对数字进行排序 我们的在线数字排序器使用快速排序算法,其时间复杂度在平均情况下为 O(n log n),在最坏情况下为O(n2),尽管这种行为很少见。快速排序通常被认为是最快的排序算法,并且有许多应用。 Search 数学 ? 最小二乘线性回归计算器? 四分位数间距计算器? 卡方计算器? Z分数计算器? https://www.bchrt.com/tools/number-sorter/
14.智能开放搜索OpenSearch智能搜索搜索引擎大数据基于阿里巴巴自主研发的大规模分布式搜索引擎搭建的一站式智能搜索业务开发平台,目前为包括淘宝、天猫在内的阿里集团核心业务提供搜索服务支持。通过内置各行业的查询语义理解、机器学习排序算法等能力,以及充分开放的文本向量检索引擎能力,助力开发者快速搭建智能搜索服务。 https://www.aliyun.com/product/opensearch
15.快速排序(quicksort)JasonDamon快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。(出自维基百科) https://www.cnblogs.com/Jason-Damon/archive/2013/06/15/3138137.html