AI专栏 | AB实验新突破:携程提出图贪心分流算法,解决两大核心难题

【数据分析】A/B测试 AB测试的基本概念 1.什么是AB测试 2.AB测试的好处与限制 3. AB测试步骤 影响AB测试结果准确性的因素 AB测试效果分析 阅读详情

作者简介

小白,携程算法工程师,关注营销定价领域。

团队热招岗位:高级数据分析

携程火车票部门为解决智行酒店商户侧AB实验中,预实验分流中遇到的分流不均、分流组流量交叉问题,提出了一种用于非用户端AB实验的分流算法,该算法通过优化的随机抽样模块与贪心交换模块,保证实验组之间多指标的相似性;通过图算法模块,降低实验组之间的流量交叉。通过实证分析,该算法一方面有效的提升了商户端实验在多指标下的分流效率;另一方面,相比于使用先验知识进行分流,显著降低了实验组之间的流量交叉。

  • 一、背景介绍

  • 1.1 非用户端AB实验简述

  • 1.2 非用户端分流与用户端分流异同

  • 二、问题定义

  • 2.1 分层指标均衡

  • 2.2 用户流量隔离

  • 三、方法介绍

  • 3.1 分区随机抽样算法

  • 3.2 贪心交换算法

  • 3.3 降低流量交叉的图贪心分流算法

  • 四、实证分析

  • 4.1 对比方法与业务背景

  • 4.2 效果评估维度与指标定义

  • 4.3 对比结果与分析

  • 五、总结与展望

一、背景介绍

1.1 非用户端AB实验简述

在互联网行业中,AB实验作为效果评估和策略迭代的黄金标准,已成为驱动业务决策的核心工具。通过对比实验组与对照组在目标指标上的差异,AB实验能够科学量化策略收益、降低决策风险,因而广泛应用于推荐系统、搜索排序、广告投放、用户增长等关键场景。当前行业实践中的AB实验,绝大多数以用户为分流单位,即基于用户唯一标识(如UserID、设备ID)进行哈希取模或分层随机,确保用户流量在实验组与对照组之间均匀分配,同时满足用户维度的互斥性与独立性。

然而,随着业务场景的复杂化,非用户维度的实验需求逐渐凸显。例如,在电商场景中,针对商品优惠额度的策略优化实验,其核心实验对象并非用户,而是商品本身——需要将商品划分为不同实验组,测试不同优惠策略对商品销量的影响;在商户营销活动场景,典型如“裂变”类营销活动,其不适合对同一个社交圈(如学校、商业区、城市)内的用户施加不同的营销策略,因此活动主体和分流单位是商户,需要进行非用户端分流实验,且分流过程中为了防止用户之间相互影响,还需要尽可能避免参加相同活动的商户同时被多个用户看到的情况。

类似的场景还包括内容池质量评估、商家运营策略实验、广告创意效果对比等。此类实验的分流主体从用户转向业务实体(如商品、内容、广告)。

1.2 非用户端分流与用户端分流异同

用户和非用户作为分流实体存在着核心差异:用户实体数量级大,特征变化快,具有丰富的多样性,且个体之间相互独立;非用户实体往往数量级较小,特征分布更加稳定,也更加单一和集中,个体之间很可能存在关联关系。这导致若直接对非用户实体进行哈希分流,会面临以下问题:

1)实验随机分流不均衡

以商品实验为例,若直接对商品进行哈希随机分流,由于商品特征的稳定性和集中性,更容易导致实验组与对照组的商品池在关键指标上存在系统性偏差,一方面无法通过预留的AA校验,另一方面导致实验结果错误。例如,若在有关“营销活动对GMV总量影响”的AB实验中,在随机分分流时高单价商品集中至实验组,可能使实验给出“营销活动使GMV提升”的错误结论。对比体量更大、特征更多样的用户实体,非用户实体更容易产生分流不均匀的情况。

2)实验预分流与其稳定性

大部分的用户端实验中,都通过在线流量随机分流,依托于用户群体的大体量和特征多样性,不需要进行预分流。而非用户实体的特征更为单一和稳定,所以非用户实验通常要求实验组与对照组在实验期间更需要保持固定,以避免策略频繁切换引入干扰,这就要求在实验前对实体进行“预分流”。“预分流”需要具备一定的稳定性,即在分流前(历史时期)、分流后(实验期间)的时间段内,实验组和对照组都应该是相似的。

3)用户维度流量交叉需严格约束

用户端实验中,用户一般可以看做独立的个体,但非用户端实验则不然,如电商平台上的“鼠标”和“鼠标垫”显然不具备独立性,它们极易同时曝光给同一用户群体,这就导致若商品“鼠标”被分至实验组,而“鼠标垫”被分至对照组,且被同一用户看到,这两个商品之间就会互相影响,导致实验结论可信度降低。因此,当实验对象与用户存在多对多关联时(用户可浏览多个商品),需确保用户尽可能少地同时暴露于实验组与对照组。

