Prefixspan 算法的 Python 实现,是那种一看就觉得“哎哟,还挺好上手”的工具。算法本身是老牌选手——2001 年 Pei 大神提出的,主打一个轻装上阵、甩掉 Apriori 那堆候选集的累赘。
频繁项集挖掘这块儿,Prefixspan 的策略是通过“前缀投影”一点点深入,递归地往下挖。你不用担心爆炸式的组合,它自己会剪枝,挺聪明的。嗯,这也正是它在大数据
里比较吃香的原因。
你只要先用pandas
把交易数据成DataFrame
,按订单分组就 OK 了。,借个LabelEncoder
或者自己写个映射函数,把商品名转成数字,编码之后更方便。
实现的时候,大体思路是先搞一轮频繁项集,再从这些里头挑出能继续扩展的,像树一样一层层往下长。如果某个前缀都不频繁了,那它的“后代”也没戏,就直接剪掉,省时间还省空间。
代码部分用的是Python 2.7
,虽然有点老,但用生成器
、迭代器
优化得还不错,内存占用不高。你在运行的时候记得设好最小支持度
,太高找不到结果,太低又会太多,不好选。
如果你想深入搞点关联规则
,这套里也了对应的生成逻辑。常见的If A then B
规则,搭配支持度
和置信度
来看,还挺实用。
如果你平时做用户行为
、电商推荐
这类项目,那这套 Prefixspan 实现还蛮值得一试的。别忘了里面还有数据集和测试用例,跑一跑看看效果。
如果你想补补基础,Apriori 算法的文章也可以看看,对比一下会更清晰。