去年双十一前两周,我帮一个做家居收纳的朋友看店。她的店铺有 380 个 SKU,运营就两个人。大促报名截止前三天,她才发现自己根本不知道该把哪些商品捆在一起做"满 2 件 8 折",最后是拍脑袋选了销量前 20 的商品拼了 6 个组合,结果活动结束一算,6 个组合里只有 1 个真正拉动了客单价,另外 5 个要么是本来就一起买的刚需品,要么是拿高毛利品去补贴了低毛利品,算下来毛利率掉了 4 个百分点。
她跟我说的原话是:"我知道要做组合分析,但 380 个 SKU,两两组合就是 7 万多种,我拿什么去跑?"
这个问题不是她一个人的。我过去三年接触过 20 多家中小电商团队,做商品组合优化卡住的从来不是"不懂方法",而是"没有一套能跑起来的最小自动化流程"。市面上讲关联规则、讲购物篮分析的内容很多,但绝大多数停在"你应该用 Apriori 算法"这一层,没人告诉你 380 个 SKU 到底怎么在两天内跑出一份能直接用的组合清单。这篇文章我想把这件事从头到尾拆一遍,包括我自己踩过的坑、验证过的工具边界,以及一套我认为对 1-3 年经验运营最友好的落地路径。
我把话说在前面,这可能和你在别处看到的不太一样:对于绝大多数年 GMV 在 500 万以下、SKU 在 500 个以内的店铺,组合优化的第一步不是上算法,而是把"选品,组合,验证,迭代"这四个动作变成可重复执行的流程。算法是这条流水线跑到一定规模后的自然升级,不是起点。
为什么?因为组合优化真正的成本不在计算,而在数据准备和效果归因。我见过的失败案例里,80% 不是"算法选错了组合",而是"跑出来的组合根本没法验证效果",或者"数据清洗花了三天,活动已经结束了"。一个能在一周内跑完、结论可信的朴素方案,价值远高于一个需要两周搭建、但赶不上大促的精密模型。
所以我把组合优化的自动化方案拆成三层,你可以把它理解成一个从 0 到 1 的递进台阶:
这三层不必一步到位。我的建议是:先跑通第一层,拿到第一批可验证的组合,再决定要不要往第二层走。很多人一上来就想搭全套,结果三层都半途而废。

我先讲清楚大部分团队的实际处境。上面提到的那家家居收纳店铺,我去做诊断的时候,发现她手上其实有三份数据:一份 ERP 导出的商品基础信息表(SKU、类目、成本、售价),一份平台后台的订单明细(订单号、商品 ID、数量、成交时间),还有一份自己用 Excel 维护的"销量排名表"。
问题出在这三份数据对不上。ERP 里的商品编码是内部编码,订单明细里是平台商品 ID,销量排名表里用的是商品名称的简化版。光是做一次商品 ID 的映射对齐,她就花了整整一天。等她终于把数据凑齐,距离活动报名只剩两天,根本没时间做任何实质性的组合分析。
这不是个例。我把中小电商做组合优化卡壳的原因归成三类,你可以对号入座:
最常见的是三张表对不上:商品表和订单表的主键不同,销量口径一个含退货一个不含,价格字段一个是原价一个是到手价。这三个问题任意一个没解决,后面所有组合分析的结果都不可信。
还有一个隐蔽的坑:很多团队做购物篮分析时,直接拿订单明细去算"商品 A 和商品 B 同时出现的次数",但订单明细里同一笔订单可能有多行同一个商品(买了两件),如果不先去重,组合频次会被系统性高估。这个错误我见过至少三次。
大多数运营的默认动作是"按销量排序,取前 20 个做组合"。这个动作的问题在于,销量高的商品往往本身就是流量款,把它和其他热销品捆在一起,用户本来就会买,组合没带来任何增量。
真正有信息量的是"提升度",买了 A 的人买 B 的概率,是否显著高于没买 A 的人买 B 的概率。只有提升度大于 1,才说明 A 对 B 有带动作用。这个指标不需要算法,一张数据透视表就能算出来。
我见过太多"做了组合优化,但没人知道效果"的情况。运营把组合方案交给商品部,商品部配好活动,活动结束看整体 GMV,涨了归功于大促氛围,没涨归咎于市场行情。组合方案本身从来没有被单独衡量过。没有反馈,就谈不上迭代,第二次做还是从零开始。

