《模型不玄学》第1章 这个项目在解决什么问题

发布时间:2026/9/4 6:39:54
《模型不玄学》第1章 这个项目在解决什么问题 小白一句话有一个每天都有用户在领奖励的系统。我们想搞清楚——一个用户未来 7 天还会不会再来领顺带把他的活跃状态、变化趋势和领奖偏好都标出来。从一个日常场景说起很多 App 都有每日任务这类机制用户完成一些小任务就能领到积分或奖励。每天都会产生大量领取记录。这些记录里其实藏着不少信息谁最近很活跃、谁快凉了、谁只盯着某几种任务领。但记录堆在一起人看不过来也看不出规律。这一章要讲的模型做的就是每天批量把这些记录转成每个用户的活跃画像。模型最后给你什么对每个满足条件的用户算出来这么几样活跃度分0 到 100 的分表示他未来 7 天再来领的概率已经校准过不是模型原始输出当前活跃水平以及最近是在往上走还是往下走活跃倾向分层冷启动 / 稳定高活跃 / 上升 / 稳定低 / 下降 / 间歇领奖偏好最常领哪类、偏好集中不集中、稳不稳定行为分类他属于哪种行为风格的人群比如高频低单价领取群这些都是从历史领取行为里算出来的不是拍脑袋。它不解决什么边界划清楚省得后面想歪不管发多少奖励。分数高不代表该多发它只预测会不会再来领。不是风控。不会判定谁是异常账号最多标个行为有点异常交给别的地方处理。不看账号年龄、注册多久。这里的活跃只指在能看到的领取数据里最近的表现。一份可以动手玩的示例数据光说结构有点虚手册配套了一份脱敏的合成数据放在附件/00_公共/每日领取明细_示例.csv生成它的脚本在同目录附件/00_公共/generate_sample.py固定了随机种子任何人跑都能得到一模一样的数据方便你照着书里的数字复现。这份数据模拟了一个 App 在 30 天里2026-07-01 ~ 2026-07-30的每日任务领取明细一共 1643 条记录、58 个用户。每一行有五列列名含义例子uid用户编号U0001claim_date领取日期2026-07-01task_type任务类型签到 / 看视频 / 分享好友 / 小游戏 / 填问卷num当天该类任务领取次数2amount当天该类任务的奖励金额元5.40取前几行感受一下uidclaim_datetask_typenumamountU00012026-07-01填问卷25.40U00012026-07-01看视频32.93U00012026-07-02看视频11.03U00012026-07-02填问卷13.04U00012026-07-02签到21.07U00012026-07-03填问卷39.50U00012026-07-03小游戏22.80光看这几行能发现什么不用写代码眼睛扫一遍就能抓到几个点同一个人会反复出现。U0001 在 7 月 1、2、3 号都出现了而且每天还领不止一种任务。这说明一个用户 一行是不成立的真实数据里一个用户对应很多条记录。任务类型有五种金额差别挺大填问卷一次就能拿 3 元上下签到才 0.5 元左右。后面讲偏好时这个差异就有用了。不是每天都有记录。U0001 跳过了 7 月 4 号。这里没出现和出现了但领 0 次是两回事——这一行没写只代表我们那天没观测到他领不代表他真的领了 0 次。这个坑后面讲标签和评估时会专门聊。这份样本只有 1643 行方便肉眼看真实业务里的数据量远超于此那时候就不能一口气全读进来得换种处理方式——那是准备篇的内容。这份数据里其实藏了五种人为了让后面的聚类、预测章节有东西可讲数据是按五类用户画像生成的画像只写在生成脚本里数据本身不标高频多任务几乎天天来五种任务都沾中频稳定大约一半天会来常领两三种低频单一偶尔来基本只领一种前期活跃后期流失开头猛越往后越不来几乎不活跃极少出现有的编号 30 天里一条记录都没有所以用户数是 58 而不是 60你现在看不出谁是谁正好——这正是后面模型要干的事从一堆记录里把人自动分出来、把谁快流失猜出来。动手打开这份数据做三个小练习别急着跑模型先把附件/00_公共/每日领取明细_示例.csv用表格软件或文本编辑器打开照着做数数。随便挑一个 uid比如 U0001数数他一共出现了多少行分布在多少天算一笔。把 U0001 所有 amount 加起来估算他 30 天大概领了多少奖励再挑一个出现行数很少的 uid 对比差距有多大猜趋势。找一个 7 月中后段记录变稀的用户猜猜他属于上面五类里的哪一种。想清楚这三件事特征和标签那一章就水到渠成了。小结这一章建立了最朴素的认知我们用历史领取行为预测一个用户未来还会不会再来并顺手标出他的活跃状态、变化和偏好。下一章聊一个更根本的问题——这种预测在数学上到底属于哪一类问题。附件代码https://download.csdn.net/download/gyh19870723/93372150