上述问题使得传统基于哈希的随机分流方法难以直接适用:其无法主动调控实验组与对照组的指标相似性,也无法有效约束用户维度的流量交叉。为使得这类需要对非用户端进行的实验拥有更高的置信度,解决其预分流难、分流均匀难、隔离流量的问题,携程火车票算法团队提出了一种面向非用户维度实验的分流算法,通过结合随机抽样、贪心算法、图算法,实现实验组与对照组的高效划分。该算法能够保证,在分流实验组间指标平衡的基础上,显著降低用户维度的流量交叉率,提升分流效率和质量,为复杂业务场景下的非用户实验提供可行的解决方案。

二、问题定义

给定 个待分流的非用户实体集合,设其属性空间由两类特征构成:

分组变量:包含 个维度,记为特征集合 ,用于定义业务强相关的分层维度(如商品类目、价格区间、地域标签等)。若 ,则无需分层约束。

指标变量:包含 个维度,记为特征集合 ,代表需要实验组与对照组对齐的核心指标(如历史销量、转化率、用户覆盖量等)。

需将N个实体划分为实验组(Treatment Group)与对照组(Control Group),使得分组结果满足如下要求:

2.1 分层指标均衡

若存在分组变量,则基于 的多维度交叉组合(即所有可能的 取值)将实体划分为 个互斥子层。将整体,即全部子层的集合记作 。对每个子层 ,要求:

样本量均衡:实验组与对照组在 内的实体数量比例接近预设目标;

指标对齐:实验组与对照组在 内的 指标分布差异最小化,即对任意指标 ,两组在 所有指标变量的分布尽可能接近。我们使用**最大相对差异**来衡量 指标分布的相似程度,即:

其中 分别代表来自两组的第 个指标变量的对应统计量(均值或总值)。分流算法的目的,是最小化最大相对差异 ,使用均值或总值作为衡量标准,则视情况而定,一般在要求组的总规模接近时使用总值,否则则使用均值。

2.2 用户流量隔离

对于与用户行为存在关联的实体(用户可能同时访问多个实体),需确保:

实体级互斥:同一实体仅能被分配至实验组或对照组;

用户级隔离:若用户 与实体 存在关联(如浏览、购买),则用户 在实验周期内应尽可能仅暴露于 所在的分组(实验组或对照组),以降低用户维度流量交叉对实验结果的干扰;一般情况下无法完全互斥,应尽可能地减少同时看到实验组与对照组的用户数量。

三、方法介绍

为了达成上述需要达成的分组目标,我们设计了三个独立可插拔的算法模块,并将其结合作为最终的分流算法。

  • 为实现整体指标的均衡,使用贪心交换算法,以一个分组的可行解作为起点,不断贪心交换样本,使得不同分组的指标变量的最大均值相对差异不断变小,直到满足预设的差异水平。

  • 为实现分层指标均衡,并加快贪心算法的收敛速度,使用分区随机抽样算法为贪心算法生成初始可行解,使初始解中不同分层的重要指标尽可能均衡,实验组和对照组之间的最大均值相对差异满足一个更加宽泛的差异水平条件。

  • 为实现用户流量隔离,引入图的社区发现算法,在算法中额外给定用户和分流实体的历史交叉信息(如用户历史浏览的商品,下文用uv数据代指该信息),将交叉信息抽象为图,将原分流单位打包为新的分流单位,让新的分流实体之间流量交叉尽可能隔离。

下文将依次介绍算法的不同部分,给出算法细节。

3.1 分区随机抽样算法

在非用户分流场景中,直接应用贪心算法从零开始构建实验组与对照组,可能因初始状态随机性导致收敛速度慢或陷入局部最优。为此,我们基于分层抽样,提出一种优化的随机抽样初始化方法,算法要达成的核心目标是:

  • 加速后续优化收敛:通过预生成高质量候选分组,形成较优初始解,减少贪心交换算法所需的迭代次数。

  • 保障均匀性:在分组变量 的每个子层内,确保实验组与对照组的指标变量 分布已较为接近

算法输入
  • 实体集合:需划分的N个非用户实体(如商品),包含分组变量与指标变量

  • 分桶粒度 :定义分组个数

  • 最大迭代次数 :最大重抽样次数

核心步骤

步骤1:基于分组变量 的交叉分区

若存在 变量(如商品类目、价格段等),将所有实体按 的取值组合划分为多个互斥子层(如“服饰-低价”“家电-高价”等);若无 变量,所有实体视为单一子层,但算法执行时会增加基于随机数的分层变量,方便后续随机抽样。假若有 个商品,其属于三个类目、 两个价格段,则我们将其划分为2*3=6个子层。

步骤2:子层内按指标变量 排序

接下来,在每个子层内,通过排序使指标相近的实体位置相邻。对每个子层内的实体,人为设定 变量的优先级,并对其进行多变量排序。若我们最在意商品的历史销量,其次在意其历史价格,则先按历史销量排序,销量相同则按转化率排序,将其排序。

