最近更新时间:2023.12.07 19:44:43
首次发布时间:2022.12.26 10:18:06
A:平台当前支持的行业类型为电商行业、内容行业(长视频、内容社区)、金融行业,后续将逐步推出社交、广告等行业。当前支持的推荐类型为“猜你喜欢”和“相关推荐”,即根据用户兴趣,推荐给用户感兴趣的物品,达到“千人千面”的效果。后续将逐步拓展热门推荐、沉浸式推荐等推荐类型。
A:应用是指是在智能推荐平台完成推荐服务的一条完整线路。一个公司可能会有多个应用,例如:字节跳动有今日头条、抖音等多个app。如果一个公司有多个app就需要创建多个应用。一个应用可以绑定一个行业模板,例如电商行业/长视频行业等,如果一个应用下需要用到不同的行业模板时,也需要创建多个应用。
A:在应用的任何阶段,均支持新增字段;对于已定义的字段,不支持删除或修改。
A:若您需要上传平台提供的数据模板中没有的字段,可以在表定义时选择“添加自定义字段”,输入新增字段名称、类型及描述,添加完毕后点击右上方的“确认”即可保存。
自定义字段支持的类型包括:int32、int64、string、float、double、array,其中复杂类型 array 字段需要用 json string 传输。自定义字段可用于后续归因、加权打散规则配置等流程中。
A:spm(Super Position Model)全称超级位置模型,主要用于标识行为发生的位置。spm 位置编码由 A / B / C / D 四段构成,各分段分别代表 A:业务, B:页面, C:页面区块, D:区块内点位。段之间用$##$分隔,即A$##$B$##$C$##$D,spm 各段建议传明文。某一段为空时直接传空字符串,如第二段为空, 则传“A$##$$##$C$##$D”。
spm 标识非常重要,数据校验报告、AB 实验报告中均需要查看分场景(一般取 spm 到页面区块的前三段)的指标。
A:归因分析用于计算用户行为(例如电商行业的商品购买成功、长视频行业的视频播放等)的产生主要来源于前面哪些场景下的哪些行为。将整个时间线上的用户行为经过去重后,构建一个转化路径图。例如电商行业常见的归因路径:曝光-点击-加入购物车-下单-购买成功。长视频行业常见的归因路径:曝光-点击-播放。
为什么需要配置归因?
关于归因配置的详细说明可查看归因配置。
A:平台在接收数据时不会对数据进行去重。在做数据校验时,平台会对用户表和商品表按id去重,取最近的一条记录;行为表会做两种去重处理,一种是所有字段完全一样的去重,一种是按照窗口做去重,即一定时间窗口(可配)内user_id+item_id+spm一样的数据只会取一条,其他的会打上去重标记。关于去重配置的详细说明可查看去重配置。
A:
离线数据同步: 离线数据同步包括测试数据、历史数据、增量天级数据同步阶段,同步方式如下:
实时数据同步: 实时数据同步阶段使用。通过write接口发送,实时等待返回结果。
说明
对于实时数据做补传或重传(传今天之前的数据)时需要使用write + done接口,且同步阶段应为incremental_sync_daily
。
A:user/item 数据在正式数据的第一天(也即历史阶段第一天)传一份全量数据,之后每天增量传输即可。只需要传新增/更新的数据,且只需要传必传字段+有更新的字段,无任何属性更新的user/item不需要传输。例如item_id=12345的物品,在2023/03/07从上架状态调整为下架状态,其他字段均无更新,则传输时只需要传item_id
和status
两列;item_id=23456的物品,只有tags发生了变化,那么只需要同步item_id
(必传字段), status
(必传字段)和tags
(更新字段)即可。
A:对于string类型字段,例如要将user表的tags字段由“A$##$B$##$C”
更新为无有效值,流式数据需要传“”
,不能传null
;批式数据无法更新。对于array[]
或[""]
,不能传null
;对于批式数据需要传[]
。
A:同步失败可能的原因:1)没有传输数据就调用了done;2)传输的数据都不合法、被API拒绝了;3)传输了合法数据,但平台归档异常了。建议先排查是否存在前两种情况,如都不存在,请联系推荐平台团队。
A:历史阶段,在选择时间范围时,user表和item表只需要选择一天即可;增量阶段,无需传数的表可以选择跳过。
A:增量数据阶段,均可以通过页面上的「重新同步」操作进行数据重传,需要注意的是:
incremental_sync_daily
;A:可以支持。在接入增量数据时,不同表可以选择不同的更新方式,且更新方式后续支持变更。
更新方式的选择:
修改前 | 修改后 | 典型使用场景 | 影响 |
---|---|---|---|
天级更新 | 天级更新+实时更新 | 增加实时更新的方式,例如接入初期item表还无法做到实时更新,仅通过天级更新;后期出于对实时性的要求,经过改造可以做到实时,则增加实时更新的链路;同时由于某些数据可能无法通过实时传输,因此保留天级更新的链路。 |
|
实时更新 | 变更为实时更新,例如接入初期item表还无法做到实时更新,仅通过天级更新;后期出于对实时性的要求,经过改造可以做到实时,且所有数据都可做到实时更新,无需保留天级更新的链路。 |
| |
实时更新 | |||
天级+实时更新 | 实时更新 | 停止天级更新的方式,例如实时行为数据在质量比较稳定时,可以只保留一种更新方式,无需T+1同步天级数据,系统会自动将实时数据dump下来并基于此产出。 |
|
A:
等待中:通常是报告产出条件不满足,校验报告产出条件为:对于用户表/内容表,需要满足开始时间到当天的数据连续;对于行为表,当天有需要行为数据。
校验报告中各部分产出条件如下:
注:对于增量实时要想产出报告,必须保证增量实时接入前所有天级数据都同步完成且报告无阻断或者跳过;仅实时情况下,历史同步和增量实时之间如果有日期gap,也需要补传或者跳过处理
执行中/执行失败:可能是资源问题或任务异常,建议联系推荐平台团队。
A:某天的校验报告状态根据该天所有校验项的状态来确定,只存在合格和严重两种状态。只要出现一个状态为“严重”的校验项,则当天报告状态为“严重”,否则为“合格”。 对于校验状态为“严重”的报告,建议的处理步骤如下:
注:调整阈值后,只会对当前校验状态是“严重”的报告生效。
A:一个表的字段可以通过多个任务进行定义,一个任务只能输出到一个中间表。
A:任务SQL语法标准:批式任务采用ANSI SQL 2011标准,流式任务兼容 Flink SQL 语法。 具体支持的SQL函数说明参见SQL帮助文档
A:从执行周期上看,批式任务数据不会立即处理,而是先保存下来,再按一定的周期处理,如每天、每小时等进行处理;流式任务则会收到数据立即进行处理,处理完立即发往下游,过程中数据往往不会被保存下来。从数据来源上看,批式任务数据来源为天级数据(包括测试数据、历史数据、增量天级数据);流式任务数据来源为实时数据(增量实时数据)。
A:在SQL编辑区域选择“配置”,可以添加上游依赖任务。
A:执行历史某一时间段内的任务,只有批式任务支持回溯功能。
A:支持,在查看任务执行情况列表中可以操作。
A:原始特征上游直接映射数据源的某个字段,下游经过抽取生成特征。一个原始特征可以分别关联一个离线数据源和一个在线数据源,离线数据源在样本生成选择离线特征时读取调用,在线数据源在在线推荐服务时读取调用。
A:原始特征需要和选择数据源字段的字段类型一致;不同类别的原始特征只能选择含有对应主键字段的数据源;要保证原始特征的离线数据源和在线数据源的数据一致性。
A:选择在线请求数据源,在字段下拉列表中点击添加字段即可。注意这里的字段要确保和个性化推荐接口里上传的自定义参数一致。
A:原始特征经过特定的抽取方法计算得到特征
A:是指将原始特征或特征,经过某种计算后进行哈希,输出模型可以识别的数据的计算过程。
A:首先通过标签或者数据源批量获取原始特征,然后基于原始特征增加前后缀的方式定义特征的名称,并且基于原始特征类型定义默认的抽取方法和参数配置,最后把设置提交确定,即可得到批量的特征信息。您也可以在此基础上做相应修改进行提交保存。
A:如果一个栏位在线服务预估时,会使用某个特征,则我们称为该特征关联了该栏位。这里有两种情况:一个栏位中线上模型使用的所有特征,都自动和该栏位关联;栏位中线上模型没有使用的,但是想在线请求时也计算并且dump下该特征值,以作为在线特征来生成样本,可以通过手动关联来实现。
A:行为数据和指定特征数据拼接生成样本。样本中包含特征,供模型训练使用。特征除了前面提到的包含在样本中外,还会直接在线用于线上预估。
A:批式样本是指按天或按小时进行更新生成的样本,现在平台支持3种批式样本生成途径:天级行为数据源拼接离线特征;天级行为数据源拼接在线特征;dump流式样本成小时级追新的批式样本。流式样本是指实时的行为数据源拼接在线特征实时更新生成的样本。
A:离线特征是指在拼接样本时使用的是离线计算生成的特征。在线特征是指拼接样本时使用在线服务预估时在线抽取生成的特征。流式样本只能使用在线特征,批式样本可以选择在线特征或离线特征。
A:排查流式样本的相关问题,需要要先理解流式样本的开发链路。其链路中主要环节和注意事项如下:
主要环节 | 注意事项和检查点 |
---|---|
确认数据格式 |
注意 这里未正确配置会导致流式样本数量变少,如果上述规则不满足您的业务或数据需求,请告知您的客户成功经理或点击页面右下角的“在线客服”,我们会协助您完成配置。 |
完成数据同步 |
注意 这一步非常关键,未正确同步会导致3个主要问题:
|
发布在线特征 |
|
创建流式样本 |
|
模型过滤样本 |
|
A:召回规则如果绑定在线服务后,进行下线操作时,对应的在线服务将会按照下线召回后的配置重启服务,重启后会生成一个新的在线服务版本,用户请求时将会按照最新的在线服务版本返回推荐结果。
A:自定义召回用于 将已经加工好的召回数据源与平台召回进行融合的场景,目前仅在私有化环境支持,仅支持接收 Http数据。自定义召回创建完成并发布成功后,您可以在「在线服务-召回策略」配置中选用。
A:自定义规则和内置规则是互相补充的关系,可以一起使用。通常自定义规则会在平台规则之后生效,在线服务 pipeline 生效的顺序为:召回—>召回合并&过滤—>自定义过滤—>粗排—>精排—>内置规则—>自定义重排—>自定义返回字段
A:参数文件的主要作用是将同一个策略不同场景下复用。例如一个自定义过滤规则,需要用到某个指定字段作过滤,但在不同场景需要过滤的值不同,则可以将该字段抽象为一个参数,创建不同的参数文件,在多个场景下选择同一个自定义过滤的策略、但是选用不同参数文件。当然,如果没有复用需求、也可不创建参数文件。
A:使用自定义规则,需要注意以下几点:
A:单个spm流量较少,无法ab实验验证推荐效果;多个 spm 配置相同,避免重复配置,可以绑定在一个栏位下,使用该栏位的在线服务配置。
A:若要开启相关推荐,首次创建应用时必须勾选 parent_goods_id / parent_item_id 字段。
A:一个栏位下只能有一个在线服务,已经创建在线服务后,新建在线服务的按钮就不可点击了。但是一个在线服务可以有多个版本,如果要新建在线服务的版本,可以在现有版本的基础上进行复制,复制后会创建一个新的在线服务版本。
A:只要有一个tags的值相关、就算作同一维度。比如物品 A 的 tags 值为“1$##$2$##$3”,物品 B 为“1$##$4$##$5”,二者算作同一维度。
A:下发去重使用当前栏位的下发记录,即对于同一栏位下所有 spm ,满足下发去重配置条件的物品将不会被推出;其他行为使用全场景的行为记录,即在任一 spm 下满足行为去重配置条件,则该物品将不会被推出。
A:负反馈过滤/降权规则,使用的是全场景的负反馈数据。即对于配置了负反馈规则的栏位,只要任一场景发生了 dislike 行为,负反馈规则都会生效。
A:平台默认使用该 spm 下点击高热的 5000 条行为记录作为兜底结果来源。当行为数据的更新方式只有一种时,则使用该行为数据源;当行为数据的更新方式同时有天级+实时,则使用实时更新的数据。
A:如果在线服务配置完成且上线后调用推荐 API 无结果返回,请参考如下情况分析原因。
1)用户行为数据过少
case:配置高热召回为“近10min
的点击
行为按照行为频次进行统计”,且行为数据接入方式为实时更新。召回的时间范围是以用户请求起往前数10min按照点击行为的频次进行统计,但是用户在近10min中无行为,或者行为过少无法进行计算,会导致在线服务无结果。
2)召回配置行为与数据接入行为不一致
case:同上,配置高热召回为“近10min
的点击
行为按照行为频次进行统计”,但是上传的行为中无点击数据(例如有的视频滑动后直接播放不需要点击因此平台没有上传点击行为),由于数据接入无对应的行为也会导致服务流无结果
3)刚开始有结果,刷新几次之后无结果
case:平台设置“禁止出现最近100条
已经下发
的内容,如果平台接入的内容数据过少,刚开始推荐的商品被去重后,导致后面无数据展示。
4)设置过于严格的过滤规则
case:平台设置的 物品池过滤/动态过滤规则 将发布10天内的商品保留,但是上传的商品发布时间都超过10天以上,会导致在线服务无结果。
5)status字段导致异常
status字段为0或者不上传,代表对应的商品是不可推荐的,不可推荐的商品在服务流中会被过滤掉,如果该字段不上传,或者上传的都为0也会导致在线服务无结果。
6)新用户访问无结果,老用户有结果
用户兴趣召回,重定向、item-cf以及模型都是基于用户行为进行统计的,新用户在平台没有任何行为,新用户首次访问的结果是高热召回的结果,后续随着行为的积累其他召回规则才会生效,如果未设置高热会导致新用户请求无结果。
7)首次创建服务流的平台调度任务的影响
首次创建模型召回,需要12个小时完成构建候选和索引的任务,第二次之后无调度时间影响。首次创建item-cf召回,需要6个小时完成任务调度,第二次之后无调度时间影响。增量天级上传数据,首次配置上线的服务流会在次日传完新数据后有结果返回,第二次之后无时间影响。
8)召回批式任务生效时间的影响
批式任务每日定时计算,当天提交的任务从第二天开始生效。当天发布后使用该召回的在线服务,需要第二天才可使用。
说明
A:AB 报告一般是11:00到13:00每半小时定时刷新一次,若查看时间较早或数据同步完成时间较晚,都可能造成没有报告的情况;目前报告页面右上角也提供了刷新按钮,点击之后,会根据当前 clickhouse 中的数据生成一份报告(ck中数据不完整的话,报告会不准确)。
A:表中的数据是是直接查的缓存,图中数据查的是db,表中数据查询的是缓存。两边不一致时,可以点一下右上角的刷新。
A:物品池规则设定后,对应的spm下的推荐结果只能推荐满足物品池规则的物品;条件筛选是在满足物品池规则的基础上,对物品进行筛选查询,帮助用户更快的查询到满足条件的物品,从而进行强推/封禁等配置。
A:设置强推后的物品将会按照设置的位置在推荐结果中进行展示,在强推时间范围内,每个用户每次请求都会看到该物品。
A:可能是同步的数据都不满足status=1的条件,建议先自行排查。若排除此原因,可联系推荐平台团队解决。
A:推荐测试是模拟用户真实请求,查看该请求下的推荐结果,会对真实用户请求产生影响,例如如果在线服务配置了去重,在推荐测试请求的结果在用户实际请求时就会被去重。
A:如果输入系统中未被传入的用户ID,该ID会被视为新用户,按照新用户请求返回推荐结果。
A:召回策略为空的推荐测试返回,是触发了兜底的结果,排查思路请参考以上「为什么在线服务无结果?」。
A:老项目和新应用的 URL,predict/callback请求体定义都是相同的。针对新应用,predict/callback 改变点有两个。
Enable-Spm-Route: true
的标识。举例:
如果栏位 1 绑定了“1$##$2$##$3”这个 spm。如果想请求栏位1,那么在 predict/callback 请求体里的 spm 需要填上“1$##$2$##$3”,在请求的 header 里需要带上 Enable-Spm-Route: true
。这样服务就会根据“1$##$2$##$3”的绑定关系将请求路由到栏位1的处理逻辑之中。
如果请求的 header 没有携带 Enable-Spm-Route: true
,那么服务会判定这个请求是属于老的项目请求。
如果请求的 header 携带了 Enable-Spm-Route: true
,但是请求体里填写的 spm 找不到绑定的栏位,那么客户端会接收到报错。
A:使用推荐 API 请求推荐平台时,平台会根据 spm 参数找到该 spm 关联的栏位,并生效该栏位的在线策略,因此 API 参数中的 spm 和栏位关联的 spm 需要严格匹配。API 参数中的 spm,需要为三段,如果某一段为空,则需要留空,如“A$##$B$##$”,不能传“A$##$B”,否则会与栏位关联 spm 的格式不一致导致匹配失败。 行为数据中的 spm,根据需求可以传 3 段/ 4 段,第 4 段含义为点位,通常只用作特征。在栏位关联的 spm 下,效果数据和 AB 报告指标会筛选该 spm 下的行为数据(使用前三段匹配)做统计,兜底数据也会基于该 spm 下的点击高热行为数据。即行为数据 spm 的前三段需要与栏位关联的前三段严格匹配。