在给出方案之前,我想先拆掉三个我反复见到的误区。这三个误区如果不纠正,后面给再多操作要点都不会有效果。
这是最普遍的理解偏差。"经常一起买"只说明两个商品同时出现的频次高,但没有信息量,牙膏和牙刷一起买很常见,可它们本来就是搭配使用的,你不需要任何分析也知道该把它们放一起。
有信息量的是"意外的高频共现"。比如某家卖户外用品的数据里,登山杖和防晒霜的共现频次异常高。追查后发现,买登山杖的用户多是准备周末徒步的新手,而新手往往会临时补购防晒用品。这个关联不是常识能推出的,它才值得被做成组合。
我见过一些工具宣传"一键生成最优组合""零人工干预"。说实话,这类表述在 2024 年之后的电商环境里基本不成立。组合优化的自动化,自动化的是"取数,计算,排序,输出"这条链路,而目标的设定、阈值的判断、异常结果的复核,仍然需要人。
举个具体的:一个自动跑出来的组合,提升度 2.3,看起来很漂亮,但如果你不人工看一眼毛利,很可能发现它是"拿高毛利的主推品去搭低毛利的赠品",卖得越多亏得越多。工具算的是关联强度,不会替你算这笔账。
恰恰相反。SKU 越多,组合分析的边际收益越大,因为你靠人工经验已经不可能覆盖所有可能性了。380 个 SKU 的两两组合有 7 万多种,但真正需要认真看的,是那些各自月销超过 30 件、且共现次数超过一定门槛的商品对。经过这两层过滤,通常只剩几百个候选,完全在表格工具的处理能力之内。
所以"SKU 太多"不是做不了的理由,是"不会做过滤"的借口。

讲完误区,我来说说我判断一个组合优化方案是否值得做的逻辑。我用四个支点来判断,任何一个不成立,我都会建议先别急着上自动化。
组合优化可以服务很多目标:提升客单价、提升动销率、清理滞销库存、提升连带率、优化毛利结构。但这些目标之间存在冲突。提升客单价往往要推高单价商品,可能牺牲动销率;清理滞销库存往往要牺牲毛利。从 0 到 1 阶段,我的建议是只锁定一个目标,且这个目标必须是可量化、可归因的。
最常见的正确选择是"提升客单价",因为它有清晰的基线(当前客单价)、清晰的衡量方式(活动期 vs 对比期),且组合优化和客单价之间的因果关系相对直接。
这里我给出一个我认为最小可用的数据清单:
| 数据项 | 最低要求 | 常见缺口 | 补救方式 |
|---|---|---|---|
| 订单明细 | 近 90 天,含订单号与商品 ID | 缺少订单号,只有商品和数量 | 向平台后台重新导出,不要用手工记录表 |
| 商品主数据 | 商品 ID、类目、成本、售价 | 成本字段缺失或为含税价 | 从 ERP 补,缺失商品单独标注为"成本待补" |
| 统一主键 | 商品 ID 与订单 ID 可映射 | ERP 编码与平台 ID 不一致 | 建一张映射表,一次建好长期复用 |
| 退货标记 | 订单级退货状态 | 销量含退货,导致口径偏高 | 至少剔除整单退货,部分退货可暂不处理并注明 |
这四项里,统一主键是最被低估的一项。我建议你花半天时间建一张商品 ID 映射表,把它当作长期资产维护。这张表建好之后,后面每次分析都能省下一天。
没有验证的组合优化等于没有做。验证不一定非要 AB 测试,AB 测试需要足够的流量和样本量,中小店铺往往达不到统计显著。对小店铺来说,更现实的做法是"对比期法":选一批相似商品分为实验组和对照组,实验组配组合,对照组不配,对比两组在活动期的客单价变化。
关键是要在活动开始前就确定好分组和衡量指标,而不是活动结束后再回头找数据。事后找数据几乎一定会找到"看起来有提升"的解释,这是确认偏误。
组合优化不是一次性的项目,是持续动作。我给客户建议的节奏是:每月跑一次全量组合分析,每次活动前针对具体场景做一次快速筛选,每次活动后做一次效果记录。记录不需要很复杂,一张表记录"组合内容、投放时间、实验组客单价、对照组客单价、结论"就够了。
坚持记录三个月的团队,做组合决策的速度和质量会有肉眼可见的区别,因为手里有了自己的历史基准线,不再依赖外部经验。