步骤3:子层内等距分桶

排序后,将排序后的实体均匀切分为 个桶,确保每个桶的指标分布相似。

从排序序列的第1个位置开始,每隔 个实体抽取1个,形成第1个桶(如抽取1,6,11,...号商品);从第2个位置开始重复上述操作,形成第2个桶(如抽取2,7,12,...号商品);循环至生成 个互斥桶,每个桶包含 个实体,其中 是子层中元素的数量。若 ,每个子层的商品被均分到5个桶。

步骤4:跨子层随机组合候选分组

分桶完成后,通过组合不同子层的同序号桶,生成分组结果。

从所有子层中分别无放回抽取一个桶,将所有子层抽取的桶的结果,合并为一个候选分组。遍历所有桶序号,最终生成 个候选分组,每个分组包含所有子层的同序号桶。在每一个子层中无放回抽取一个桶,并将其样本混合,就生成了一个候选分组。反复操作,即可生成 个候选分组。

步骤5:差异评估

计算所有候选分组两两之间的指标相对差异,若未满足条件,则重新进行步骤4抽样生成新候选,最多迭代 次。算法整体流程如图所示:

图:分区随机抽样算法

3.2 贪心交换算法

在优化随机抽样生成初始分组后,为进一步降低实验组与对照组的指标差异,需引入贪心交换算法对分组进行精细化调整。该算法以初始解为起点,通过局部样本交换逐步逼近全局最优解,其核心流程如下:

步骤1:基于分流算法的初始解构建

基于随机分流算法输出的初始分组(实验组与对照组),其已通过分层分桶策略确保在分组变量的各组合分区内指标分布相对均衡。这一设计减少了后续贪心算法的搜索空间,避免算法陷入低效的随机游走。

步骤2:预计算与实体分桶

算法迭代开始前,先预计算两组在各指标变量上的均值(或总值)及相对差距,并将两组样本划分为多个交换桶(也可以根据给定的分组变量指定交换桶)。交换限制为仅允许同一桶内的样本对进行交换,例如同一商品类目下的实验组商品只能与同类目的对照组商品交换。此举通过提前计算指标和限制交换样本的搜索空间,降低了计算复杂度的同时,维持分区的原有均衡性。

步骤3:迭代式贪心交换算法进入贪心循环迭代阶段,每轮迭代包含以下操作:

  • 候选交换对生成:遍历所有交换桶,在每个桶内枚举实验组与对照组样本的两两组合,计算若交换二者后各指标变量最大相对差距的变化量,将其作为交换的“收益”。

  • 择优交换:从所有候选对中筛选能使相对差距减小的幅度最大,即上文“收益”最大的最优样本对(若同时存在多对,随机选择其一),执行交换并更新分组状态;

  • 加速策略:为减少计算量,每轮仅计算部分候选样本对交换后的收益如每一次迭代中最多比较 个样本对,若超过该限度,则使用当前的局部最优样本对强制进入下一次迭代。

步骤4:终止条件与结果输出迭代持续至满足以下任一条件则终止:

  • 收敛成功:所有指标变量的最大相对差距小于给定阈值

  • 陷入局部最优:当前轮次未找到收益超过一定限度的有效交换对。注意,若一轮迭代搜索 个样本对后没有找到收益满足要求的可交换样本对,则算法应无视单次迭代样本对数量的限制,继续进行下去。

  • 迭代次数限制:算法达到最大迭代次数。

最终输出最后一次迭代的分组结果,确保即使未完全收敛,仍能提供相较于初始解更优的可行方案。算法的具体流程如图所示:

图:贪心交换算法

3.3 降低流量交叉的图贪心分流算法

为在进一步降低用户维度的流量交叉,在贪心交换算法中引入图的社区发现算法,通过重构分流单位实现“组内高内聚、组间低耦合”的流量隔离。

社区发现算法(Community Detection)是一种图分析技术,旨在将图中的节点划分为若干“社区”,使得同一社区内的节点间连接紧密(边权重高),而不同社区间的节点连接稀疏。在此场景中,该算法通过用户行为数据自动识别出高频共现的实体群落(例如常被同一用户浏览的商品组合、或内容主题高度相关的短视频),本质上将“用户行为强关联”的实体打包为更大的分流单位“社区”。

其降低流量交叉的核心逻辑在于:若两个实体常被同一用户访问,则将其划分至同一社区,并确保该社区整体被分配至实验组或对照组。当用户访问其中一个实体时,由于同社区实体已被集中分配,其接触另一实体时仍处于同一分组内,从而尽可能减少跨组曝光的情况发生。

图贪心分流算法的其核心步骤如下:

步骤1:基于用户行为的图结构建模

