目录

  • 1 第一章 数据仓库概述
    • 1.1 授课安排
    • 1.2 数据仓库及其历史
      • 1.2.1 数据仓库的概念
        • 1.2.1.1 本节视频
      • 1.2.2 数据仓库特征
        • 1.2.2.1 本节视频
    • 1.3 数据仓库系统结构
      • 1.3.1 数据仓库系统的组成
        • 1.3.1.1 本节视频
      • 1.3.2 ETL
        • 1.3.2.1 本节视频
      • 1.3.3 数据仓库和数据集市的关系
      • 1.3.4 元数据及其管理
      • 1.3.5 数据集市和元数据管理视频
    • 1.4 数据仓库系统开发工具
    • 1.5 数据仓库与操作型数据库的关系
      • 1.5.1 本节视频内容
  • 2 第二章 数据仓库设计
    • 2.1 授课安排
    • 2.2 数据仓库设计概述
    • 2.3 数据仓库的规划和需求分析
    • 2.4 数据仓库的建模
    • 2.5 数据仓库的物理模型设计
    • 2.6 数据仓库的部署和维护
  • 3 第三章 OLAP技术
    • 3.1 授课安排
    • 3.2 OLAP概述
    • 3.3 OLAP的多维数据模型
    • 3.4 OLAP实现
  • 4 第四章 数据
    • 4.1 课程资料
  • 5 第五章 数据挖掘概述
    • 5.1 授课安排
    • 5.2 什么是数据挖掘?
    • 5.3 数据挖掘系统
    • 5.4 视频
    • 5.5 数据挖掘过程
  • 6 第六章 关联分析
    • 6.1 授课安排
    • 6.2 关联分析概念
    • 6.3 Apriori算法
    • 6.4 FP-growth树
    • 6.5 多层关联规则
    • 6.6 【扩充知识】机器学习——关联规则——支持度(support)、置信度(confidence)、提升度(Lift)
  • 7 第七章 序列模式挖掘
    • 7.1 序列模式挖掘概述
    • 7.2 AprioriAll算法
    • 7.3 AprioriSome算法
    • 7.4 FreeSpan算法
    • 7.5 PrefixSpan算法
  • 8 第八章 聚类分析
    • 8.1 聚类概述
  • 9 分类算法
    • 9.1 课件
  • 10 实验1 python基础
    • 10.1 讲解文本内容
    • 10.2 课程PDF
    • 10.3 实验代码
    • 10.4 实验报告封皮
  • 11 实验2-python
    • 11.1 讲解文本内容
    • 11.2 实验代码
    • 11.3 实验报告封面
  • 12 实验3--python
    • 12.1 讲解文本内容
    • 12.2 实验代码
    • 12.3 实验报告封面
  • 13 实验4--python
    • 13.1 讲解文本内容
    • 13.2 21.1实验代码
    • 13.3 实验内容2
    • 13.4 实验内容3
    • 13.5 实验报告封面
  • 14 实验5--python
    • 14.1 文本内容-NumPy模块
    • 14.2 第三方可视化数据分析图表
    • 14.3 数据
    • 14.4 思考题
    • 14.5 实验报告封面
  • 15 实验6--python
    • 15.1 实验 NumPy矩阵的基本操作
    • 15.2 实验 关联规则算法
    • 15.3 实验 商品零售购物篮分析
    • 15.4 实验报告封面
  • 16 实验7--python
    • 16.1 实验1 用关联规则分析方法推荐电影
    • 16.2 实验2 FP-growth算法
    • 16.3 实验3 教育平台的线上课程推荐策略
    • 16.4 实验报告封面
  • 17 实验8-python
    • 17.1 实验1 购物车分析
    • 17.2 实验2 基于关联规则的文本分析
  • 18 实验9--python
    • 18.1 实验1 聚类分析
    • 18.2 实验2 航空公司客户价值分析
    • 18.3 实验3 运输车辆安全驾驶行为分析
    • 18.4 实验报告封面
Apriori算法

Apriori算法


Apriori算法是由Agrawal等人于1993提出的,它采用逐层搜索策略(层次搜索策略)产生所有的频繁项集。 

一、Apriori性质

Apriori性质:A是一个频繁项集,则A的每一个子集都是一个频繁项集。

例如,若{beerdiapernuts}项集是频繁的,则{beerdiaper}也一定是频繁的,但{applebeerdiapernuts}不一定是频繁的。

定义5.8 一个项集A的超集C,是指C满足AÌC,且|A|<|C|。也就是说,由A项集添加任意多个其他项构成的项集都是A的超集。

 由项集A仅添加一个项构成的项集C称为A的直接超集。注意这里在A中添加的项默认都是不重复的项。

