推荐算法大致分为:
- 基于物品和用户本身
- 基于关联规则
- 基于模型的推荐
基于物品和用户本身
基于关联规则
基于模型的推荐
其实在现在的推荐系统中,很少有只使用了一个推荐策略的推荐引擎,一般都是在不同的场景下使用不同的推荐策略从而达到最好的推荐效果,例如 Amazon 的推荐,它将基于用户本身历史购买数据的推荐,和基于用户当前浏览的物品的推荐,以及基于大众喜好的当下比较流行的物品都在不同的区域推荐给用户,让用户可以从全方位的推荐中找到自己真正感兴趣的物品。探索推荐引擎内部的秘密,第 1 部分: 推荐引擎初探
FP-tree推荐算法 是属于上面第二条基于关联规则
推荐的算法,他一共只要 遍历2次
原始数据就行了,比 apriori推荐算法复杂度会相对低一点,本文着重讲解该算法的计算。
按照网上最简单的例子来进行分析,假设有事务数据如下:
写入原始数据:
第一次遍历原始数据,对原始数据进行计数,得到:
{'G': 2, 'B': 7, 'D': 6, 'A': 3, 'E': 4, 'C': 8, 'F': 1}
python代码为:
假设最小支持度为 support = 3
,剔除掉不满足的数据,得到:
{'A': 3, 'B': 7, 'E': 4, 'D': 6, 'C': 8}
剔除掉的数据为:
['F', 'G']
python代码为:
第二次遍历原始数据,构造FP-tree:
挖掘FP-tree,采用自底向上迭代方法,查找以A为后缀的频繁项集,然后是E,D,B,C。例如A的节点路径为:
python代码为:
将节点路径的count全部和A一致:
统计所有字母种类,也就是:
{'E': 2, 'B': 2, 'CB': 1, 'C': 2, 'BE': 1, 'CE': 1}
没有满足 support >= 3
,所以A没有强关联的元素。
统计所有字幕种类的python代码为:
最后得到置信度:
{'E': {'B': '3/7', 'C': '3/8'}, 'B': {'C': '5/8'}, 'D': {'B': '4/7', 'C': '5/8', 'CB': '3/5'}}
代表的意思是:
买了C人,有3/8概率买E,有5/8概率买B,有5/8概率买D,且买了C又买了B的人有3/5的概率买D
置信度的计算可以参考上一篇博文:
置信度的python代码为:
所有源码都在:
TTyb