以历史用户-实体的曝光数据数据为输入,构建以原始分流实体为节点(如商品的唯一标识ID)、以用户交叉曝光关系为边的加权图:

  • 节点:每个分流实体(如商品 ,  ,)对应一个图节点。

  • 边权重:若用户u同时访问过实体 ,与 ,,则 ,与 间边的权重增加,最终权重值为去重后的共现用户数,基于不同的业务场景,该权重也可以自由调整和定义,如定义为不去重pv数。

  • 图规模控制:为避免图结构过于稠密影响图算法执行效率,通过设定边权重阈值(仅保留权值较大的边)或随机采样(随机保留部分实体的边)。

步骤2:社区发现与分流单位重构

基于图结构,采用社区发现算法(本文选用Louvain算法)将原始实体聚类为新的分流单位:

  • 社区划分:算法自动识别用户共现密集的实体群落,使得同一社区内的实体被同一用户访问的概率较高,而跨社区实体共现概率较低。

  • 社区特征重构:对每个新分流单位(社区)计算其新的特征,其分组变量f₀取社区内实体的众数,指标变量 ,则聚合社区内实体原始值,使用旧特征的均值或总值作为聚合社区的新特征。若使用总值,可以选择增加一个指标变量记录当前社区内包含的分流单位数,从而维持实验组对照组在“个数”上均衡。

步骤3:基于新单位的贪心分流

将社区映射后的新分流单位作为实体,执行前述贪心交换算法流程:

  • 分流实体变更:原始实体集合替换为社区单位集合,每个单位的 与 值继承自步骤2,执行前文的贪心交换算法,并得到基于新社区单位的分流结果。

  • 分流实体还原:若社区单位被分配至实验组,则其包含的所有原始实体均归属实验组;对照组同理。因社区划分互斥,原始实体仅属于唯一社区,故最终分组天然满足原始实体的互斥要求,作为分流结果输出。

总的分流算法示意图如下,其中分区随机抽样算法被包含在贪心交换算法中,为其提供初始解。

图:图贪心分流算法流程

四、实证分析

4.1 对比方法与业务背景

对于上述算法,我们将其落地成为通用工具,并对其基于实际业务场景进行了全面评测,证明了其解决非用户端分流问题的可行性。

用于评测和应用的业务背景是:智行平台希望针对在该平台的部分中低价位酒店商户,参加不同的营销策略开展AB实验,因此,需要对部分中低价格段的酒店进行分流。这部分酒店存在着如下的特点:

  • 酒店数量级不超过一百万,且销量和曝光的马太效应较为明显,酒店特征分布稳定且单一,不均衡。

  • 同一地区的酒店之间存在着严重的用户流量交叉,直接用酒店随机分流会导致实验组对照组严重不独立。

  • 无论以酒店,还是以交叉程度较低的商业区、城市为单位进行预随机分流,随机多次都难以满足实验组对照组划分的相似性和稳定性。

因此,我们引入图贪心分流算法应用于该业务场景进行分流。在该酒店商户营销策略AB实验场景中,我们需要对比三类算法分流算法的分流效果:

  • 图贪心分流(本文提出的新方法):基于用户浏览行为构建酒店共现图,通过社区发现将酒店打包为群落,对群落执行分层初始化与贪心交换。在该实证分析中,为均衡算法效率,只保留了图中权重Top 40%的边来构建图,其余边被忽略。

  • 有先验知识的贪心分流(不使用图算法,而使用先验知识生成新分流实体):为了降低随机分组的流量交叉,同时加快分流效率,基于“同一商业区酒店用户重叠较低”的先验知识,将酒店按商业区打包后执行贪心交换,直至实验对照组的指标变量差异达到预设的标准以下。

  • 有先验知识的随机分流(此前内部AB实验采用的分流方式):为了减少流量交叉,同样适用前面的先验知识,酒店按商业区打包,而后进行随机分流,直至指标差异达到对应限度。在本数据环境下,分流效率过低,无法在有限尝试次数内内获得有效结果,至少需要重新随机检验200次以上,才有一次可用结果,绝大部分尝试既无法满足误差限度需要,也无法通过t检验。

在展示对比结果前,我们已经可以得出结论:贪心交换的引入已经可以大幅度提高了分流的效率,通过随机划分难以实现划分出变量分布均衡的实验组和对照组。因此,下文的内容更着重于对比使用“先验知识”和使用“图算法”后再执行贪心交换的结果差异。

4.2 效果评估维度与指标定义

实证分析要从两方面对比不同的算法分流方式,一方面是流量交叉,另一方面是分流精度。每个方面都有“算法指标”和“实证指标”两个指标,前者是倾向于算法角度的指标(如分类模型的AUC),后者则倾向于业务角度的指标(如模型上线后的用户转化率)。

4.2.1 流量交叉评价指标

1)算法指标——模块度

模块度是一种衡量图社区发现结果的指标,模块度取值范围为 ,值越大说明图的社区发现的结果越好,各个社区内部的关系更紧密、而外部的关系更稀疏。模块度可以理解为各个社区内连边数(权重)与随机期望的差值之和,当实际的边数越高于随机的期望时,这个图的节点就越集中,社区划分的结果也就越好。