二、Apriori算法

1. 基本的Apriori算法

Apriori算法的基本思路是采用层次搜索的迭代方法,由候选(k-1)-项集来寻找候选k-项集,并逐一判断产生的候选k-项集是否是频繁的。

 Ck是长度为k的候选项集的集合Lk是长度为k的频繁项集的集合。为了简单,设最小支持度阈值min_sup为最小元组数,即采用最小支持度计数

首先,找出频繁1-项集,用L1表示。

L1寻找C2,由C2产生L2,即产生频繁2-项集的集合。

L2寻找C3,由C3产生L3

以此类推,直至没有新的频繁k-项集被发现。求每个Lk时都要对事务数据库D作一次完全扫描。

【例5.1】对于表5.1所示的事务数据库,设min_sup=2,产生所有频繁项集的过程如图5.1所示,最后L4=Ф,算法结束,产生的所有频繁项集为L1L2L3

解体见视频

2. 自连接:由Lk-1构建Ck

为找出Lk,通过Lk-1与自身连接产生候选k-项集的集合,记作Ck。设l1l2Lk-1中的项集。li[j]表示li的第j项。假定事务或项集中的项按字典次序排序,使得li[1]<li[2]<...<li[k-1]。执行连接Lk-1       Lk-1;其中Lk-1的元素是可连接的,如它们前(k-2)个项相同,即Lk-1的元素l1l2是可连接的,如l1[1]=l2[1])Ù(l1[2]=l2[2])Ù...Ù(l1[k-2]=l2[k-2])Ù(l1[k-1]<l2[k-1])。条件l1[k-1]<l2[k-1]是简单地确保不产生重复。连接l1l2产生的结果项集是{l1[1],l1[2],...l1[k-1],l2[k-1]}

例如:由L2生成C3的过程中,L2中的{A,C}和{B,C}只相差一个项目,因此它们可以连接生成{A,B,C}。

但是, L2中的{A,C}和{B,E}无法进行连接。

3. 对Ck进行剪枝操作

对于由Lk-1生成的Ck,从Ck中删除明显不是频繁项集的项集,这称为剪枝操作。这里Lk-1包含所有的(k-1)-频繁项集,也就是说,若某个(k-1)-项集不在Lk-1中,则它一定不是频繁的。

Apriori算法的性质:频繁集的所有非空子集也一定是频繁的

例如:虽然L2中的{A,C}和{B,C}可以连接生成{A,B,C},但是由于{A,B,C}的子集{A,B}不是频繁集(不在L2中),因此,需要从C3中删除{A,B,C} 。


三、由频繁项集产生关联规则

1. 产生关联规则的基本过程

因为由频繁项集的项组成的关联规则的支持度大于等于最小支持度阈值,所以规则产生过程是:

 在由频繁项集的项组成的所有关联规则中,找出所有置信度大于等于最小置信度阈值的强关联规则。

对于形如lu→(l-lu)的规则,其置信度为 

因此,对于每个频繁项集l,求强关联规则的基本步骤如下:

产生l的所有非空真子集。

对于l的每个非空真子集lu,如果l的支持度计数除以lu的支持度计数大于等于最小置信度阈值min_conf,则输出强关联规则lu→(l-lu)。其中,因为l是频繁项集,根据Apriori性质,lu与(l-lu)都是频繁项集,所以,其支持计数在频繁项集产生阶段已经计算,在此不必重复计算。

2. 通过剪枝提高效率

对于频繁项集l及其两个非空真子集lulv,如果lvÍlu,并且规则lu→(l-lu)不是强关联规则,则规则lv→(l-lv)也不是强关联规则。

生成强关联规则的剪枝原则

由于lulvl的两个非空真子集,所以lvÍlu等价于(l-lv)Ê(l-lu),也就是说,若(l-lv)Ê(l-lu)成立,并且规则lu→(l-lu)不是强关联规则,则规则lv→(l-lv)也不是强关联规则。

更简单地说,对于频繁项集l,在产生它的所有强关联规则时,若l的某个真子集la,有(l-la)→la不是强关联规则,则对于后件为la的超集的任何规则均不是强关联规则


四、非二元属性的关联规则挖掘

现实数据集中的属性通常可以取离散化的多个值,甚至是连续值,无法直接利用上述算法挖掘出关联规则。

 为此可以利用数据预处理方法,将它们转换为二元属性,再应用针对购物篮数据的关联规则挖掘算法。

具体内容见视频