——从认知科学到工业归因)
驯服归因方法系列-第一篇-用“建构主义“驯服夏普利值shapley values——从认知科学到工业归因[TOC](驯服归因方法系列-第一篇-用“建构主义“驯服夏普利值shapley values——从认知科学到工业归因)驯服归因方法系列-第二篇-因素分解-用“建构主义“驯服指标异动:一次从FBA库存到因素分解的颅内推演01 一个让人自我怀疑的问题02 为什么你记住了, 但没有理解03 把建构主义放到夏普利值上⛳ 锚点(第一步):一个具体的业务场景 过程(第二步):6 种入场顺序的直觉推演 验证(第三步):回到公式, 发现它是过程的数学翻译 验算(第四步):一张可审计的分步计算表04 工业追问:当你真正动手时, 你会撞上的三堵墙 追问一:现实中, 我不知道每个渠道独自和组合时的产出, 怎么办? 追问二:这个计算没考虑每个渠道的资金投入, 怎么定最优预算? 追问三:协同效应为负时, 夏普利值还合理吗?05 这篇博文本身, 就是一次建构的示范06 真正值得带走的东西tags:数据科学归因分析夏普利值认知科学建构主义驯服归因方法系列-第二篇-因素分解-用“建构主义“驯服指标异动:一次从FBA库存到因素分解的颅内推演SHAP用建构主义驯服夏普利值从认知科学到工业归因的颅内推演我背过三遍夏普利公式, 每次都在两周后忘光。直到有人告诉我:你不是记不住, 你是没在脑子里建出来。01 一个让人自我怀疑的问题你有没有经历过这种时刻:你读到一篇讲夏普利值(Shapley Value)的文章。文章很好, 公式摆出来了, 定义讲清楚了, 甚至给了个三个工人合作的例子。你读完了, 点点头, 觉得懂了。两周后, 你要给老板算三个渠道的贡献。你发现:你记得夏普利值这个词你记得它跟公平分配有关但那个带希腊字母的公式, 你完全写不出来更糟糕的是——你不知道公式里的每一项, 在你的实际数据里该填什么你开始怀疑:我是不是不适合做数据?别急。这不是你的问题。这是被告知“和”被建构之间, 被大多数人忽略的鸿沟。02 为什么你记住了, 但没有理解去年我在琢磨一个叫图式(Schema)的概念时, 踩过一个坑。书上说:图式是大脑对某类事物的预存结构。我心想:这不就是流程吗?餐厅图式进门→点餐→吃饭→买单;代码图式import→定义→调用→返回。然后我被纠正了。对方告诉我:流程只是图式的时间轴(骨架)。图式还包含三样东西:静态属性:你进入一家餐厅, 默认它有菜单、有桌椅、有服务员——这些配件流程里根本不写, 但你的大脑会自动补全。默认值:在中国餐厅点餐默认扫码, 在法国餐厅默认举手叫服务员——同一个节点, 不同场景下有不同默认填充。预测性纠错:如果服务员端上一盘螺丝刀, 你会立刻觉得不对劲。这个不对劲不是算出来的, 是图式自动报警。理解一个东西, 跟记住一个东西, 是两套完全不同的神经回路。“记住激活的是识别区——你看到公式知道哦我见过”;理解激活的是生成区——你能在脑子里模拟它怎么运转、预判它什么情况下会崩。那么, 理解到底是怎么发生的?认知科学给我一个极其简洁的答案,三个动作:理解 锚定一个具体事物 在脑子里模拟它的变化 抽象出规律反过来讲:如果一件事你没做到这三步——锚定、模拟、抽象——你就只是在被告知, 不是在建构。03 把建构主义放到夏普利值上夏普利值的定义公式长这样:ϕ i ( v ) ∑ S ⊆ N ∖ { i } ∣ S ∣ ! ( ∣ N ∣ − ∣ S ∣ − 1 ) ! ∣ N ∣ ! [ v ( S ∪ { i } ) − v ( S ) ] \phi_i(v) \sum_{S \subseteq N \setminus \{i\}} \frac{|S|! (|N|-|S|-1)!}{|N|!} [v(S \cup \{i\}) - v(S)]ϕi(v)S⊆N∖{i}∑∣N∣!∣S∣!(∣N∣−∣S∣−1)![v(S∪{i})−v(S)]如果你试图理解这坨东西,你会死。但如果我告诉你, 这个公式只是下面这个故事的数学翻译呢?图 1:三个营销渠道对 120 万总产出的边际贡献示意(夏普利值示意)⛳ 锚点(第一步):一个具体的业务场景你是数据分析师。公司投了三个渠道:A 抖音B 小红书C 微信视频号三个渠道一起投, 总共赚了120 万。老板说:“拆清楚, 每个渠道各贡献多少?按贡献分奖金。”你做了关停实验, 得到这些数据(单位:万元):只投抖音(A):赚 20 万只投小红书(B):赚 20 万只投视频号©:赚 20 万投 AB:赚 70 万(比单独加和多出 30 万协同)投 BC:赚 70 万投 AC:赚 70 万投 ABC:赚120 万问题:A、B、C 各分多少? 过程(第二步):6 种入场顺序的直觉推演图 2:三人合作的 6 种入场顺序及边际贡献(6 顺序总和 240, 平均值 40)什么叫公平?夏普利的洞察极其朴素:每个渠道的贡献 它在所有可能的入场顺序下, 带来的边际增量的平均值。什么叫边际增量?就是你进来之前总产出是多少, 你进来之后总产出变成了多少, 差的那部分就是你带来的。好。我们开始模拟。顺序一:A 先进场, B 第二, C 最后A 第一个进:空场子, A 进来, 产出从 0 → 20。A 的边际贡献 20B 第二个进:A 在的时候产出 20, AB 产出 70。B 的边际贡献 70 - 20 50C 最后进:AB 产出 70, ABC 产出 120。C 的边际贡献 120 - 70 50这个顺序下:A 拿20, B 拿50, C 拿50。顺序二:B 先进场, C 第二, A 最后B 第一个进:20C 第二个进:BC 产出 70 → 边际 70 - 20 50A 最后进:ABC 产出 120 → 边际 120 - 70 50这个顺序下:A 拿50, B 拿20, C 拿50。顺序三:C 先进场, A 第二, B 最后C 第一个进:20A 第二个进:AC 产出 70 → 边际 50B 最后进:ABC 产出 120 → 边际 50这个顺序下:A 拿50, B 拿50, C 拿20。你发现规律了:三个渠道一共 3×2×1 6 种入场顺序。每个渠道一定会在第一个进的位置出现 2 次, 在后两个进的位置出现 4 次。我们来列全:顺序A 的边际B 的边际C 的边际A→B→C205050A→C→B205050B→A→C502050B→C→A502050C→A→B505020C→B→A505020总和240240240平均值404040结论:A 40 万, B 40 万, C 40 万。总和 120 万。完美对账。✅ 验证(第三步):回到公式, 发现它是过程的数学翻译现在, 你再回头看那个公式:ϕ i ( v ) ∑ S ⊆ N ∖ { i } ∣ S ∣ ! ( ∣ N ∣ − ∣ S ∣ − 1 ) ! ∣ N ∣ ! [ v ( S ∪ { i } ) − v ( S ) ] \phi_i(v) \sum_{S \subseteq N \setminus \{i\}} \frac{|S|! (|N|-|S|-1)!}{|N|!} [v(S \cup \{i\}) - v(S)]ϕi(v)S⊆N∖{i}∑∣N∣!∣S∣!(∣N∣−∣S∣−1)![v(S∪{i})−v(S)]翻译:把所有不包含 i 的渠道组合 S 都遍历一遍计算加入 i 后的价值减去没有 i 的价值 边际贡献前面那个分数 这个组合在所有入场顺序中出现的权重求和 所有顺序下的边际贡献加起来求平均你不是在背公式。你只是在用数学语言, 描述刚才脑子里跑完的那个6 种入场顺序的游戏。 验算(第四步):一张可审计的分步计算表如果你要给老板看你的计算依据, 不能只写我枚举了 6 种顺序。你需要一份可审计、可复现的验算表。我们以抖音(A)为例, 完整走一遍夏普利公式的每一项。公式回顾:ϕ A ( v ) ∑ S ⊆ { B , C } ∣ S ∣ ! ( 3 − ∣ S ∣ − 1 ) ! 3 ! [ v ( S ∪ { A } ) − v ( S ) ] \phi_A(v) \sum_{S \subseteq \{B,C\}} \frac{|S|! (3-|S|-1)!}{3!} [v(S \cup \{A\}) - v(S)]ϕA(v)S⊆{B,C}∑3!∣S∣!(3−∣S∣−1)![v(S∪{A})−v(S)]A 之外的渠道只有 B 和 C。所以 S 一共有 4 种可能:∅、{B}、{C}、{B, C}。子集 S(不含A)|S|权重分子|S|!(3-|S|-1)!权重分母3!权重v(S∪{A})v(S)边际贡献加权得分∅00! × 2! 262/6v(A)20v(∅)02020 × 2/6 6.67{B}11! × 1! 161/6v(A∪B)70v(B)205050 × 1/6 8.33{C}11! × 1! 161/6v(A∪C)70v(C)205050 × 1/6 8.33{B, C}22! × 0! 262/6v(A∪B∪C)120v(B∪C)705050 × 2/6 16.67合计40.00验算结果:A 的夏普利值 6.67 8.33 8.33 16.67 40 万。B 和 C 同理(对称数据, 各 40 万)。40 40 40 120 万 ✅ 完美闭合。这张表就是你在任何汇报场景里都能放的审计底稿——任何人拿着你的数据, 都能复算出同样的结果。至此, 你完成了锚点→过程→验证→验算四连击。你建构了夏普利值, 而不是被告知了夏普利值。04 工业追问:当你真正动手时, 你会撞上的三堵墙图 3:工业追问的三个难题(数据分析师必须跨过的三堵墙)如果你以为到这里就结束了, 那你还在学院派的温室里。一个真正的工业级数据人, 在听完上面的故事后, 会立刻问三个问题——而且这三个问题, 恰恰暴露了理论图式“和”工程图式之间的断层。 追问一:现实中, 我不知道每个渠道独自和组合时的产出, 怎么办?你不可能让老板同意把小红书关停一个月, 我们测一下 v(B)。更不可能测几百种组合。解法:用预测替代实测。利用过去 365 天的历史数据(每天各渠道花了多少钱、带来了多少单量)训练一个代理模型(Surrogate Model), 输入是各渠道的投入, 输出是总产出用 XGBoost 或带交叉项的线性回归, 拟合出非线性关系然后, 把只投 B这组假数据喂给模型, 模型输出的预测值, 就替代了真实实验中的 v(B)本质:v(S) 不是测出来的, 是用历史数据推演出来的。 追问二:这个计算没考虑每个渠道的资金投入, 怎么定最优预算?这是最狠的一刀。夏普利值是分蛋糕的——它不管做蛋糕的成本。如果 A 投了 100 万才赚 40 万(ROI0.4), B 投了 10 万就赚 40 万(ROI4), 夏普利值都算 40, 老板会砍谁?砍 A。解法:从归因图式跳转到运筹优化图式。工业界的标准做法分三步:拟合边际收益递减曲线:用历史数据拟合每个渠道的饱和曲线(通常是对数函数或 Hill 函数), 得到多花一块钱能带来多少额外收益。设定总预算约束:假设总预算 M 固定。执行等边际原则:这是微观经济学的铁律——当所有渠道的最后一元钱边际产出相等时, 总产出最大。实操上:算出 A 投到第 50 万时, 边际产出是 2.0;投到第 100 万时, 边际产出是 0.5算出 B 投到第 50 万时, 边际产出是 3.0策略:砍掉 A 的第 100 万预算(边际 0.5), 挪给 B 的第 50 万(边际 3.0), 总产出立刻提升 2.5不断调整, 直到 A、B、C 的边际产出完全相等 追问三:协同效应为负时, 夏普利值还合理吗?如果 A 和 B 严重重叠(比如都是抖音的不同切片), 一起投反而互相抢量——AB AB 单独。夏普利值依然会算出一个公平值, 但业务上你可能直接想砍掉重复的那个。边界来了:夏普利值只告诉你怎么分既有的饼, 不告诉你这个饼要不要做。这就是找边界——L4 层级理解的标志。05 这篇博文本身, 就是一次建构的示范图 4:认知建构的三步法(锚定/模拟/抽象, 循环往复)我们来拆解一下你刚才经历了什么:阶段你在做什么对应理解建构的三步读到 03 节的三个渠道、120 万锚定了一个具体场景锚定具体事物跟着顺序一、顺序二走完 6 种入场顺序在脑子里模拟了数据流转模拟变化看到公式的那一刻脱口而出原来如此从具体案例中抽象出了数学表达抽象出规律读到 04 节的三个追问找到了理论的边界达到 L4 层级你不是学会了夏普利值。你是在我引导下, 自己在脑子里建出了夏普利值。那个公式不是背进去的——它是在你走完 6 种顺序后, 自己从例子里长出来的。06 真正值得带走的东西这篇文章表面上在讲怎么理解夏普利值。但其实它真正讲的是:理解不是被告知的, 是被建构的。建构 锚定具体例子 在脑子里模拟流转 主动找边界。这三个动作, 缺一个, 你就是在假装理解。你需要的不是更聪明的脑子, 而是一套能让任何新知识挂靠到你既有图式上的操作流程。下次你遇到一个新概念——无论是因果推断的 DAG、某个新的算法、还是一个复杂的业务模型——你可以做这三件事:找一个具体的锚点:不要问它是什么原理, 要问它在我的数据里长什么样、有没有一行真实数据可以看;在脑子里跑一遍过程:不要接受全景图, 要问从输入到输出, 每一步发生了什么变化;主动找三个边界:什么情况下它会失效?缺什么数据它跑不动?如果加上成本约束它还算不算?三件事做完, 你就算真懂了。三件事缺一件, 两周后你会回来重新搜这篇文章。最后送你一句我最近消化了很久的话:理解的反义不是不懂。理解的反义是“不会建构”。不会建构的人比不懂的人更危险——因为他意识不到自己不会。如果你对如何学习这件事本身感兴趣, 可以在评论区告诉我, 我们接着聊。这篇博文来自一次为期一周的元认知实验:从图式理论出发, 经由建构主义方法论, 抵达工业归因的边界。