关联推荐并不是所有人都有了解,但大家熟知的啤酒和尿不湿的故事应该都有听说,该案例就是亚马逊通过关联规则实现的,算法的主要原理是以购物车为单位,分析商品频繁出现的概率,即一件商品出现在购物车后会再加入另一件商品的概率
介绍
关联推荐这里主要使用FP-growth,该方法比传统的Apriori算法性能要好很多,关于FP树的实现这里不做解释,感兴趣的小朋友可以百度了解下;下面直接上代码
spark实现:
- 构建频繁项集
import org.apache.spark.ml.fpm.FPGrowth
val df = sql("select u_i ,collect_set(pid) items from tab group by u_i")
val fpgrowth = new FPGrowth().setItemsCol("items").setMinSupport(0.0001).setMinConfidence(0.01)
val model = fpgrowth.fit(df)
model.associationRules.createOrReplaceTempView("ar")
- 生成推荐列表
select title , recommend , confidence, lift from(
select title as recommend , a.id, confidence, lift from (
select explode(antecedent ) rid, consequent[0] id, lift, confidence from ar where lift>2 and confidence>0.1
) as a left join app.product_model as b on a.rid=b.id ) c left join app.product_model as d where c.id=d.id order by d.id,lift desc
网友评论