接下来我讲一个我做过的完整案例。这是去年三季度我帮一个跨境电商小团队做的,团队规模 5 人,主要做家居和户外品类,SKU 大约 420 个,主要销售渠道是独立站。我选择讲这个案例,是因为它的数据基础比较干净,适合用来演示完整流程,同时它的工具选择也对中小团队有参考价值。
这个团队的数据情况是这样的:独立站后台可以导出订单明细,含订单号、商品 ID、数量、成交金额、成交时间;ERP 里有商品成本和类目信息。两边的主键不统一,但团队之前已经维护过一张映射表,虽然不完整。目标很明确:把客单价从当时的 46 美元提升到 55 美元以上,衡量周期为一个月。
为什么选数跨境作为这次分析的工具?主要是两个原因。一是它的数据表可以直接对接独立站和 ERP 的导出文件,省掉手工拼接的过程,ID 映射表建一次就可以复用;二是它的组合分析能力对非技术背景的运营比较友好,不需要写代码就能算出共现频次和提升度。数跨境的官网在这里,有兴趣的可以自己看,我下面只讲我怎么用它做这件事。
整个流程我拆成六步,你可以在自己的工具里对照执行:
整个过程,从导数据到出清单,实际操作时间大约 6 小时,分两天完成。相比之前那种"手工拉表三天还做不完"的状态,效率提升是明显的。

虽然用工具可以点几下出结果,但我建议你至少理解提升度是怎么算出来的,这样看到异常数字时能判断是不是数据问题。下面是一段我用 Python 快速验算的代码,供参考:
import pandas as pd
from itertools import combinations
假设 orders 是清洗后的订单明细,列为 order_id, product_id, quantity, amount
先生成每笔订单的商品集合
baskets = orders.groupby('order_id')['product_id'].apply(set)
计算单品的出现订单数
item_counts = {}
for basket in baskets:
for item in basket:
item_counts[item] = item_counts.get(item, 0) + 1
total_orders = len(baskets)
计算两两共现次数
pair_counts = {}
for basket in baskets:
items = sorted(basket)
for a, b in combinations(items, 2):
pair_counts[(a, b)] = pair_counts.get((a, b), 0) + 1
计算提升度
def lift(a, b):
support_ab = pair_counts.get((a, b), 0) / total_orders
support_a = item_counts[a] / total_orders
support_b = item_counts[b] / total_orders
if support_a * support_b == 0:
return 0
return support_ab / (support_a * support_b)
输出提升度大于1.2的组合
result = [(a, b, lift(a, b)) for (a, b) in pair_counts if lift(a, b) > 1.2]
result.sort(key=lambda x: -x[2])
print(result[:20])这段代码只是用来验算,实际生产环境用数跨境这类工具会更快,也不容易在数据量变大时出错。但我建议每个做组合优化的人都至少手算一次提升度,建立对数字的直觉。比如提升度 1.1 和 2.0 的差距意味着什么,只有算过才知道。
这次分析最终输出了 20 个组合,商品部从中选了 6 个配置到活动页。一个月后复盘,实验组的客单价从 46 美元提升到 54.3 美元,对照组同期从 46.5 美元提升到 48.1 美元。剔除自然增长后,组合优化带来的净提升大约 4.7 美元,约 10%。
没达到 55 美元的目标,但已经很接近。复盘时发现两个问题:一是 6 个组合里有 2 个曝光量严重不足,基本没被用户看到;二是其中一个高提升度组合因为库存不足中途下架,影响了整体效果。这两个问题都不是分析环节的问题,是执行环节的协同问题。

上面这个案例的路径不是对所有人都适用。我按团队规模和数据基础分几种情况给出建议,你对号入座。
别碰任何需要配置的工具。用飞书多维表格或 Excel 就够了。把订单明细导入,用"插入透视表"算单品订单数,用公式算两两共现,再手动算提升度,选 3-5 个组合。整个过程 3-4 小时能搞定。这个阶段不用追求全量,选 30-50 个核心商品做分析就够,长尾商品不值得花时间。
关键是养成记录习惯,每次做完组合,记下效果,三个月后你会有自己的基准线。
可以考虑上轻量分析工具,比如数跨境这类。重点不是工具多强大,而是能不能把 ID 映射和定时跑数这两件事固化下来。ID 映射表建好之后复用,定时任务每周跑一次自动刷新组合建议,运营只需要看结果和做决策。
这个阶段的另一个重点是验证闭环。不要等有足够流量做 AB 测试,先用对比期法,把每次活动的实验组和对照组数据记录下来。数据积累到 3-5 次之后,你就能看出哪些类型的组合在你的品类里更有效。
这个阶段可以开始考虑算法化,但要先问自己一个问题:你的数据基础是否已经支撑可信的算法输入?我见过不少团队,数据还在手工整理阶段就急着上算法,结果模型跑出来的结果是"垃圾进垃圾出"。
正确的顺序是:先把数据链路和验证闭环建好,跑通至少三个月的朴素方法,积累了稳定的业务基准,再考虑引入更复杂的算法。这时候算法的边际价值才能真正体现出来。
| 团队规模 | 推荐工具 | 分析频率 | 验证方式 | 重点投入 |
|---|---|---|---|---|
| 个人/3人以下 | Excel / 飞书多维表格 | 每月一次 | 对比期法 | 建立记录习惯 |
| 5-20人团队 | 数跨境等轻量分析工具 | 每周一次 | 对比期法+小流量测试 | ID映射与定时跑数 |
| 20人以上 | 轻量工具+自建数据管道 | 每日/每周 | AB测试+回测 | 数据链路稳定与算法迭代 |

