汽水音乐推荐机制:4 个探索位与它换来的留存
每天早上六点,汽水音乐会给每个活跃账号生成 30 首歌。这个数字不是拍脑袋定的:它对应约 105 分钟的播放时长,接近一次通勤加一段午休。30 首背后是一条四层链路,候选池从百万级压到 30 首,中间要做三次过滤和一次强制打散。
背景
推荐系统常见的问题不是“推不准”,而是“越推越窄”。用户连续听三天某类曲风,模型会不断加重该曲风权重,两周后列表里全是同一种声音。汽水音乐的做法是在链路末端加一层重排,强制留出探索位,代价是短期点击率下降,换来的是长期留存。
第一层召回:从百万曲库捞到三千首
召回阶段并行跑五路策略:协同过滤(听过这首歌的人还听了什么)、内容相似(音频指纹与曲风标签)、场景匹配(当前时段与设备)、编辑精选、以及新歌池。五路各出 600 首左右,合并去重后约 3,000 首进入粗排。
场景匹配这一路是汽水音乐与综合平台差别较大的地方。它把时间、设备、网络状态、是否佩戴耳机作为特征:早八点在地铁上用 4G、戴蓝牙耳机,与晚十点在 Wi-Fi 下用音箱,召回池完全不同。
新歌池保证新上架作品有曝光机会。每天约有 2,400 首新歌进入池子,按曲风分布抽样,每首歌至少获得 500 次曝光后才进入正常排序,避免上线即沉底。
| 召回路径 | 候选量 | 占比 | 主要负责 |
|---|---|---|---|
| 协同过滤 | 约 600 首 | 20% | 口味延续 |
| 内容相似 | 约 600 首 | 20% | 曲风扩展 |
| 场景匹配 | 约 600 首 | 20% | 时段与设备 |
| 编辑精选 | 约 400 首 | 13% | 质量兜底 |
| 新歌池 | 约 800 首 | 27% | 新作品曝光 |
第二、三层:粗排看特征,精排看完成率
粗排用轻量模型对 3,000 首打分,特征维度 42 个,包括用户近 7 天完播率、曲风分布、跳过位置、音量变化等。这一步的算力预算控制在 30 毫秒内,目的是快速砍掉明显不合适的候选。
精排换成深度模型,特征扩展到 180 多个,核心指标是“预计完播概率”而不是“点击概率”。点击高但 15 秒内被跳过的歌,在精排里会被扣分,这条规则直接把“标题党式推荐”挡在门外。
音量特征的使用比较特别。用户在某一首歌中途多次调低音量,通常意味着这首歌的响度或风格与当前环境不匹配。这个信号在精排里的权重是 0.08,看起来不高,但在夜间时段的实际影响排进前五。
| 特征 | 权重 | 含义 | 采集窗口 |
|---|---|---|---|
| 近 7 天完播率 | 0.21 | 同类曲目听到结尾的比例 | 7 天 |
| 跳过位置 | 0.17 | 在第几秒切歌 | 30 天 |
| 时段偏好 | 0.14 | 该时段常听的曲风 | 14 天 |
| 音量调整次数 | 0.08 | 中途调音量的频次 | 单曲 |
| 收藏转化 | 0.07 | 播放后加入收藏的概率 | 30 天 |
第四层重排:30 首里强制留 4 个探索位
重排解决三个问题:去重、打散、探索。去重规则是同一歌手最多 3 首、同一专辑最多 2 首;打散规则是快歌与慢歌交替,避免连续 5 首都在 120BPM 以上。
探索位固定占 4 席,从“用户没听过但相似用户评价高”的池子里取。这 4 首的预计完播率通常低于平均,实测会使当日整体完播率下降约 1.2 个百分点,但 30 日留存提升 2.8 个百分点。
顺序也有讲究。第 1 首放把握最大的,第 2 首放稍轻的,把探索位安排在第 6、14、22、29 位,避开开场与结尾。用户在列表前 3 首的跳过率最高,把不确定的曲目放在这里会放大负面体验。
| 位置区间 | 曲目数 | 构成 | 目的 |
|---|---|---|---|
| 第 1-3 首 | 3 首 | 高置信度曲目 | 降低开场跳过率 |
| 第 4-28 首 | 23 首(含 3 探索) | 主推荐 + 探索 | 维持听感与扩展 |
| 第 29 首 | 1 首 | 探索位 | 结尾留新可能 |
| 第 30 首 | 1 首 | 轻音乐或纯音乐 | 自然收尾 |
推荐系统的目标不是让今天的点击率好看,是让用户三个月后还在打开这个应用。探索位就是为后者付的钱。—— 汽水音乐算法团队在一次技术分享中的表述
A/B 测试数据显示:关闭探索位后,当日人均播放时长上升 4.1%,但 7 日留存下降 1.9%,30 日留存下降 2.8%;开启 4 个探索位后,人均跳过次数增加 6.3%,收藏转化率提升 11.4%。这组数字决定了探索位保留至今。
写在最后
每日 30 首看起来是一份歌单,实际是五次召回、两次排序、一次重排的结果。知道这一点,就能理解为什么推荐有时“不准”:那 4 个探索位本来就不追求准。如果不想要,可以在设置里把探索强度调低,列表会变得保守,也更像你昨天听的东西。
读者评论(4)
完播率替代点击率做核心指标,这个取舍在业内不算主流,但对音乐场景是对的。
难怪每天总有几首听着陌生的,原来是探索位。调低之后列表确实顺耳很多。
新歌池每天 2400 首、保底 500 次曝光,这个机制对小厂牌比较友好。
想看看夜间时段的场景匹配具体怎么做的,文章里只提了权重。