欢迎光临
我们一直在努力

《模型不玄学》第23章 为什么要第二个目标:从“回不回“到“回来黏不黏“

小白一句话

前 22 章那个模型只回答一个问题:“这个人未来 7 天会不会回来”。可回来的人里,有人回来领一次就走,有人天天来——"回访"和"留住"是两码事,运营两个都想知道。这一章讲清楚为什么一个目标不够,第二个目标长什么样。

这一章在干嘛

第12章到第22章,把"未来 7 天回不回来"这件事从特征、训练、校准、评估一路做透了。但回头看一眼,这个单目标有个盲区:它把"回来了"当成终点,可回来的人差别很大。

有人回来后天天来,有人就回来露个脸。对运营来说,这两类人的待遇完全不同:露脸就走的人可能只是被某次提醒拽回来的,明天又走;天天来的人才是真正留住的。一个"回访概率"给不了这么细的信息。

本章先用示例数据把这个盲区摆到台面上,再说第二个目标是什么。后面的第24~27章才动手:第二个标签怎么造、模型怎么改成双头、评分怎么拼、怎么评估。

回访里藏着个"黏度"问题

把训练表里所有"回来了"(active_7d = 1)的 134 行翻出来,数一数他们未来 7 天到底活跃了几天:

未来 7 天活跃天数行数占回访的比例
1 天 25 18.7%
2 天 25 18.7%
3 天 26 19.4%
4 天 13 9.7%
5 天 21 15.7%
6 天 14 10.4%
7 天 10 7.5%

从 1 天到 7 天,每一档都有人。也就是说,“回访"这 134 个人里,37.3% 的人回来只待了 1~2 天,62.7% 的人待了 3 天以上。单目标模型只回答"回不回”,这 37% 和 63% 在它眼里没有区别——可对运营来说,一个是"又走了",一个是"留住了"。

四档画像:两个问题,两种特征

把 162 行按"回访 + 黏度"切成四档,看各自的特征长什么样(全是评分日及以前可知的特征):

人群行数占比总领取活跃率趋势新近度
没回 28 17.3% 5.8 0.227 −0.04 4.9
露脸就走(只来 1 天) 25 15.4% 7.3 0.252 +0.28 3.0
浅层(来 2 天) 25 15.4% 12.2 0.395 −0.12 2.7
黏(≥3 天) 84 51.9% 24.3 0.679 +1.58 0.7

看"露脸就走"和"没回"这两行——它们长得很像:总领取 7.3 vs 5.8、活跃率 0.252 vs 0.227、趋势 +0.28 vs −0.04。在单目标模型眼里,这两类人本来就分不太开(都接近"不会来"),但事实上露脸走的那批人来了,只是不黏。

这就暴露了关键一点:"会不会回来"和"回来黏不黏"用的是不同信号。看"黏"这一档:趋势 +1.58、活跃率 0.679、总领取 24.3,全面高出一截——黏不黏,靠的是"这人一直很活跃、最近还在涨"这种长期信号;而"回不回",靠的是新近度、趋势这种短期信号。两个问题没法用同一个模型的目标一把抓。

拿两个具体的人看(07-22 评分日):

  • U0036:总领取 55 次,未来 7 天活跃 7 天——天天来,黏。
  • U0044:总领取 24 次,未来 7 天活跃 1 天——领得比许多黏的人还多,却只来一天,露脸就走。

单目标模型给 U0044 的分数不会低——他历史领得多,模型觉得他"会回来",事实上他也确实回来了。但运营要是只按回访分给他重点投入,就错付了:他回来领一次就走了。回访分回答不了"值不值得深耕"。

为什么不直接把单目标阈值抬到 ≥3 天

有人会想:既然想要"黏的人",那把单目标的定义从"≥1 天"改成"≥3 天"不就行了?示例数据直接告诉你代价:

  • 正例率从 0.827 掉到 0.519(134 行 → 84 行),正例少了将近一半——问题一下子难了;
  • 更麻烦的是,"回不回"这个信息整个丢了。一个未来 7 天来 2 天的人,按 ≥3 天算他是负例,可运营明明知道他还愿意来,只是不勤。只报"黏不黏",连"要不要先触达"都答不了。

运营要的是两个数:这个人会不会回来(决定要不要触达),回来得黏不黏(决定要不要重点投入)。一个标签只能回答一个。

第二个目标长什么样:条件概率

第二个目标不是一个并列的新目标,而是一个挂在回访前提下的条件:

P(黏 | 回访) = 在"未来 7 天至少回来 1 天"的前提下,至少活跃 3 天的概率

它和回访概率是层级关系:先判断回不回,再看回来的人里黏不黏。两个概率可以相乘:

P(未来7天活跃≥3天) = P(回访) × P(黏 | 回访)

这个拆法有两个好处:

  • 可解释。“这个用户回来概率 80%,回来后黏的概率 50%,所以他真正持续活跃的概率是 40%”——每个数都能讲给运营听。
  • 结构上就自洽。乘出来的持续活跃概率天然 ≤ 回访概率——一个人"持续活跃"的前提是先"回访",这个不等式不用硬约束,乘出来就成立。后面第26章会用到这个性质。
  • 回访概率管"要不要触达",条件持续概率管"值不值得深耕",两个数各管一摊,谁也不替谁。

    它和前后章节的关系

    • 第12~22章是单目标:只学"回不回",输出一个 0–100 分;
    • 第24章教第二个标签怎么造(sustained_active_7d,未来 7 天活跃 ≥3 天),并验证它和 active_7d 的层级关系;
    • 第25章讲双头模型:共享特征底座、挂两个分支,条件头只在回访样本上算损失;
    • 第26章讲评分怎么拼:两个概率,乘出来的持续概率天然满足层级一致;
    • 第27章讲双目标的评估:每个头单独评,条件头只在回访子集上评。

    动手

  • 跑 附件/07_双目标模型升级篇/activity_dual_intro.py,对照正文:回访 134 行里 1~7 天的分布(25/25/26/13/21/14/10)、四档画像表、"露脸就走"和"没回"特征有多接近。
  • 在脚本里把"黏"的阈值从 ≥3 天改成 ≥4 天重跑,看回访里的"黏"占比从 62.7% 掉到多少——阈值每抬一档,正例就少一批,这就是"第二个目标为什么是条件概率而不是硬阈值"的实感。
  • 在 07-22 那批人里再翻几个"露脸就走"的用户(active_days=1 的),对比他们的 f_trend,看看是不是有正有负——露脸走的人特征很杂,回访模型根本分不出他们。
  • 本章配套脚本 附件/07_双目标模型升级篇/activity_dual_intro.py(回访人群的活跃天数分布 + 四档特征画像 + U0036/U0044 对照 + 抬阈值对比)。只用标准库,环境搭建见第4章。训练表由第12章 附件/05_活跃度预测篇/activity_train_table.py 生成,标签口径与前面章节一致。

    赞(0)
    未经允许不得转载:171主机测评 » 《模型不玄学》第23章 为什么要第二个目标:从“回不回“到“回来黏不黏“
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址