讲完建议,我想再讲取舍。做组合优化,你会面临好几次"要不要多花钱"的决策点,我把我自己的判断标准摊开讲。
我的判断标准很简单:如果你每个月在数据整理上花的时间超过 8 小时,付费工具的 ROI 就是正的。按运营月薪换算,8 小时大约相当于 300-500 元的成本,而多数轻量工具的月费在这个区间以下。反过来,如果你一个月只做一次组合分析,且商品不超过 50 个,表格工具完全够用,没必要为"看起来专业"付费。
另一个判断维度是工具是否真的减少了你的人工步骤。有些工具看起来功能多,但实际使用时还是要把数据导来导去,这种工具的价值有限。
这个问题我的回答是:在你没跑通至少三个月朴素方法之前,不要上模型。原因有两层。第一层是数据,三个月的时间才能积累足够的验证样本,让模型有可信的评估基础。第二层是业务,组合优化涉及很多算法之外的因素,库存、定价、页面位置、用户心理,模型只能处理其中一部分,剩下的需要人的判断。过早算法化,只会让你把精力放在模型调参上,忽略了更重要的业务环节。
如果你的店铺 SKU 超过 1000,且每月有固定的组合优化需求,可以考虑招一个兼职的数据分析。但如果你只是偶尔做一次,或者 SKU 在 500 以内,我建议先培养现有运营的分析能力。组合优化这件事,业务理解比技术能力更重要。一个懂商品、懂用户、能看懂提升度含义的运营,比一个只会跑模型的初级分析师价值更高。
这一点很多人不注意。组合优化是有收益上限的。当你的客单价提升幅度连续三个月在 5% 以内,说明已经接近当前商品结构的极限,继续投入的边际收益很低。这时候应该把精力转向其他杠杆,比如选品、定价或者流量结构,而不是继续在组合优化上死磕。

最后,我想把整篇文章压缩成一份可以直接照着做的清单。这份清单我给自己客户发过很多次,每一条都对应前面讲过的具体环节,你可以直接拿去用。
这四周跑完,你就完成了组合优化的"从 0 到 1"。第二个月重复一遍,速度会快很多,因为映射表和记录表已经建好了。

回到文章开头那个朋友的问题,380 个 SKU 怎么跑组合。答案是:不需要跑全部,只需要建立一套过滤和验证的流程,把 7 万多种可能性收敛到 20 个可执行方案。这件事的难点从来不在技术,而在流程是否闭环、记录是否坚持、判断是否克制。
我自己的核心观点是:组合优化做得好的团队,往往不是工具用得最先进的,而是记录做得最扎实的。因为组合优化的本质是一个"假设,验证,修正"的循环,没有记录,这个循环就断掉了。工具只是加快循环速度的手段。
下一步你可以做三件事:
做完这三件,你已经超过了大多数还在"拍脑袋选组合"的团队。


读者评论
文章对数据准备环节的强调很到位,尤其是订单去重那点,我确实犯过这个错,导致组合频次虚高。不过对于没有ERP的小团队,成本字段缺失怎么补?文中只提了从ERP补,能否给个轻量替代方案?
三层自动化方案的分层思路清晰,但流程自动化层提到用飞书多维表格定时刷新,具体怎么实现跨表关联和自动跑组合?感觉这部分操作细节偏少,对工具配置能力弱的人可能还是无从下手。
提升度筛选法效果数据看起来很好,但客单价提升14%且毛利率正增长,这个样本量多大?是单个店铺还是多家平均?如果是小样本,结论可能不稳健,希望能补充一下数据来源和统计口径。
从运营角度来说,只锁定一个目标这个建议很实用。我之前同时想清库存和提客单价,结果组合策略互相打架。但文章后面给出的数据清单要求近90天订单,大促前临时做确实来不及,日常就该维护好。