频繁项集挖掘问题

频繁项集挖掘问题

以一个交易数据来举例说明,每一项交易数据由一个交易记录id和一组物品相关。

TID Items
T100 I1,I2,I3
T200 I2,I3,I4
T300 I3,I4
T400 I1,I2,I3,I4

一个itemset,长度为K,即为频繁K项集

支持度

S u p p o r t = M / N Support = M / N Support=M/N

N = 交易记录的总条目数

M = 包含Item I全体的 交易记录的 总条目数

例如 I = {I1,I2} 则N=4,M=2

支持度 s u p p o r t = 2 4 = 0.5 support = \frac{2}{4} = 0.5 support=42=0.5

如果support(I) 不小于设定的最小支持度阈值,则I被认为是一个频繁项集

Goal of frequent sets mining: 找出所有的频繁K项集,K=1,2,3…

如果暴力枚举,时间复杂度为 O ( 2 n ∗ N ∗ t ) O(2^n*N*t) O(2nNt) n是Item总数,N是交易条数,t是每个交易平均包含的item数

Apriori算法

基本流程

频繁项集挖掘问题_第1张图片

  1. 先发现所有频繁1项集,淘汰掉不符合阈值的频繁项集,

    if {A,B} not frequent,then {A,B,C} must not be frequent

  2. 在随后每一次迭代中,频繁K项集已经找到,作为seed,然后就能很方便找到频繁K+1 项集

  3. 重复迭代 直到不再频繁(淘汰达不到阈值的)

以上是在不考虑置信度的简单算法


原理

支持度 s u p p o r t ( A = > B ) = P ( A ∪ B ) support(A=>B) = P(A\cup B) support(A=>B)=P(AB) 表示A和B同时出现的概率

置信度 c o n f i d e n c e ( A = > B ) = s u p p o r t ( A ∪ B ) s u p p o r t ( A ) confidence(A=>B) = \frac{support(A\cup B)}{support(A)} confidence(A=>B)=support(A)support(AB) 表示A和B同时出现的概率占A出现概率的比值

强关联规则:满足最小支持度和最小置信度的关联规则

  1. 从记录中计算所有的候选1项集,并计算频繁1项集及支持度。
  2. 由频繁1项集生成k项候选集,并由k项候选集计算k项频繁集。
  3. 用k项频繁集生成所有关联规则,计算生成规则置信度,筛选符合最小置信度的关联规则。

当找出所有的频繁后需要从频繁集中挖掘所有的关联规则,假设频繁项集{0,1,2,3},下图表示其生成的所有关联规则,对于阴影部分的低可信度的规则,它们的子集同样也会是低可信度的。

频繁项集挖掘问题_第2张图片

用于推荐

推荐系统之基于关联规则推荐_

关联规则是反映一个事物与其他事物之间的相互依存性和关联性,常用于实体商店或在线电商的推荐系统:通过对顾客的购买记录数据库进行关联规则挖掘,最终目的是发现顾客群体的购买习惯的内在共性。

例如购买产品A的同时也连带购买产品B的概率,根据挖掘结果,调整货架的布局陈列、设计促销组合方案,实现销量的提升,最经典的应用案例莫过于《啤酒和尿布》

关联规则分析中的关键概念包括:支持度(Support)、置信度(Confidence)

[例子] 喜欢图书A的用户还喜欢其他哪些图书?

推荐流程

  1. 数据清理:对用户和图书分别计数,过滤掉一些超不活跃的用户和超冷门的图书
  2. 计算两两图书之间的支持度、置信度、提升度,根据最低支持度、最低置信度、最低提升度剪枝,把低于最小值的规则扔掉(Apriori)
  3. 对图书A进行推荐:找出图书A的所有规则,按照置信度降序排序,Top-N即为和图书A最相关的前N本图书

总结:按照置信度进行排序,筛选出TOP-N

你可能感兴趣的:(课程学习,Hadoop,推荐算法,数据挖掘)