当前位置: 首页 > news >正文

别再只懂协同过滤了!手把手用亲和性分析为你的电商小程序做商品推荐

别再只懂协同过滤了!手把手用亲和性分析为你的电商小程序做商品推荐

在流量红利逐渐消失的今天,电商运营的核心已经从获取新用户转向了如何提升现有用户的购买频次和客单价。对于中小型电商团队来说,动辄投入数十万搭建复杂的推荐系统既不现实也不经济。而基于亲和性分析的商品推荐方法,只需要简单的交易日志和几十行Python代码,就能挖掘出"买了A商品的用户很可能也买B"这样的实用规则,直接应用于商品捆绑销售、购物车推荐或精准营销。

亲和性分析(Affinity Analysis)是一种基于关联规则的数据挖掘技术,它通过分析用户购买行为中的共现模式,找出商品之间的关联关系。与协同过滤等复杂算法相比,亲和性分析有三大优势特别适合资源有限的团队:

  • 零算法门槛:不需要理解复杂的机器学习原理
  • 计算资源友好:普通笔记本电脑就能处理数十万条交易记录
  • 结果直观可解释:规则如"买咖啡的用户70%会买糖"直接对应运营动作

1. 从交易日志到关联规则:完整数据处理流程

1.1 准备你的交易数据

理想的交易数据应该包含用户ID、商品ID和购买时间三个基本字段。对于刚开始积累数据的小程序,可以先用简化结构:

user_id,product_a,product_b,product_c 1001,1,0,1 1002,0,1,1 1003,1,1,0

其中1表示购买,0表示未购买。使用Python的pandas库加载数据:

import pandas as pd # 加载CSV文件 transactions = pd.read_csv('transactions.csv', index_col='user_id') print(transactions.head())

1.2 计算支持度与置信度

支持度(Support)衡量规则出现的频率,置信度(Confidence)反映规则的可靠性:

支持度 = 同时购买A和B的交易数 / 总交易数 置信度 = 同时购买A和B的交易数 / 购买A的交易数

用Python实现核心计算逻辑:

from collections import defaultdict # 初始化计数器 rule_counts = defaultdict(int) item_counts = defaultdict(int) # 遍历每笔交易 for _, row in transactions.iterrows(): purchased = [product for product, bought in row.items() if bought == 1] # 更新商品出现次数 for item in purchased: item_counts[item] += 1 # 更新规则出现次数 for i in range(len(purchased)): for j in range(i+1, len(purchased)): rule = (purchased[i], purchased[j]) rule_counts[rule] += 1 rule = (purchased[j], purchased[i]) # 双向规则 rule_counts[rule] += 1 # 计算支持度和置信度 rules = [] for (A, B), count in rule_counts.items(): support = count / len(transactions) confidence = count / item_counts[A] rules.append((A, B, support, confidence))

2. 筛选高价值关联规则的实战技巧

2.1 避免"啤酒与尿布"陷阱

经典的"啤酒与尿布"案例中,两件商品的高关联性可能源于外部因素(如促销活动),而非真实需求关联。解决方法:

  1. 时间窗口验证:检查关联是否在连续时间段内稳定出现
  2. 排除促销期数据:剔除大促期间的交易记录
  3. 用户分群验证:检查不同用户群体的规则一致性

2.2 支持度-置信度平衡矩阵

使用下表找到最佳规则筛选阈值:

规则类型支持度置信度适用场景
明星规则首页推荐
潜力规则精准推送
长尾规则清仓搭配

筛选Top规则的Python实现:

# 按支持度和置信度筛选 filtered_rules = [r for r in rules if r[2] > 0.05 and r[3] > 0.3] # 按提升度(Lift)排序 filtered_rules.sort(key=lambda x: x[2]*x[3], reverse=True) # 输出Top10规则 for i, (A, B, sup, conf) in enumerate(filtered_rules[:10]): print(f"规则{i+1}: 买{A}的用户有{conf:.1%}会买{B} (出现频率:{sup:.1%})")

3. 低成本落地应用的四种方式

3.1 购物车实时推荐

当用户将商品A加入购物车时,实时推荐关联商品B。实现代码框架:

def get_recommendations(cart_items, rules, top_n=3): recommendations = [] for item in cart_items: related = [r for r in rules if r[0] == item] related.sort(key=lambda x: x[3], reverse=True) recommendations.extend(related[:top_n]) # 去重并按权重排序 rec_dict = {} for A, B, sup, conf in recommendations: if B not in rec_dict or conf > rec_dict[B][1]: rec_dict[B] = (A, conf, sup) return sorted(rec_dict.items(), key=lambda x: x[1][1], reverse=True)

3.2 商品捆绑销售策略

根据关联规则设计优惠组合:

def create_bundles(rules, min_confidence=0.4): bundles = [] for A, B, sup, conf in rules: if conf >= min_confidence: discount = min(int((1 - 0.8/conf)*100), 30) # 动态折扣计算 bundles.append({ 'main_item': A, 'bundled_item': B, 'discount': f"{discount}%", 'expected_uplift': f"{int(conf*100)}%" }) return bundles

3.3 精准营销信息推送

对最近购买过商品A但未买B的用户推送B商品优惠:

