yangxiaohui

yangxiaohui voegde pull request samen algorithm/recommend-server#458

V564 排序公式简化为 fmRov × max(norDNNScore, 1e-6

3 weken geleden

yangxiaohui sloot pull request algorithm/recommend-server#458

V564 排序公式简化为 fmRov × max(norDNNScore, 1e-6

3 weken geleden

yangxiaohui maakte pull request algorithm/recommend-server#458

V564 排序公式简化为 fmRov × max(norDNNScore, 1e-6

3 weken geleden

yangxiaohui push update naar feature_20260629_yangxiaohui_v564_simple_mul in algorithm/recommend-server

  • 4b811ddabd feat: V564 排序公式简化为 fmRov × max(norDNNScore, 1e-6) 将 V564 sortscore 由 fmRov × (rosAdd + rosW × newNorDNN) × (vorAdd + vorW × vor) + 5 linear bonuses 简化为 score = fmRov × max(norDNNScore, 1e-6) if (!Double.isFinite(score)) score = 0d 离线 72 天 (0417-0627 over 49.8M sample/天) 评估依据: - composite 指标 (gauc_share + gauc_rov + top10pct_rov 容差几何均) 自 5/15 起持续 ≥ 1.0 - 平均高于线上 sortscore 2-4%, share/rov 3 维度均不跌穿 baseline - 6/4-6/8 退化期: 旧公式 top10pct 跌 -10%, 简化形式同期跌 -5% → 5 个 linear bonus 对脆弱性贡献最大 防御: - 1e-6 epsilon 兜底: NorDNN 缺失 (12% 样本) 或负值 (1.76% 样本) 时 score 仍按 fmRov × 1e-6 区分, 不全 tie 在 0, 也消除 inversion bug - Double.isFinite 防 NaN/Infinity: Double.compare(NaN, x) 返正数会让 NaN 项排到推荐顶部, 必须显式归 0
  • 9af367e211 Merge branch 'feature_20260622_zhaohaipeng_feature_optimize_adaptive' of algorithm/recommend-server into master
  • b59a269954 feat:redis store optimize
  • c336252e2c feat:redis store optimize
  • d029e4ecc6 Merge branch 'feature_20260622_zhaohaipeng_feature_optimize_adaptive' of algorithm/recommend-server into master

3 weken geleden

yangxiaohui voegde pull request samen algorithm/recommend-server#455

562 baosong

1 maand geleden

yangxiaohui sloot pull request algorithm/recommend-server#455

562 baosong

1 maand geleden

yangxiaohui maakte pull request algorithm/recommend-server#455

562 baosong

1 maand geleden

yangxiaohui push update naar feature_20260618_v562_baosong_recall in algorithm/recommend-server

  • 955c54df85 feat: V562 将 dk_elements 召回改为保送 (独立配额, 不进个性化/非个性化) - dk_elements (YearShareDkElements) 从 V562 个性化白名单移除, 改为末尾保送一路 - 新增 RecallUtils.extractRecallGuaranteed: 按粗排分选 topN, 不回填/不加重复, 覆盖 Video.rovScore + 漏斗 entry.score, 标 self/other; 跑在两路截断之后, 不扰动前两路 - 新增 COARSE_RANK_FETCH_PUSH_FROMS, 让粗排分拉取覆盖 dk 保送路 - 现有 coarse_rank_summary 日志不变, 保送观测单独打 baosong_summary - 3 个 Apollo 开关 (默认): dkElementsBaosongTopN=10 / dkBaosongUseCoarseScore=1 / dkBaosongLog=0 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
  • 63bbef6d60 Merge branch 'feature_20260616_v839_year_valid_play' of algorithm/recommend-server into master
  • a763ccd592 feat: V839 引入 YearValidPlayDkElements 召回, 替换 YearShareDkElements V839 实验差异点 (vs V562): 把"分享行为源 -> dk_elements"召回替换为 "有效播放行为源 -> dk_elements"召回, 形成单变量纯净 AB 对照, 验证有效播放 信号在 dk_elements 召回链路上是否优于分享信号. - YearValidPlayDkElementsRecallStrategy (新建): 克隆 YearShareDkElements 架构, 触发源改读 userNetworkSeqFeature.rp_vid 序列 (上游已过滤为有效播放 vid, 无需 a_t_s 类型过滤), 复用 elements_rovn_recall Redis 倒排. - RecommendService.allVids 加入 rp_vid 序列, 让 userNetworkSeqVideoInfoMap 含这批 vid 的 dk_elements; 上游未填充时返回空, 对其他实验零影响. - V839 个性化白名单的 YearShareDkElements 替换为 YearValidPlay, 仍 7 路. - RecallService gate: V839 解绑 YearShare, 独立挂 YearValidPlay; YearShare 退回 562/536 共用.
  • 593fae08ef sync: V839 整段克隆 V562 (DNN + 粗排截断 + 白名单架构) 为后续在 V839 上做"一年有效播放召回实验"打底, 让 V839 与 V562 行为完全等价: - RankStrategy4RegionMergeModelV839: 整段重写为 V562 副本, 仅差 Apollo key (weightv839)、log exp 标签 (exp=839) 与注释里的实验编号。方法顺序/行号 与 V562 100% 对齐, 便于 step 2 增量 diff 审查。 - RecallService gate: V839 命中用户也挂 YearShareDkElementsRecallStrategy, 否则 V839 个性化白名单引用该路就是死引用 (公共池无来源)。 - apollo/rank.score.merge.weightv839.json 已本地同步成 V562 内容 (untracked, 需运维手动同步到 Apollo 后台)。
  • 661cdeb9f9 Merge branch 'feature_20260615_new_experiments' of algorithm/recommend-server into master

1 maand geleden

yangxiaohui voegde pull request samen algorithm/recommend-server#454

feature_20260616_v839_year_valid_play

1 maand geleden

yangxiaohui sloot pull request algorithm/recommend-server#454

feature_20260616_v839_year_valid_play

1 maand geleden

yangxiaohui maakte pull request algorithm/recommend-server#454

feature_20260616_v839_year_valid_play

1 maand geleden

yangxiaohui push update naar feature_20260616_v839_year_valid_play in algorithm/recommend-server

  • a763ccd592 feat: V839 引入 YearValidPlayDkElements 召回, 替换 YearShareDkElements V839 实验差异点 (vs V562): 把"分享行为源 -> dk_elements"召回替换为 "有效播放行为源 -> dk_elements"召回, 形成单变量纯净 AB 对照, 验证有效播放 信号在 dk_elements 召回链路上是否优于分享信号. - YearValidPlayDkElementsRecallStrategy (新建): 克隆 YearShareDkElements 架构, 触发源改读 userNetworkSeqFeature.rp_vid 序列 (上游已过滤为有效播放 vid, 无需 a_t_s 类型过滤), 复用 elements_rovn_recall Redis 倒排. - RecommendService.allVids 加入 rp_vid 序列, 让 userNetworkSeqVideoInfoMap 含这批 vid 的 dk_elements; 上游未填充时返回空, 对其他实验零影响. - V839 个性化白名单的 YearShareDkElements 替换为 YearValidPlay, 仍 7 路. - RecallService gate: V839 解绑 YearShare, 独立挂 YearValidPlay; YearShare 退回 562/536 共用.
  • 593fae08ef sync: V839 整段克隆 V562 (DNN + 粗排截断 + 白名单架构) 为后续在 V839 上做"一年有效播放召回实验"打底, 让 V839 与 V562 行为完全等价: - RankStrategy4RegionMergeModelV839: 整段重写为 V562 副本, 仅差 Apollo key (weightv839)、log exp 标签 (exp=839) 与注释里的实验编号。方法顺序/行号 与 V562 100% 对齐, 便于 step 2 增量 diff 审查。 - RecallService gate: V839 命中用户也挂 YearShareDkElementsRecallStrategy, 否则 V839 个性化白名单引用该路就是死引用 (公共池无来源)。 - apollo/rank.score.merge.weightv839.json 已本地同步成 V562 内容 (untracked, 需运维手动同步到 Apollo 后台)。
  • 661cdeb9f9 Merge branch 'feature_20260615_new_experiments' of algorithm/recommend-server into master
  • 225581fa88 fix: RecallService 补 V536/V569 dk_elements 召回 gate V536 复用 V562 的 YearShareDkElements (gate 改成 isHit562 || isHit536), V569 新增 isHit569 gate 挂载 YearReturnDkElements (本分支前面新建的 click 触发版召回)。 修复前症状: V536/V569 命中时, rank 类白名单留了 dk_elements 名额, 但 RecallService fail-closed 没挂载对应 strategy, 候选池里永远是空。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • cba67aa062 tweak: 预曝光过滤默认 TTL 从 30min 缩短到 5min PreViewedService.updateCache / updateSessionCache / resolveExpireMinutes 默认值统一 30 → 5 (含 2 处注释、1 处 javadoc、4 处兜底值)。 副作用: Apollo preview.exp.config 必须给 baseline 实验 (V566/V568) 显式 配 "30" 才能保持原行为, 否则会随默认掉到 5min, AB 对比失效。本地 apollo/preview.exp.config.json 已加 "566": 30 / "568": 30, 待运维同步推送。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

1 maand geleden

yangxiaohui voegde pull request samen algorithm/recommend-server#453

粗排、后处理推全+新实验

1 maand geleden

yangxiaohui sloot pull request algorithm/recommend-server#453

粗排、后处理推全+新实验

1 maand geleden

yangxiaohui maakte pull request algorithm/recommend-server#453

粗排、后处理推全+新实验

1 maand geleden

yangxiaohui push update naar feature_20260615_new_experiments in algorithm/recommend-server

  • 225581fa88 fix: RecallService 补 V536/V569 dk_elements 召回 gate V536 复用 V562 的 YearShareDkElements (gate 改成 isHit562 || isHit536), V569 新增 isHit569 gate 挂载 YearReturnDkElements (本分支前面新建的 click 触发版召回)。 修复前症状: V536/V569 命中时, rank 类白名单留了 dk_elements 名额, 但 RecallService fail-closed 没挂载对应 strategy, 候选池里永远是空。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • cba67aa062 tweak: 预曝光过滤默认 TTL 从 30min 缩短到 5min PreViewedService.updateCache / updateSessionCache / resolveExpireMinutes 默认值统一 30 → 5 (含 2 处注释、1 处 javadoc、4 处兜底值)。 副作用: Apollo preview.exp.config 必须给 baseline 实验 (V566/V568) 显式 配 "30" 才能保持原行为, 否则会随默认掉到 5min, AB 对比失效。本地 apollo/preview.exp.config.json 已加 "566": 30 / "568": 30, 待运维同步推送。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • 5ac6828c17 fix: V536 补加 mergeAndSort + V562/V564/V565/V569 mergeAndSort 挪位与 V567 对齐 挪位: V562/V564/V565/V569 的 mergeAndSort 从 parseUserProfile 之前挪到 fetchCoarseRankScores 之前, 与 V567 方法顺序一致 (mergeAndRankRovRecall → mergeAndSort → fetchCoarseRankScores → parseUserProfile)。 方便日后 diff V567 时只看到本实验独有改动, 不被位置差异噪音干扰。 V536 补加: 上次叠加 V567 改动时遗漏 V536, 本次补上 3 imports + mergeAndSort 方法体, 位置与其他 4 个实验一致。 V563 不动 (无 fetchCoarseRankScores, mergeAndSort 紧跟 mergeAndRankRovRecall 已是正确位置)。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • 94a2cb9e1d feat: V562/V563/V564/V565/V569 叠加 V567 改动 (preview TTL 缩短 + 移除后处理) 5 个 rank 类各加 3 imports (FunnelContext / RankResult / RandomUtils) + V567 极简 mergeAndSort override (rov 空兜底 + 流量池按比例强插, 跳过 标签 filter / boost / 强插 / 品类降权 / 节日降权 / 密度控制), 与 V567 行为完全一致。 Apollo preview.exp.config 同步加 562/563/564/565/569 → 5min (本地副本 已更新, 运维需推送 Apollo 后台才生效), 预曝光过滤窗口对齐 V567 (默认 30min → 5min)。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
  • 3b1ad0a45c feat: 新增 YearReturnDkElements 召回 (click 触发版), V569 接入 新增 YearReturnDkElementsRecallStrategy: 基于 YearShareDkElements 复制, 仅把用户行为序列的 type 过滤从 "share" 改为 "click", 其余逻辑 / Redis 倒排 / 参数完全一致。Spring 自动注册到 strategyMap。 V569 实验改造: NON_PERSONAL 白名单的 dk_elements 召回由 share 触发版换为 click 触发版, 这是 V569 相对 V562 的核心实验差异点。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

1 maand geleden