想要计算模块度,需要输入一张完整的有向无权图,和社区发现的结果,即将分流的结果和用户的历史流量数据输入即可计算。

2)实证指标——用户端流量交叉率

我们统计分流时间点前每日实验组和对照组的用户重叠比例:

UV交叉率 = 实验组与对照组当日重叠UV数 / 实验组当日总UV数

最终取实验前30天的交叉率均值,作为用户端流量交叉率的指标。

4.2.2 分流精度

1)算法指标——最大相对差异:

将实验组和对照组在所有指标变量上的最大相对差异 作为“分流精度”,来评价分流算法的分流精度,具体定义在2.1节中已提到过。该值越低,说明指标之间越接近,表示分流精度越高。下述实证分析使用的是基于“总值”的相对差异。

2)实证指标——AA校验通过率

针对实验组与对照组分多个时间点,选择部分重要指标变量,进行双样本T检验,若p-value≥0.05则认为该指标无显著差异。统计:

分流前t检验通过率:分流数据时间点7 & 14 & 30 & 60天内,两组分流结果中所有指标变量均通过T检验,则视为本次分流“通过”,反之视为不通过,多次反复分流计算其通过概率。该值是为了刻画分流结果在实验前的一段时间内是不是相似。

分流后t检验通过率:分流数据时间点后14天内,两组分流结果中所有指标变量均通过T检验,则视为本次分流“通过”,反之视为不通过,同样多次反复分流计算其通过概率。假设分流后AB实验的周期是14天,该值是为了刻画分流结果在实验中的一段时间内是不是相似。

4.3 对比结果与分析

4.3.1 算法指标评估

图贪心分流和先验随机分流的算法指标的对比如下表所示:

算法类型

总分流次数

满足精度要求(D<=2.5%)的分流次数

通过率

通过样本分流精度均值

通过样本模块度

未通过样本D均值

未通过样本模块度

图分流算法

45

42

93.3%

2.37%

0.300

4.11%

0.319

先验贪心分流

100

44

44.0%

2.12%

0.105

7.49%

0.107

先验随机分流

200

0

0%

-

-

-

-

表:图贪心分流VS先验随机分流——算法指标对比

从通过率(满足精度要求的分流次数占比)来看,先验的贪心分流有着40%的通过率,而使用了图算法的贪心分流则可以让分流通过率提升到90%以上。

从通过样本的分流精度来看,图算法打包原始酒店为新个体的方式的确对最终精度产生的影响幅度有限。从表中看,分流精度和模块度二者不存在严格的相关性,通过与未通过样本的模块度都较为接近,这说明分流结果的流量交叉程度主要和贪心交换前的预处理相关。

分析流量交叉情况,经过额外的离线测算可知,若不使用任何先验知识直接进行随机分流,分流结果的模块度在0左右(由于该方法也难以得到满足精度要求的结果,同时也无法避免流量交叉,因此此前的AB实验也不采用该方法,故精度评测结果没有在表中给出);而使用了“不同商业区之间的流量交叉较低”先验知识进行分流的分流算法,能达到0.1左右的模块度;进而使用图算法优化分流,则能让模块度提升到0.3。

总的来讲,图算法在不影响最终分流精度的情况下,大幅度提升了分流通过率与模块度。

4.3.2 实证指标评估

检验内容

指标名

先验贪心分流图贪心分流

指标变量T检验

分流前t检验通过率

31.34%

77.78%

指标变量T检验

分流后t检验通过率

82.54%

82.86%

流量交叉情况

用户端uv交叉率

58%-60%

38%-40%

表:图贪心分流VS先验随机分流——实证指标对比

图贪心分流和先验贪心分流的实证指标对比见上表。其中“分流前”指分流数据时间点前7、14、30、60天共四个时间点,对这四个时间点业务上关心的核心酒店特征进行抽取,依次进行t检验;“分流后”指分流数据时间后14天的时间点,进行同样的特征抽取,进行T检验。

分析T检验的结果,两种分流后的T检验通过率都较高,但分流前显然图贪心分流更好,这说明图算法相对于使用先验知识,有更好的稳定性;分析用户交叉率,图算法打包分流实体相对于先验知识打包分流实体,可以将uv交叉率从60%降低至40%。

总的来说,图算法的分流结果相对于先验知识分流具备更好的稳定性,以及更小的用户流量交叉。

五、总结与展望

5.1 问题定义与场景分析

针对非用户端AB实验场景中的分流问题,我们明确定义了其技术挑战的核心形式:如何在多实验并行、流量有限的情况下,确保实验组与对照组的分流结果既满足业务指标分布的相似性,又能最大限度降低流量交叉干扰。为此,我们提出从两方面衡量分流效果:指标分布相似度与流量交叉程度。这一问题的定义,为后续方法设计与效果验证提供了明确的优化目标。

5.2 图贪心分流算法的提出与实现

