关联规则与协同推荐

  • 关联规则

关联规则(关联分析),也算是机器学习十大算法之一的一种了,场景应用很直观,就是帮我们找出每个特征之间的隐含关系。最有名的案例应该是“尿布与啤酒”的案例了。
一般我们会用Apriori算法帮助实现,这里先不写这些,最近我的目标还是按照选课的进度迅速结业,然后回过头来细化类似聚类、关联、PCA,当然还包括mapreduce的一些内容。

常用的两个度量公式:
支持度(support)
关联规则可信度(confidence)
可信度约接近于1,且显著大于购买Y的支持度,即如果购买X,Y的人较少,那么这条信息没有什么价值,支持度展示了关联规则的统计显著性,可信度展示了关联规则的强度。
提升度(lift)
提升度反映了关联规则中的特征相关性,提升度大于1且越高表明正相关性越高,提升度小于1且越低表明负相关性越高,提升度等于1表明没有相关性。

关联规则方法

from apyori import apriori
transactions = data.groupby(by='交易ID').apply(
    lambda x: list(x.购买商品)
).values
results = list(
    apriori(
        transactions
    )
)
#支持度(support)
supports = [];
#自信度(confidence)
confidences = []
#提升度(lift)
lifts = []
#基于项items_base
bases = []
#推导项items_add
adds = []
for r in results:
    supports.append(r.support)
    confidences.append(r.ordered_statistics[0].confidence)
    lifts.append(r.ordered_statistics[0].lift)
    bases.append(list(r.ordered_statistics[0].items_base))
    adds.append(list(r.ordered_statistics[0].items_add))

result = pandas.DataFrame({
    'support': supports,
    'confidence': confidences,
    'lift': lifts,
    'base': bases,
    'add': adds
})


r = result[(result.lift>1) & (result.support>0.5) & (result.confidence>0.5)]
  • 协同过滤推荐

协同过滤推荐用于分辨某位特定顾客可能感兴趣的东西,这些结论来自于其他相似顾客对哪些产品感兴趣的分析。
协同过滤包括在线协同和离线过滤两部分。所谓的在线协同,就是通过在线数据找到用户可能喜欢的物品,而离线过滤,则是过滤掉一些不值得推荐的数据,比如一些推荐值偏低的数据,或者推荐值偏高但是用户已经购买的数据。

在电商领域应用比较多,因此就拿电商的例子来举例,比如说有m个物品,m个用户的数据,但是目前只有部分用户和部分数据之间是有评分的,其他的评分都是空白,此时我们要用已有的部分稀疏数据来预测那些空白的物品和数据之间的评分关系,找到最高评分的物品推荐给用户。

这里涉及到几个概念:

  • 用户行为向量:
    比如说有5个商品,ID:001的顾客分别对#1产品评分5,#3产品评分3,#5号产品评分1,那么用户行为向量就会写为(5, 0, 3, 0, 1)。
  • 商品评分向量:
    比如说有10个用户,这些用户中的部分对商品3进行了评分,ID:001给出的评分是5,ID:002给出的评分是3,ID:005给出的评分是1,那么该商品的评分向量便是(5, 3, 0, 0, 1, 0, 0, 0, 0, 0)。

当我们把商品和消费者都向量化,在计算相似性上,问题又回归到了相似度上。

  • 相似度计算:
    欧式距离(两点间的距离):
    相似度计算:

  • 相似邻居计算:
    固定数量邻居(K-neighborhoods):取周围最近的K个作为邻居。
    基于相似度门槛的邻居(Threshold-based neighborhoods):我们可以设置距离阈值,阈值内的认为是邻居。

你可能感兴趣的:(关联规则与协同推荐)