识别样本污染的核心动作,是先确认“版本分配”发生在哪一层,再检查两组访客在进入页面之前是否已经不同。如果分流由客户端脚本、缓存或登录状态决定,而分析时只按页面路径分组,那么差异很可能来自人本身,而不是版本本身。
假设一个旧专题页要退出,你保留了其中仍然有效的问答模块,并把它放进新模板的B版本,旧模板作为A版本。分流脚本在页面加载后才执行,且对已登录用户强制走A版本。此时按“看到A或B”分组比较停留时长,就已经把登录用户集中到了A组。
要验证这一点,不要先看转化率,而要先看分配前的变量:来源渠道、设备类型、登录状态、进入时间、是否来自站内推荐位。如果这些变量在两组间差异明显,说明分组不是随机的,后续任何指标差异都不能直接归因于版本。
一个可执行的动作是:在分流脚本执行前记录一个匿名标记,并在分析工具中把它作为分组维度,而不是用最终渲染的页面地址反推分组。这样做的结果是,你能看到“被分配”和“实际看到”是否一致,下一步再决定是修分流逻辑,还是把分析范围缩小到分配一致的子集。
样本污染的常见来源不是随机化失败,而是分配之后又发生了跳转、缓存命中或脚本超时。例如B版本依赖一个异步模块,加载慢时用户可能先看到A版本的骨架,再被替换。此时分析工具记录的是最终DOM,但用户实际先接触了旧内容。
可以用一组可区分的证据来判断:
如果出现这些信号,先不要比较业务指标。把分析窗口限制在“分配后无替换、无回退”的会话上,再重跑一次分组对比。这个动作的结果会告诉你:差异是版本造成的,还是分配过程造成的。若限制后差异消失,问题在分流实现,不在内容取舍。
样本污染不一定让两组都变差,它可能只让某一组混入了本来就会流失的人。判断方向的方法是看进入前的基线指标,而不是看结果指标。
假设你正在决定旧合作关系带来的导流页面是否退出。A版本保留旧导流入口,B版本换成站内推荐。如果A组里混入了大量来自旧合作渠道、但已经不再活跃的访客,那么A组的低转化可能来自渠道衰退,而不是旧入口无效。
可核查的证据链是:先按来源渠道分层,再看同一渠道内A、B两组的差异。如果差异只在旧渠道内出现,而在自然搜索和直接访问中消失,那么污染来自渠道构成,不是版本。下一步应把旧渠道单独评估是否退出,而不是把整个A版本判为失败。
识别样本污染的目的不是追求一个干净的数字,而是决定旧内容、旧系统或旧合作关系里哪些部分还值得保留。一个可操作的流程是:
如果污染集中在某个渠道或某类用户,且该渠道本身正在退出,那么可以保留B版本的内容结构,同时单独处理旧渠道的入口,而不是回滚整个版本。如果污染来自分流实现,那么先修分流再评估,否则任何保留或退出决定都建立在错误分组上。
最后要接受一个限制:站内统计、第三方估算和搜索引擎报告的口径不同,单靠某一个指标归零或下降,不能单独证明某个版本或某个旧合作关系应当退出。它只能作为线索,需要和分配前变量、分层结果一起看。只有当你确认两组在进入前可比,版本差异才值得作为保留或退出的依据。