为解决上述问题,我们提出了一种创新性的图贪心分流算法,其核心设计包括:优化的随机分流模块、贪心分流模块、图计算法模块,三个模块解决了上述问题,且支持灵活插拔,与特定的业务场景适配。

5.3 实证分析与效果验证

通过对比图贪心算法、先验知识贪心算法、先验知识随机分流算法的实验结果,我们可以得出结论:相对于随机划分,贪心交换算法大幅度提高了分流的效率,图算法的引入则在不影响最终分流精度的情况下,进一步降低了流量交叉。

5.4 未来研究方向

尽管当前方法已取得显著效果,仍有需要方向值得进一步探索,如:uv数据映射为图的方法,图算法与贪心算法精度与效率的平衡,分流精度、流量交叉、分区均匀性的权衡、算法进一步的部署和平台化。

【推荐阅读】

 “携程技术”公众号

  分享,交流,成长

「文智助手」全场景办公AI助理AI+OPC全流程实践方案(大赛作品) 阅读详情

相关推荐

船载 OpenHarmony AIS 航海工作台:告警与防碰撞预警系统

船载OpenHarmony AIS航海工作台的告警与防碰撞系统,集成十余类告警(超速、偏航、会遇、SOS等),通过网格空间索引实现高效邻近判定,保障实时性。告警管理器统一调度规则、去重、通知与日志,支持悬浮球、语音、跑马灯、弹窗多渠道触达,确保航行安全。SOS紧急通道独立运行,避免干扰。系统设计强调性能优化与多场景适配,为航海安全提供核心支撑。

专注于计算机研发知识和资讯分享 91

干货 | 携程酒店推荐模型优化

作者简介Yorkey,携程高级算法专家,主要从事大规模分布式推荐系统设计和算法研发工作。一、背景当用户在线上浏览酒店时,作为旅行平台,如何挑选更合适的酒店推荐给用户,降低其选择的费力度,...

携程技术 2262

保姆级教程:用STM32CubeMX HAL库搞定ESP8266连接,附串口printf调试全流程

本文提供了一份详细的STM32CubeMX HAL库教程,指导开发者如何实现ESP8266无线模块的连接与调试。从开发环境搭建、串口配置到AT指令通信解析,涵盖了物联网开发中的关键步骤和常见问题解决方案,帮助开发者快速掌握STM32与ESP8266的集成技术。

weixin_28273593的博客 504

从不均匀性角度浅析AB实验 | 京东云技术团队

其实是不能的,怎样确定这种人群素质的差异呢,可以采用AA实验,就是两部分人都走A,进行分开统计,可能会发现,位于0-49桶的人群本身客单价就是100,而位于50-99桶的人群可能只有94,这么看来B方案是能提升客单价的,因为位于50-99桶的人群本身指标就差一些。第二种,所有实验都用全部流量,此时我们认为实验虽然互相之间有影响,但是这种影响是正交的,量大的时候应该是均匀的,如下图所示,P实验的两个策略人群,到Q实验时,对Q的两个策略影响是均匀的。这里的素质包括消费能力,活跃度,年龄等各种人群因素。

伤心的辣条 695

ONNC Open Neural Network Compiler 开源神经网络编译器 一个 开源、模块化、可重用编译器算法和工具链的库,专门针对深度学习加速器(DLA)部署导入ONNX模型

ONNC是一个集合了开源、模块化、可重用编译器算法和工具链的库,专门针对深度学习加速器(DLA)。ONNC从底层开始构建,旨在将ONNX中间表示(IR)翻译成专有DLA代码。其软件架构设计强调可移植性和可重用性,从而简化了开发新后端的工作。上图展示了ONNC软件栈的顶层框图。软件栈从导入ONNX计算图模型到输出相应的硬件二进制文件,展示了各个功能块。

万有文的博客 1992

Windows平台MuJoCo仿真环境配置与Qt集成实战

本文详细介绍了在Windows平台上配置MuJoCo物理仿真环境并与Qt框架集成的完整实战流程。内容涵盖从环境准备、库文件配置、项目创建到核心代码编写的每一步,重点解决了Windows下常见的编译链接错误和路径问题,帮助开发者在Windows系统中高效搭建机器人仿真与可视化控制开发环境。

weixin_29221753的博客 172

增长黑客AB-Test系统(三)——AB-Test Hash分流

作者:livan来源:数据python与算法Hash分流介绍分流的方式有很多种,笔者这次来和大家聊一下Hash算法如何实现分流,Hash算法在融合MD5算法后,可以实现运算结果几乎不重复...

数据森麟 6135

LPC546xx USB接口VBUS阈值设计:从原理到实践,解决冷启动与可靠性问题

