Python实战:用GSP算法挖掘电商用户购买序列中的隐藏规律(附完整代码)
电商平台每天产生海量交易数据,如何从这些看似杂乱无章的购买记录中发现有价值的规律?想象一下,当用户购买手机后,接下来有65%的概率会在7天内购买手机壳;购买婴儿奶粉的客户中,42%会在下个月购买尿不湿。这类规律对精准营销和库存管理具有重大意义。本文将带你用Python实现经典的GSP算法,从原始订单数据中挖掘这类隐藏的购买序列规律。
1. 电商序列模式挖掘的核心价值
在电商数据分析中,我们常遇到这样的场景:用户A的购买记录是[手机→钢化膜→手机壳],用户B的记录是[充电宝→数据线→耳机],这些按时间排列的购买行为构成了购买序列。序列模式挖掘就是要找出频繁出现的子序列模式。
传统关联规则挖掘(如Apriori)只能发现"购物篮"中的共现商品,而GSP算法能捕捉时间先后关系。这带来三个独特优势:
- 预测性推荐:不仅知道用户买了什么,还知道接下来可能买什么
- 生命周期营销:识别用户购买路径,在关键节点进行干预
- 库存优化:预判商品需求波动,特别是关联性强的组合商品
实际案例:某跨境电商应用GSP算法后,发现"登山鞋→冲锋衣→登山杖"的强关联序列,针对购买登山鞋的用户定向推送冲锋衣,转化率提升37%。
2. GSP算法原理解析
GSP(Generalized Sequential Pattern)算法是序列模式挖掘的经典方法,其核心思想是逐层搜索和剪枝优化。与Apriori算法类似,但增加了时间维度处理。
2.1 关键概念说明
- 序列(Sequence):有序的项目列表,如<[a,b], [c]>表示先同时购买a和b,再购买c
- 支持度(Support):包含该序列的客户比例
- 最小支持度(min_sup):判断序列是否频繁的阈值
2.2 算法执行流程
def gsp_algorithm(database, min_sup):
# 扫描数据库找出频繁1项集
L1 = find_frequent_1_sequences(database, min_sup)
k = 2
while True:
# 生成候选k项序列
Ck = generate_candidates(Lk_1, k)
# 计算候选序列支持度
Lk = count_support(Ck, database, min_sup)
if not Lk:
break
Lk_1 = Lk
k += 1
return all_frequent_sequences
2.3 候选生成与剪枝策略
GSP通过两种操作生成候选序列:
-
连接(Join):将两个(k-1)序列合并为k序列
- 序列<[1],[2]>和<[2],[3]>可连接为<[1],[2],[3]>
-
剪枝(Prune):删除支持度不足的候选
- 如果<[1],[3]>不频繁,则<[1],[3],[4]>必然不频繁
3. Python完整实现与电商数据实战
我们使用一个模拟的电商数据集演示完整流程。数据集包含1000条用户购买序列,商品用字母表示。
3.1 数据准备与预处理
import pandas as pd
from collections import defaultdict
#

&spm=1001.2101.3001.5002&articleId=153948133&d=1&t=3&u=a5e1c21d0c1142b9bbc5b53b25510918)
876

被折叠的 条评论
为什么被折叠?



