"矩阵有协同效应"是一句常见结论,但它几乎从不带数字。于是它既无法验证,也无法否定------做得不好时,同样可以说"协同需要时间"。
这篇不讲怎么搭矩阵,也不讲哪种架构更好,只解决一件事:把"协同"拆成三个能算出数来的指标,并把分子、分母、采样口径写清楚。
三条前置说明:本文不给任何基准值、行业系数或经验比例 ;文中出现的所有数字都是示例 ,只为说明算法结构;其中"受众重合度"需要自有后台数据才能算,外部无法获取。
一、先说清"协同"能测什么
矩阵里常见的"协同"有三种可观察形式,其余大多不可量化:
- 内容复用:同一批素材或内容,被几个账号用过(可数);
- 受众重合:不同账号看到的人是不是同一批(需自有后台数据,可算);
- 线索归集:同一批咨询是否被多个账号同时触达(需自有归因,可算)。
如果一件事既不可数、也没有自有数据支撑,就不该写成指标------写成指标却算不出来,比没有指标更糟。
结论:先确定"这个协同现象能不能被数出来",再决定要不要给它设指标。
二、指标一:内容复用率
定义:一段时间内,被两个及以上账号使用过的内容条目,占同期内容条目总数的比例。
- 分子:统计周期内,出现在 ≥2 个账号内容列表中的内容条目数(按内容主键去重,不是按发布次数);
- 分母:统计周期内,全部内容条目数(同样按主键去重);
- 采样口径:以发布记录为准;同一内容在多个账号重复发布,只算一个条目;跨周期复用的内容,计入首次发布所在周期。
注意一处:分子按"内容条目"算,不按"发布条数"算。否则一条内容发五个账号,会被算成五次复用,指标虚高。
下方的实现只做算术,不读文件、不依赖任何库:
def reuse_ratio(content_ids_by_account):
"""示例数据在函数下方。按内容主键去重后计算复用比例。"""
seen = {}
for account, ids in content_ids_by_account.items():
for cid in set(ids):
seen.setdefault(cid, set()).add(account)
total = len(seen)
if total == 0:
return None
reused = sum(1 for accs in seen.values() if len(accs) >= 2)
return reused, total, reused / total
示例(非真实数据,仅说明结构)
sample = {
"acct_a": "c1", "c2", "c3", "c4",
"acct_b": "c3", "c4", "c5",
"acct_c": "c5", "c6",
}
print(reuse_ratio(sample))
结论:复用的分子必须按内容去重;按发布次数算,等于把"多发"当成了"复用"。
三、指标二:受众重合度
定义:两个账号在同一统计周期内,触达人群的交集规模占并集规模的比例。
- 分子:两账号触达人群的交集人数;
- 分母:两账号触达人群的并集人数;
- 采样口径:以两个账号各自后台导出的触达人群为输入,同一周期、同一维度对齐后再算交集。
这一项有一处硬限制:需要自有后台数据。 外部无法获取他方账号的受众构成,所以这个指标只在自有账号之间成立;拿别人的账号名去算,属于虚构数据。
另外提醒:交集大小依赖维度选择(地域、年龄、兴趣),换一个维度就是另一个数。所以报这个指标时,必须同时写清"在哪个维度上算的"。
结论:受众重合度不是公开数据,只有自有后台能算;不写维度,这个数没有意义。
四、指标三:跨账号线索归集
定义:同一批线索被两个及以上账号触达的条数,占同期线索总数的比例。
- 分子:线索记录中,来源账号字段被标记为 ≥2 个账号的条数;
- 分母:同期全部线索条数;
- 采样口径:以线索登记表为准,来源字段必须是"多选"结构;只有一个来源字段的单值登记,无法计算这项。
这里的关键是登记结构而不是算法:单值来源的表格,天然算不出交叉;要算,就得在登记时允许多选,并保留时间戳。
结论:这项指标拼的是登记质量,不是计算技巧;字段设计错了,后面补不回来。
五、三个"看起来协同其实没协同"的坑
- 复用率涨了,但内容是同一支素材原样搬运:数字上去了,受众看到的是重复内容,这属于分摊而非协同;
- 重合度低就以为受众互补:也可能是两个账号都没打到目标人群,低重合不等于有效覆盖;
- 线索归集全靠人工回忆:没有多选来源字段,归集结果只是印象,不可复核。
三个坑的共同点是"有数字、没口径"。指标只要不写清分子分母与采样方式,就会变成新一轮的自我说服。
结论:先定口径,再看数值;口径不清的指标,不如不要。
六、验证:先看能不能算,再看算出什么
三个指标落地时,先跑三项检查,比直接看结果更重要。做法是把上面 `reuse_ratio` 这类函数放进 `tools/matrix_metrics.py`,再加一层参数解析(用 `--check` 选择检查项),然后按下面的命令跑:
1) 空值检查:三项指标是否有返回 None(分子或分母为空时会出现)
python tools/matrix_metrics.py --check empty
2) 样本量检查:分母为 0 或过小的分组不参与结论(阈值按自身口径在配置里设)
python tools/matrix_metrics.py --check sample --min-total 1
3) 口径检查:三项指标是否都带上了周期与维度标注
python tools/matrix_metrics.py --check dimension
三条检查的顺序有意义:先确认算得出来,再确认样本够,最后确认口径写全。 顺序倒了,容易先被一个好看的数说服,再回头找解释。
结论:能复现的指标才叫指标;跑一次要手工补三个口径的,是作业不是指标。
FAQ
问:三个指标哪个优先?
答:不排优先级。复用率看内容效率,重合度看受众结构,归集看线索质量,各自回答不同问题;缺哪个补哪个。
问:没有自有后台数据,能算协同吗?
答:只能算第一项(内容复用),后两项都需要自有数据支撑。缺数据就先补数据,不要用估算替代。
问:指标出来了,怎么判断好不好?
答:本文不给基准值------不同行业、不同账号规模的口径不可比。能做的是和自己上一周期比,并把口径固定下来,保证可比。