在嵌入式USB接口设计中,VBUS信号不仅是电源线,更是设备连接检测与电源管理的核心。其电压阈值直接决定了USB物理层(PHY)能否正确识别主机并建立有效会话。理解VBUS的会话有效电压(Votg_sess_valid)与PHY有效电压(VBUS_valid)等关键参数,是确保接口稳定性的基础。这些参数影响着设备枚举的成功率、通信稳定性以及长期可靠性。在工程实践中,尤其是对于集成PHY的微控制器如NPC LPC546xx系列,VBUS的连接方案(直接连接或通过稳压器)需要根据设备供电模式(自供电/总线供电)

weixin_30915275的博客 401

干货 | 强化学习在携程酒店推荐排序中的应用探索

作者简介宣云儿,携程酒店排序算法工程师,主要负责酒店排序相关的算法逻辑方案设计实施。目前主要的兴趣在于排序学习、强化学习等领域的理论与应用。前言目前携程酒店绝大部分排序业...

携程技术中心 725

OJ(while+cin.get()判断结束)

今天要记录一道看起来十分简单的OJ题目,但开始对于cin的一些操作忘得差不多了,没做出来,故记下来给自己提个醒。 描述 给出包含N个单词的一行输入,输出N行。第一行和输入一样。每次输出过一行后,这一行的第一个单词在下一行被放到最后。 输入 包含N个单词的字符串,单词以一个空格分开。N不在输入中给出,你需要计算单词的数量来获得。字符串包含的字符数小于100。 输出 输出N行。...

Stark_JC的博客 2357

gseapy python包GO、KEGG富集(注释)分析

文档案例参考:https://gseapy.readthedocs.io/en/latest/gseapy_example.html#Over-representation-analysis-by-Enrichr-web-services安装:建议安装最新版(这里安装的1.04):https://github.com/zqfang/GSEApy/releases。

weixin_42357472的博客 3610

6 款电商 AI 图片生成软件实测|国内 + 跨境卖家工具清单

电商 AI 作图工具已经从 "能不能用" 进入了 "好不好用" 的阶段。对于绝大多数卖家而言,现在的 AI 工具已经可以覆盖 60%-80% 的基础商品图需求,显著降低拍摄和设计成本。选择工具的核心逻辑不是 "哪款最强",而是 "哪款最适配你的品类、平台规模和团队能力"。垂直电商工具胜在工作流效率,通用生图工具强在创意上限,模板类工具赢在上手速度。建议根据自身业务阶段,搭配 1-2 款主力工具 + 1 款辅助工具,形成适合自己的视觉生产流程。

Mardi_Ladin的博客 365

SVN使用:使用TortoiseSVN遇到提示请执行“清理”命令的解决方法

作为程序员来说,在团队开发过程中关于代码管理的工具使用并不陌生,比较常用的代码合并管理工具如:Git、SVN等,虽然相关工具的使用并不复杂,但是还是要掌握常用的使用方法,尤其是相关的第三方软件的使用也是极为重要的,而且有时候使用这些三方软件来进行代码管理的时候也会遇到一些问题。本篇博文就来分享一下在SVN使用的时候使用TortoiseSVN遇到提示请执行“清理”命令的解决方法,方便查阅使用。

全沾软贱开发攻城狮 1万+

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 206

AI漫剧全套万能提示词合集

今天给大家整理一套已经跑通爆款漫剧的万能提示词库!覆盖:豆包剧本人设词 + 分镜生成词 + 即梦绘图词 + 动态优化词 + 防翻车固定词直接复制粘贴,新手也能做出稳定、高清、统一、有质感的AI漫剧!你是资深短视频漫剧编剧,擅长制作60秒竖屏爆款AI漫剧,请为我创作一集完整漫剧内容。要求:开头3秒高能抓眼,中段有冲突转折,结尾留强悬念钩子,节奏紧凑、适合短视频流量。首先生成固定统一人物人设:包含脸型、五官、发色、发型、穿搭、身材、气质、画风、光影细节,要求足够精细,保证全程角色不变脸。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 1893

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

我用 GPUWorks 在 M1 Pro 上搭了个发票识别原型

公司里经常要看电子发票。我想先做个小原型:把 PDF 发给一个自己部署的图文模型,让它提取发票类型、日期、交易双方和金额,再把结果交给同事核对。这个原型不用先接财务系统,先看看从部署到调用要走多少步,模型返回的内容能不能帮上忙。

鸽芷咕的博客 2万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

您您这可以把问小白的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。AI导出鸭

第三层是格式编译层。这个决策背后的判断很清晰:一个批量导出工具的价值,不在于“试三次”,而在于你真正用它处理了几十份技术文档、访谈记录或课程讲义之后,它是否值得留在你的工作流里。问小白的会话列表通过分页接口加载,AI导出鸭 在页面运行时建立旁路监听,捕获每一次分页请求返回的完整对话清单,包括会话 ID、标题、时间戳和隐藏的元数据字段。让AI导出回归优雅——这句话说的是:导出不该是体力活,而应该是一次完整的、可预期的文件交付。注意:这里的“批量”指的是左侧列表里的多个独立会话,不是一条会话内的多轮对话。

laoyunsi的博客 239

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

AI Agent之核心框架

