一、什么是购物篮分析经典问题顾客买了面包多大可能会买牛奶买了啤酒的人会不会买尿布业务场景电商推荐、零售促销、货架摆放、捆绑销售。一句话总结关联规则挖掘经常一起买的商品组合核心是支持度 置信度 提升度三大指标提升度 1 才算真关联。二、环境要求依赖库版本要求Python3.14scikit-learn1.9pandas3.0numpy2.4jupyter1.1notebook7.5nbconvert7.17三、数据预处理事务 → One-Hot原始数据每行一笔交易商品空格分隔。transactionspd.DataFrame({products:[bread eggs,bread eggs milk,milk cheese,bread butter cheese,eggs milk,bread milk butter cheese]})转换为 One-Hot 矩阵交易breadbuttercheeseeggsmilk010010110011200101311100400011511101工业方案mlxtend.preprocessing.TransactionEncoder一行搞定。frommlxtend.preprocessingimportTransactionEncoder teTransactionEncoder()te_arrte.fit(transactions[products].apply(lambdax:x.split())).transform(...)四、关联规则三大核心指标1. 支持度 Support(A)公式Support(A) count(A) / N含义A 在多少比例的交易中出现流行程度。supportdf.sum()/len(df)# bread: 0.6667 → 4/6 笔交易有 bread2. 置信度 Confidence(A→B)公式Confidence(A→B) Support(A∪B) / Support(A)含义买 A 的人里有多大比例也买了 B条件概率 P(B|A)。conf_cheese_bread(len(df.query(cheese1 and bread1))/len(df.query(cheese1)))# 0.6667 → 买 cheese 的人 2/3 也买了 bread3. 提升度 Lift(A→B)公式Lift(A→B) Confidence(A→B) / Support(B)含义A 是否真对 B 有促进过滤伪关联。Lift 值含义业务建议 1A 提升 B 出现概率正相关✅ 可作推荐规则 1A 与 B 独立❌ 不可用 1A 抑制 B负相关⚠️ 反推荐五、为什么必须看提升度反例假设买手机壳 → 买手机置信度 90%看似很强。真相90% 的人都会买手机与买不买手机壳无关。手机本身就是高频商品置信度高是假象。提升度公式Confidence / Support(B)把高频商品干扰剔除。经验值Lift 1.5 才算强关联Lift 2 才有商业价值。六、手工计算完整流程# 1. 单品支持度supportdf.sum()/len(df)# 2. 多品组合支持度sup_butter_cheeselen(df.query(butter1 and cheese1))/len(df)# 3. 置信度conf_butter_cheese(len(df.query(butter1 and cheese1))/len(df.query(butter1)))# 4. 提升度lift_butter_cheeseconf_butter_cheese/sup_butter_cheese# 2.0 → 买 butter 的人买 cheese 的概率是平均值的 2 倍七、工业实现路径原始日志 → 事务矩阵 → 频繁项集 → 关联规则 → 业务筛选步骤工具频繁项集挖掘Apriori / FP-Growth规则生成mlxtend.fpgrowth / apriori业务筛选提升度 1 业务回查常用库mlxtendfrommlxtend.frequent_patternsimportapriori,association_rules# 1. 挖掘频繁项集支持度 ≥ 0.01frequent_itemsetsapriori(df,min_support0.01,use_colnamesTrue)# 2. 生成关联规则置信度 ≥ 0.6rulesassociation_rules(frequent_itemsets,metricconfidence,min_threshold0.6)# 3. 按提升度筛选Lift 1.5strong_rulesrules[rules[lift]1.5].sort_values(lift,ascendingFalse)八、阈值经验值阈值推荐值含义min_support0.01 ~ 0.05至少 1-5% 交易出现min_confidence≥ 0.660% 以上的可能性min_lift 11.5 更强过滤伪关联调参思路min_support过高漏掉长尾规则过低组合爆炸min_confidence过高规则过少过低噪声多min_lift是核心筛选器必看九、业务应用模板业务问题超市希望提升客单价 ↓ 挖掘关联规则支持度 ≥ 0.02置信度 ≥ 0.5提升度 ≥ 1.5 ↓ 筛选买了 A 必买 B的强规则 ↓ 三种落地方式 1. 捆绑销售AB 组合优惠 2. 货架摆放A 旁放 B 3. 推荐系统买了 A 推荐 B ↓ A/B 测试验证转化率提升十、关键要点三大指标缺一不可单独看置信度会被高频商品误导提升度是核心Lift 1 才有真关联Lift 1.5 才强支持度是过滤器过滤掉罕见的巧合小数据集手工实现大数据用 mlxtend 的 Apriori/FP-Growth业务验证不可省统计上显著的规则未必有商业价值十一、常见陷阱❌ 只看置信度啤酒→尿布经典案例伪关联就会漏掉❌ min_support 设太低项集爆炸内存溢出❌ 忽略提升度推荐无效规则转化率不升反降❌ 样本量太小 1000 笔交易关联规则不可靠❌ 强规则直接上线必须 A/B 测试验证十二、完整实战示例mlxtendimportpandasaspdfrommlxtend.frequent_patternsimportapriori,association_rules# 假设 df 已经是 One-Hot 编码的事务矩阵# 1. 频繁项集freqapriori(df,min_support0.05,use_colnamesTrue)# 2. 关联规则rulesassociation_rules(freq,metriclift,min_threshold1.2)# 3. Top 10 强规则top10rules.sort_values(lift,ascendingFalse).head(10)print(top10[[antecedents,consequents,support,confidence,lift]])输出示例antecedentsconsequentssupportconfidencelift{butter}{cheese}0.3331.0002.000{bread, milk}{butter}0.1670.8002.400……………参考资料ant-exercises-sklearn: scikit-learn 编程练习 100 例