-- 示例SQL查询目标用户 SELECT user_id FROM transactions WHERE product_a = 1 AND product_b = 0 AND purchase_date > DATE_SUB(NOW(), INTERVAL 7 DAY)

3.4 商品陈列优化

将高关联商品摆放在相邻位置,提升交叉销售机会。关联热力图生成代码:

import seaborn as sns import matplotlib.pyplot as plt # 创建关联矩阵 products = list(item_counts.keys()) matrix = pd.DataFrame(0, index=products, columns=products) for (A, B), count in rule_counts.items(): matrix.at[A, B] = count / item_counts[A] # 绘制热力图 plt.figure(figsize=(10,8)) sns.heatmap(matrix, annot=True, fmt=".1%", cmap="YlGnBu") plt.title("商品关联强度热力图") plt.show()

4. 进阶优化与效果评估

4.1 引入时间衰减因子

近期的购买行为比历史行为更具参考价值。添加时间权重:

def apply_time_decay(row, half_life=30): days_ago = (pd.to_datetime('today') - row['purchase_date']).days return row['purchased'] * (0.5 ** (days_ago / half_life))

4.2 规则有效性验证的AB测试方法

实施推荐策略后,用以下指标评估效果:

指标计算公式达标标准
捆绑销售转化率捆绑订单数/曝光数>15%
推荐点击率推荐点击/曝光>8%
客单价提升(实施后-实施前)/实施前>5%

4.3 处理冷启动问题的技巧

新品上市时可采用替代策略:

  1. 品类关联:使用同类商品的关联规则
  2. 属性关联:基于商品标签(价格带、风格等)匹配
  3. 小流量测试:快速收集初始数据
def cold_start_recommend(new_item, item_features): # 基于特征相似度找最近邻 from sklearn.neighbors import NearestNeighbors nn = NearestNeighbors(n_neighbors=3) nn.fit(item_features) distances, indices = nn.kneighbors([new_item['features']]) return indices[0]

在实际运营中,我们发现将亲和性分析与简单的用户分群结合(如按购买频次、客单价分层),规则准确率能提升20-30%。一个典型的成功案例是某母婴小程序通过"尿不湿+湿巾"的关联规则,将两者捆绑销售后,湿巾的复购率提升了45%。

http://www.jsqmd.com/news/936239/

相关文章:

  • 2026/5/30
  • 3分钟掌握LayerDivider:AI智能图像分层终极指南
  • 南京市雨花台区奥成彩钢瓦:专业做南京金属材料批发公司 - LYL仔仔
  • Win10下SPB17.4 Cadence License Manager开机自启失败的终极解决方案(附日志分析)
  • 保姆级教程:MTK平台AE Histogram Stretch参数调试实战(以6765/6873为例)
  • Unix 通配符注入攻击:从参数污染到命令执行
  • 基于Arduino Nano的可编程定时器:从电路设计到软件调试全解析
  • 基于LoRaWAN的空气质量监测系统:从传感器到云端的全链路实践
  • 阴阳师自动化脚本终极指南:御魂管理与游戏效率深度优化
  • 用分立元件复刻NE555定时器:从原理到实践的深度解析
  • 运维开发宝典021-Linux文件服务器VSftp和NFS
  • 2026 无锡 GEO 优化服务商深访测评:制造业 AI 获客怎么选更稳 - 小艾信息发布
  • 别浪费了!沃尔玛购物卡回收居然这么简单! - 团团收购物卡回收
  • 猫抓Cat-Catch:浏览器资源嗅探扩展的7大核心技术深度解析
  • CentOS 7服务器时间总飘移?可能是防火墙和时区没设对!chrony配置避坑指南
  • 基于Arduino与Qwiic的环境监测机器人:从传感器融合到阈值控制
  • 2026年广东广州5大沉香手串供应链/生产厂家推荐!2026最新排名出炉,白石沉香家族优势突出 - 十大品牌榜
  • 电子入门:从串联电路到LED驱动,Tinkercad仿真与实物制作全解析
  • 如何快速配置第七史诗自动化脚本工具:面向新手的完整指南
  • 6月最新开发商发布|南京江宁映秦淮售楼电话 - 资讯快报
  • 2026 福州本地黄金回收排名盘点,上门 + 到店双测优选头部老店 - 奢侈品回收测评
  • 别再只盯着OFDM了!用Python手把手复现SC-FDE系统,实测抗多径效果
  • 测试左移实战:用Testsigma让产品经理也能参与编写自动化用例
  • E7Helper终极指南:5个简单步骤快速掌握第七史诗自动化脚本
  • 终极Windows内存优化指南:用Mem Reduct轻松释放系统资源
  • 树莓派物联网实践:用Python与LED打造可视化天气监测站
  • 大连名表回收哪家行情好?五家本地机构高价靠谱测评 - 奢侈品回收测评
  • 别再为标定误差头疼了!手把手教你用VisionMaster的‘放射变换’模块校正不共轴旋转平移
  • 2026年德州企业短视频运营与GEO获客多维对比测评:从账号搭建到线索转化的全链路方案 - 企业名录优选推荐
  • 用Scratch与Makey Makey打造西班牙语音节互动游戏:STEAM教育实践