A: 显式 Thought 有三类价值:可解释性(便于人类审计)、可调试性(定位哪一步选错工具)、学习信号(可做监督微调或评估中间步骤质量)。ReAct 把推理与 可执行行动 绑定,每一步行动后都有 真实 Observation 反馈,从而用工具结果约束生成,降低闭卷幻觉。做完不等于结束——还要 评估做得好不好,把 教训 记下来,下次 带着教训重试,反思作为 记忆,影响后续尝试的策略。工作流程:Action → Evaluation → Reflection → Retry。A: 普通 CoT 只在。

剑雨巍巍的博客 195

【从零理解 Spring AI · 12】MCP 的两种角色:做客户端还是做服务端

上一篇讲了 MCP 的概念:标准协议、三大角色、M+N 替代 M×N。

nice_lcj520的博客 492

AI 应用开发工程师技术实践:大模型接入、通用组件封装与性能优化

本文提出AI应用从PoC到生产的核心挑战:模型调用的持续可用、可控与可优化。通过构建统一LLM网关实现多供应商路由与故障转移,封装对话、工具调用与RAG组件以解耦业务逻辑,结合前缀缓存、批处理与流式背压治理等性能优化手段,形成“接通→接稳→接快”的工程路径,最终以工程化能力决定AI应用的生产可用性。

2301_79189962的博客 550

AI前沿日报 · 2026-11-04 | 祛魅时刻:Astra“纯读权重“神话的崩塌

①Astra"裸权重通吃"被spaCy创始人Honnibal精准祛魅——仅1/3实验真裸读,数学能力提升依赖Python+50次迭代;②Simon Willison用Qwen 3.8-27B端侧复现权重空间编程;③Nvidia开源Auto-Ontology自动知识图谱;④$800开源全域抓取机器人Stringman;⑤OpenAI悄然重开Codex训练开关引信任危机;⑥DeepMind发布Gemini 4 Argon机器人基础模型;⑦美国科技巨头隐性AI债务达3.2万亿美元,6个月增90%。

johnsong2009的博客 562

大模型 Embedding 与向量相似度详解

Embedding 解决的问题:计算机不懂文字,但懂数字│▼文本 → 向量(1024维浮点数数组)│▼相似度解决的问题:怎么判断两个向量(文本)有多接近│▼余弦相似度:看向量方向的夹角,越接近0°越相似│▼最终效果:语义搜索——理解意思,而非字面匹配一句话总结:Embedding 把文字变成数字,余弦相似度比较数字的方向,两者结合实现了"理解语义"的搜索。

T3165919332的博客 83

GPT-1 架构和计算细节

下面配合框图,对 GPT-1 的每个组件做公式展开 + 数值实例(配置:12 层 × 768,12 头,FFN 3072,词表 40478,共 117M 参数)。GPT-1 把翻译模型的编码器-解码器砍掉一半,只留解码器,然后以"预测下一个词"为目标在 BooksCorpus 上预训练。与 2017 原版的四个架构差异(框图中标 ★):h0=E[token]+Epos[position],E∈R40478×768, Epos∈R512×768h^0 = E[\text{token}] + E_{pos}[\

eloudy的专栏 274

终端 AI 审计与 “龙虾” 类智能体风险治理:从可见性到闭环溯源

生成式 AI 办公普及之后,数据泄露风险逐步下沉到终端。员工将合同、源代码、客户资料粘贴至公有大模型,以及龙虾(OpenClaw)这类本地开源 AI 智能体的滥用,成为企业安全新挑战。传统网络边界防护存在审计盲区,本文从风险链路拆解、核心能力模型、分级治理策略、落地踩坑点以及技术局限性多角度,分享终端侧 AI 安全治理的实践思路。

2401_86491085的博客 632

2.53 基于极稀疏指纹的室内定位注意力图元学习

该论文发表于IEEE Transactions on Mobile Computing(TMC)2026年6月,面向极稀疏指纹条件下的WiFi室内定位,针对指纹采集人力成本高、标记指纹稀缺时定位精度大幅下降的痛点,提出注意力图元学习模型AGML(Attentional Graph Meta‑Learning),结合图神经网络、元学习、两种指纹数据增强与分布对齐技术,在标记指纹极少的场景实现高精度室内定位,同时公开了多套真实+仿真定位数据集用于基准测试。场景:二维室内空间,障碍物造成信号遮挡,

weixin_42963026的博客 333

语音识别与语音合成的技术原理及应用

语音识别 #语音合成 #人工智能 #大模型。语音识别与语音合成的技术原理及应用。一、语音识别的核心原理。二、语音合成的核心原理。三、工程落地的主要难点。五、需要关注的现实问题。

weixin_62919816的博客 206
上一篇: 干货 | 携程机票Skip原生跨端框架探究
下一篇: 干货 | 破局传统埋点四大痛点!携程机票前端可视化埋点实践
携程技术
博客等级 码龄10年 3716粉丝 324原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值