精华内容
下载资源
问答
  • 数据仓库与数据挖掘

    2019-05-13 23:30:08
    《数据仓库与数据挖掘》课程综合性实验报告 开课实验室:软件工程实验室 2019 年 5 月 6 日 实验题目 OLAP数据分析与数据挖掘算法应用 一、 实验目的 1、对数据进行ETL操作 (1)熟悉工具的运用,初步掌握数据仓库数据...

    《数据仓库与数据挖掘》课程综合性实验报告

    开课实验室:软件工程实验室 2019 年 5 月 6 日
    实验题目 OLAP数据分析与数据挖掘算法应用
    一、 实验目的
    1、对数据进行ETL操作
    (1)熟悉工具的运用,初步掌握数据仓库数据的ETL过程。
    (2)加深对ETL(提取、转换、加载)的理解。
    2、通过OLAP进行数据分析
    (1)熟悉OLAP进行数据分析
    (2)学会使用自底向上方法创建数据立方
    (3)学会运用OLAP的四个分析操作分析数据仓库。
    3、Apriori 关联规则算法应用
    (1)熟悉使用关联规则算法挖掘数据仓库信息
    (2)创建关联规则挖掘模型
    4、K-Means 聚类算法应用
    (1)熟悉使用K-Means聚类算法挖掘数据仓库信息
    (2)创建K-Means聚类挖掘模型
    二、设备与环境
    Windows 10 操作系统,SQL server 2012,VS2017(SSDT)
    三、实验要求
    本实验按照实验目的,实现四个目标,包括四个部分。按照教材中SQL
    Server应用案例逻辑格式,给出实验报告,具体包括:1、环境准备;2、操作步骤;3、详细步骤;在详细步骤中,要求有系统实现的截图,作为给分的重要依据。
    在实验中涉及数据集,可以使用SQL server系统中的数据集或者自行下载网络数据集。
    四、实验内容及分析
    1、对数据进行ETL操作
    ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程)作为BI/DW(Business Intelligence)的核心和灵魂,能够按照统一的规则集成并提高数据的价值,是负责完成数据从数据源向目标数据仓库转化的过程,是实施数据仓库的重要步骤。
    ETL负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。
    ETL是数据仓库中的非常重要的一环。它是承前启后的必要的一步。相对于关系数据库,数据仓库技术没有严格的数学理论基础,它更面向实际工程应用。所以从工程应用的角度来考虑,按着物理数据模型的要求加载数据并对数据进行一些系列处理,处理过程与经验直接相关,同时这部分的工作直接关系数据仓库中数据的质量,从而影响到联机分析处理和数据挖掘的结 果的质量。
    数据仓库是一个独立的数据环境,需要通过抽取过程将数据从联机事务处理环境、外部数据源和脱机的数据存储介质导入到数据仓库中;在技术上,ETL主要涉及到关联、转换、增量、调度和监控等几个方面;数据仓库系统中数据不要求与联机事务处理系统中数据实时同步,所以ETL可以定时进行。
    2、通过OLAP进行数据分析
    (1)熟悉SSAS工具的使用
    (2)学会使用自底向上方法创建数据立方
    (3)实验内容
    本实验的数据源是基于SQL 2005中的示例数据库Adventure Works DW,利用自下而上的设计方法生成Cube。
    随着数据库技术的发展和数据库规模的日益扩大,人们希望从已有的数据库中提炼出有用的信息服务于决策。数据仓库及其联机分析处理技术为了适应这种需要而逐步发展起来,是近年来商业数据处理领域中的两个重大的新技术。OLAP按照数据立方体模型组织数据,从而方便了
    查询
    更改了各个表的属性的FriendlyName后的数据源视图,从图中可以看到这是一个雪花模型。

    OLAP的用户是决策者,主要作用是支持决策以及在线分析处理。它通常用于及时查询,多数是读操作。
    部署成功

    通过实际操作,对于OLAP的操作有了一定的了解。通过使用SASS进行OLAP的四个操作:切片、切块、钻取和旋转,对于他们的有了更进一步的了解。实际上,我们可以使用SQL中的一些函数如MIN(),MAX(),AVG(),GROUP BY()等处理以上四种操作,相比于直接操作SQL语言,用OLAP进行数据仓库操作是非常方便简单的。

    3、Apriori 关联规则算法应用
    关联规则A->B的支持度support=P(AB),指的是事件A和事件B同时发生的概率。 
    置信度confidence=P(B|A)=P(AB)/P(A),指的是发生事件A的基础上发生事件B的概率。
    vAssocSeqLineItems 和vAssocSeqOrders之间多对一的关系

    该算法多次扫描记录集,目的是为了产生长度不同的频繁集。

    MINIMUM_SUPPORT 指定在该算法生成规则之前必须包含项集的事例的最小数目

    关联规则反映了一个事物与其他事物之间的相互依存性和关联性

    4、K-Means 聚类算法应用
    K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一。K-means算法的基本思想是:把 n 的对象根据他们的属性分为 k 个分割,k < n。它与处理混合正态分布的最大期望算法很相似,因为他们都试图找到数据中自然聚类的中心。它假设对象属性来自于空间向量,并且目标是使各个群组内部的均方误差总和最小。
    使用数据集是SQL Server2012 中的Adventure Works DW 数据库中的vTargetMail数据集,创建数据挖掘结构。

    设置挖掘模型的算法参数

    部署成功后,与Apriori类似,所以这里不再叙述 。

    评定项目 A B C D 评定项目 A B C D
    对数据进行ETL操作 通过OLAP进行数据分析
    Apriori 关联规则算法应用 K-Means 聚类算法应用
    成绩:
    综合实验成绩说明:按照每一个子目标达成情况给出成绩。

    组长签字 指导教师签字
    2019-5-6

    展开全文
  • 文章目录第一章 数据仓库与数据挖掘概述第二章 数据仓库概述第三章 联机分析处理(OLAP)第四章 数据挖掘的基本概念第五章 数据预处理第六章 概念描述:特征化和比较习题答案 第一章 数据仓库与数据挖掘概述 无习题 ...

    第一章 数据仓库与数据挖掘概述

    无习题

    第二章 数据仓库概述

    一. 判断题

    1. 在分析型处理产生后,数据处理的环境由原来的以单一数据库为中心的数据环境发展为以数据仓库为基础的体系化环境。
    2. 在事务型(操作型)数据处理下,数据处理的环境主要是以单一数据库为中心的数据环境。
    3. 数据仓库是为构建分析型数据处理环境而出现的一种数据存储和组织技术.
    4. 面向应用,是数据仓库区别于传统的操作型数据库的关键特征。
    5. 一个数据仓库是通过集成多个异种数据源来构造的。
    6. 由于在数据仓库中只进行数据的初始装载和查询操作,所以,数据一旦进入数据仓库,就是稳定的,基本上不会被更新。
    7. 数据立方体必须是3维的。
    8. 在数据仓库中,概念分层定义了一个映射序列,可以将低层概念映射到更一般的高层概念。
    9. 方体的格,是在单个维上定义的映射序列,可以将低层概念映射到更一般的高层概念。
    10. 雪花模型通过在每个维表基础上,增加附加维表的方式来降低星型模型中可能会存在的冗余现象。
    11. 在事实星座模型中,有且仅能有一个事实表。
    12. 在数据仓库的设计过程中,要坚持“数据驱动和需求驱动双驱动,且以需求驱动为中心”的原则。

    二.单选题

    1. 在以下人员中,被誉为“数据仓库之父”的是:( ) (知识点:数据仓库的基本概念; 易)
      A. H.Inmon B. E.F.Codd C. Simon D. Pawlak

    2. 以下关于数据仓库的说法正确的是:( ) (知识点:数据仓库的基本概念; 难)
      A. 数据仓库中的数据只能来源于组织内部的操作型数据库
      B. 数据仓库是为应对事务型数据处理的需要而产生的
      C. 数据仓库是面向主题的,这是其区别于操作型数据库的关键特征
      D. 数据仓库必须是面向企业全局的,不能以部门为单位建立数据仓库

    3. 以下哪项不是“信息包图”中的元素? ( ) (知识点:数据仓库的三级模型; 难)
      A. 维度 B. 维的概念层次及相应层次上的数量
      C. 度量 D. 方体的格

    4. 以下哪项不属于数据仓库的逻辑模型? ( ) (知识点:数据仓库的三级模型; 中)
      A. 星型模型 B. 雪花模型
      C. 度量模型 D. 事实星座模型

    5. 在数据仓库的设计过程中,下列描述正确的是( ) (知识点:数据仓库的设计; 难)
      A. 数据仓库是“数据驱动+需求驱动”双驱动,但必须以需求驱动为中心
      B. 数据仓库主要面向分析型处理环境,在设计时很难完全明确用户的需求
      C. 数据仓库与数据库一样,其数据主要来自于企业的业务流程
      D. 数据仓库的设计目标是要提高事务处理的性能

    6. 下面哪项关于星型模型的说法是不正确的:( ) (知识点:数据仓库的三级模型; 难)
      A. 有一个事实表,且事实表中的属性由指向各个维表的外键和一些相应的度量数据组成
      B. 有一组小的附属表,称为维表,且每维一个维表
      C. 事实表的每个字段都是事实度量字段
      D. 由于每维只能建立一个维表,使得维表中有些信息会产生冗余

    7. 在数据仓库的概念模型中,通过( )来实现数据从客观世界到主观认识的映射。 (知识点:数据仓库的三级模型; 易)
      A. E-R模型 B. 信息包图
      C. 星型模型 D. 雪花模型

    四.填空题

    1. 数据仓库的关键特征有:面向( )、( )、稳定的和( )的。 (知识点:数据仓库的基本概念; 易)
    2. 数据仓库的三级模型包括:概念模型、( )模型和物理模型。 (知识点:数据仓库的三级模型; 易)
    3. 设计数据仓库时,常见的逻辑模型包括:( )模型、雪花模型和( )模型;其中,针对多个数据仓库应用的是( )模型。 (知识点:数据仓库的三级模型; 中)
    4. 随着计算机应用的深入,其所执行的数据处理类型也相应的分成:事务型数据处理和 ( )。其中,数据仓库是为迎合( )的需要而产生的一种新的数据存储机制。 (知识点:数据仓库的基本概念; 中)
    5. 数据仓库与数据库的设计方法不同,数据库的设计遵循SDLC方法,而数据仓库的设计遵循 ( )方法。 (知识点:数据仓库的设计; 中)

    第三章 联机分析处理(OLAP)

    一.判断题

    1. OLTP是一种多维数据分析技术。
    2. OLTP是关系型数据库的主要应用。
    3. 相对于OLAP技术的验证性分析过程,数据挖掘技术表现出更高的自动学习能力。
    4. OLAP的上钻操作是在某一维上从汇总数据深入到细节数据进行观察。

    二.单选题

    1. OLAP技术的核心是:( ) (知识点:OLAP的基本概念;中)
      A. 在线性 B对用户的快速响应
      C. 互操作性 D. 多维分析

    2. 关于OLAP和OLTP的区别描述,不正确的是:( ) (知识点:OLAP的基本概念;难)
      A. OLAP主要面向企业的高层管理人员,用以辅助决策;而OLTP主要面向企业的基层管理人员,用以辅助日常业务
      B. 与OLAP技术不同,OLTP需要处理大量相对简单的任务
      C. OLAP的特点在于一次性处理的事务量大,但事务内容比较简单且重复率高 D. OLAP是以数据仓库为基础的,但其最终数据来源与OLTP一样,大都来自底层的数据库系统

    三、填空题

    1. 常见的OLAP的分析方法包括:( )、切块、钻取和( )。(知识点:OLAP的基本概念;中)
    2. OLAP的数据组织方式有如下几种:ROLAP、( )和 ( )。(知识点:OLAP的基本概念;中)

    四、多选题

    1. 以下哪些属于OLAP的常见操作?( ) (知识点:OLAP的基本概念;易)
      A. 切片 B 切块 C 钻取 D 旋转

    第四章 数据挖掘的基本概念

    一. 单选题

    1. 某超市研究销售记录数据后发现,买面包的人很大概率也会购买牛奶,这种属于数据挖掘的哪类问题?(  ) (知识点:数据挖掘的基本概念; 中)
      A. 关联规则发现 B. 聚类
      C. 分类 D. 孤立点检测
    2. 对没有类标签属性的数据集,使用哪种技术可以使得同类数据与其他类数据相分离:( ) (知识点:数据挖掘的基本概念; 难)
      A. 关联规则发现 B. 聚类
      C. 分类 D. 孤立点检测
    3. 假设现在的数据挖掘任务是识别垃圾邮件的典型特征,通常所使用的数据挖掘功能是: ( ) (知识点:数据挖掘的基本概念; 中)
      A. 关联分析 B. 分类预测
      C. 概念描述 D. 聚类分析
      二. 判断题
    4. 在聚类分析中,类(簇)内的相似性越大,类(簇)间的差别越大,聚类的效果就越好。
    5. “啤酒与尿布”的案例是聚类分析的典型案例。

    第五章 数据预处理

    一. 单选题

    1. 对于区间 [240,460],按照自然划分的3-4-5规则,可以划分为: ( ) (知识点:数据预处理; 中)
      A. [200,300), [300,400), [400,500]
      B. [300,350), [350,400), [400,450), [450,500]
      C. [200,250), [250,300), [300,350), [350,400]
      D. [200,300), [300,400]

    2. 已知一组价格数据:15,21,24,21,25,4,8,34,28,按照等宽(宽度为10)分箱方法对其进行平滑,可以划分为几个箱子? ( ) (知识点:数据预处理; 易)
      A. 3 B. 4 C. 5 D. 6

    3. 假定属性income的平均值与标准差分别为$54000和$16000,使用z-score规范化,则属性值$73600将变换为:( ) (知识点:数据预处理; 中)
      A. 0.736 B. 0.716 C. 1.225 D. 1

    4. 在数据归约的如下描述中,错误的是:( ) (知识点:数据预处理; 难)
      A. 数据归约技术可以用来得到数据集的归约表示,它小得多,但仍接近保持原数据的完整性
      B. 对归约后的数据集进行挖掘可提高挖掘的效率,并产生相同(或几乎相同)的结果
      C. 用于数据归约的时间可以超过或“抵消”在归约后的数据集上挖掘节省的时间
      D. 维归约可以检测并删除不相关、弱相关或冗余的属性维。

    5. 将原始数据进行集成、变换、维度归约、数值归约是在以下哪个步骤进行的?( ) (知识点:数据预处理; 中)
      A. 频繁模式挖掘 B. 分类和预测
      C. 数据预处理 D. 数据流挖掘

    二. 多选题

    1. 在现实世界的数据中,元组在某些属性上缺少值是常有的,处理该问题的常用方法包括: ( ) (知识点:数据预处理; 中)
      A. 忽略元组 B. 使用一个全局变量填充空缺值
      C. 使用属性的平均值填充空缺值 D. 使用最可能的值进行填充
      E.使用与给定元组属同一类的所有样本的平均值
    2. 以下方法中,哪些属于数据规范化的方法?( ) (知识点:数据预处理; 难)
      A. 最大最小规范化 B. 小数定标规范化
      C. 3-4-5规则 D. Z-score规范化
    3. 在维归约方法中,常见的用于属性子集选择的启发式方法有:( ) (知识点:数据预处理; 难)
      A. 逐步向前选择 B. 逐步向后删除
      C. 向前选择和向后删除相结合 D. 判定树归纳

    三. 填空题

    1. 商务智能的三大支撑技术有:( )、( )和 数据挖掘。 (知识点:商务智能的基本概念;易)
    2. 常见的数据规范化的方法有:( )、零均值规范化,和( )。 (知识点:数据预处理;中)

    第六章 概念描述:特征化和比较

    一. 单选题

    1. 以下操作中不属于数据概化操作是:( ) (知识点:概念描述;中)
      A. 将n维数据立方体聚集为n-1维数据立方体
      B. 利用OLAP进行数据的上卷操作
      C. 考察任务相关数据中每个属性的不同取值的个数,对数据进行概化操作
      D. 利用最大最小规范化方法,将数据按比例缩放到一个小的特定区间

    2. 什么是AOI:( ) (知识点:概念描述;易)
      A. 面向属性归纳 B. 属性相关分析
      C. 数据库中的知识发现 D. 属性子集选择

    3. 以下关于面向属性归纳的描述中,正确的是:( ) (知识点:概念描述;难)
      A. 属性概化阈值是用来控制数据集中属性个数的参数
      B. 在面向属性归纳过程中,绝对不能生成相同的行
      C. 概化关系阈值是用来控制广义元组个数的参数
      D. 面向属性归纳是根据属性与决策任务间的相关性来选择属性的方法

    4. 什么是DW:( ) (知识点:数据仓库的基本概念;易)
      A. 领域知识发现 B. 机器学习
      C.数据挖掘 D. 数据仓库

    5. 对某商场2016年的销售数据执行面向属性归纳操作后,得到如下数据表。设目标集合为“电冰箱”,则在数据表基础上可得到如下定量描述规则:
      ∀X,item(X)= “电冰箱” \Rightarrow(location(X)=“东北”)[t1:( )]∨(location(X)=“华北”)[t2:( )]
      其中,t1和t2分别为定量描述规则的t权,则, t1、 t2的值为:( )。 (知识点:概念描述;难)
      在这里插入图片描述
      A. 0.43 0.57; B. 0.5 0.5;
      C. 0.33 0.67; D. 0.4 0.6;

    二. 多选题

    1. 常见的度量数据集中趋势的指标有:( ) (知识点:概念描述;中)
      A. 均值 B. 中位数
      C. 众数 D. 四分位数
      E. 方差

    三. 填空题

    1. 对某商场2002年的销售数据执行面向属性归纳操作后,得到如下数据表。
      在这里插入图片描述
      设目标集合为“电视”,则在数据表基础上可得到如下定量描述规则:
      ∀X,item(X)= “TV” \Rightarrow(location(X)=“Asia”)[t1:( )]∨(location(X)=“Europe”)[t2:( )]
      其中,t1和t2分别为定量描述规则的t权,则:t1=( ), t2=( )。
      (知识点:概念描述;中)

    习题答案

    【第二章】
    1.(对; 知识点:数据仓库的基本概念; 易)
    2.(对; 知识点:数据仓库的基本概念;易)
    3.(对; 知识点:数据仓库的基本概念;易)
    4.(错; 知识点:数据仓库的基本概念; 中)
    5.(对; 知识点:数据仓库的基本概念; 中)
    6.(对; 知识点:数据仓库的基本概念; 难)
    7.(错; 知识点:数据立方体; 易)
    8.(对; 知识点:数据立方体;中)
    9.(错; 知识点:数据立方体; 难)
    10.(对; 知识点:数据仓库的三级模型; 中)
    11.(错; 知识点:数据仓库的三级模型; 难)
    12.(错; 知识点:数据仓库的基本概念; 中)
    A C D C B C B
    1.主题、集成的、反映历史变化(知识点:数据仓库的基本概念; 易)
    2.逻辑模型(知识点:数据仓库的三级模型; 易)
    3.星型、事实星座、事实星座(知识点:数据仓库的三级模型; 中)
    4.分析型数据处理、分析型数据处理(知识点:数据仓库的基本概念; 中)
    5. CLDS(知识点:数据仓库的设计; 中)

    【第三章】
    1.(错;知识点:OLAP的基本概念;易)
    2.(对;知识点:OLAP的基本概念;易)
    3.(对;知识点:OLAP的基本概念;难)
    4.(错;知识点:OLAP的基本概念;中)
    D C
    1.常见的OLAP的分析方法包括:( 切片)、切块、钻取和( 旋转 )。(知识点:OLAP的基本概念;中)
    2.OLAP的数据组织方式有如下几种:ROLAP、 ( MOLAP )和 ( HOLAP )。 (知识点:OLAP的基本概念;中)
    ABCD

    【第四章】
    A B B
    1.(对; 知识点:数据挖掘的基本概念; 中)
    2.(错; 知识点:数据挖掘的基本概念; 易)

    【第五章】
    A A C C C
    ABCDE ABD ABCD
    1.商务智能的三大支撑技术有:( 数据仓库 )、( OLAP)和 数据挖掘。 (知识点:商务智能的基本概念;易)
    2.常见的数据规范化的方法有:( 最小最大规范化 )、零均值规范化,和( 小数定标规范化 )。 (知识点:数据预处理;中)

    【第六章】
    D A C D C ABC
    0.4 0.6

    展开全文
  • 数据仓库与数据挖掘概述 1. 数据仓库与传统数据库 传统型数据库 定义:面向业务,对事物进行处理 类似关系型数据库,对数据进行增删改查 数据仓库 定义:面向主题,集成,稳定,随时间变化的数据集,支持...

    数据仓库与数据挖掘概述

    1. 数据仓库与传统数据库

    1. 传统型数据库

      • 定义:面向业务,对事物进行处理
      • 类似关系型数据库,对数据进行增删改查
    2. 数据仓库

      • 定义:面向主题,集成,稳定,随时间变化的数据集,支持管理决策过程

      • 数据仓库的数据来源:

        • DB,数据文件,其他数据运用数据ETL工具进行数据获取

          ETL,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程

          讲解

    3. 两者关系

      1. 构建目的
        • 传统—> 处理日常事务
        • 数据仓库—> 为帮助管理者做决策

      传统型数据库是创建数据仓库的一个数据源

    在这里插入图片描述

    2. 数据挖掘与机器学习

    1. 什么是数据挖掘
      • 定义:试图从海量数据中找出有用的知识
      • 相识的知识发现:指发现的规则
    2. 什么是机器学习
      • 定义:利用经验改善计算机系统自身的性能

    3. 数据挖掘简要分析

    3.1 数据挖掘的主要任务

    3.1.1 预测型

    也可以说是有监督学习:分类回归,离群点检测等

    数据已经给出样本类别,答案等。

    1. 分类分析:用某种分类算法对表中数据进行分析,挖掘分类规则
    2. 规则应用:利用数据分析预测新数据的类别,对其录入规则。
    3.1.2 描述型

    ​ 也为无监督学习: 聚类, 关联分析,序列模式等

    不知道类别和答案等

    ​ 用聚类算法,根据给定的某种相似度标准,将没有类别标记的数据库记录集划分成若干个不相交子集(簇),使簇内的记录之间相似度很高,不同簇相似度低。

    类别 取值范围 理论上取值个数
    离散型 字母或自然数 有限;可能无限
    连续型 一个实数区间内 不可数,无限

    在这里插入图片描述

    3.2 不同任务所需算法简述

    • 分类:模型输出为离散型, 朴树贝斯,决策树,逻辑回归算法,KNN
    • 回归: 模型输出为连续型
    • 聚类: k-mean算法,层次聚类。
    • 关联分析: Apriori等
    • 序列模型: 类Apriori等
      分析

    4. 数据

    定义:一切可被记录的

    • 用来描述对象的属性。

      • id:标识码主键
      • 属性名:特征
      • 取值:特征的值
    • 数据预处理

      • 数据清洗:洗出主要数据
      • 数据集成:对多个数据源进行同一
      • 数据变换
      • 数据归约
      • 数据离散化
    展开全文
  • 数据仓库与数据挖掘论文

    千次阅读 2019-06-26 09:57:32
    数据仓库与数据挖掘》课程论文 题目: 关联分析Apriori算法的研究和案例实现 专业: 计算机科学技术 学号: 1606915078 姓名: 李勇智 2018-2019学年第二学期 目录 研究现状 1 1.1 算法简介 1 1.2 研究现状 1 ...

    《数据仓库与数据挖掘》课程论文

    题目: 关联分析Apriori算法的研究和案例实现

    专业: 计算机科学与技术
    学号: XXXXXXXXX
    姓名: XXX

    2018-2019学年第二学期
    目录

    1. 研究现状 1
      1.1 算法简介 1
      1.2 研究现状 1
    2. 算法思想 2
      2.1 相关概念 2
      2.2 基本思想 3
    3. 算法步骤 4
    4. 算法应用 6
      4.1 所应用的数据集介绍 6
      4.2 核心代码 7
      4.3 实现页面截图 10
      5.总结 12

    1.研究现状
    1.1算法简介
    Apriori算法是经典的挖掘频繁项集和关联规则的数据挖掘算法。A priori在拉丁语中指"来自以前"。当定义问题时,通常会使用先验知识或者假设,这被称作"一个先验"(a priori)。Apriori算法的名字正是基于这样的事实:算法使用频繁项集性质的先验性质,即频繁项集的所有非空子集也一定是频繁的。Apriori算法使用一种称为逐层搜索的迭代方法,其中k项集用于探索(k+1)项集。首先,通过扫描数据库,累计每个项的计数,并收集满足最小支持度的项,找出频繁1项集的集合。该集合记为L1。然后,使用L1找出频繁2项集的集合L2,使用L2找出L3,如此下去,直到不能再找到频繁k项集。每找出一个Lk需要一次数据库的完整扫描。Apriori算法使用频繁项集的先验性质来压缩搜索空间。
    1.2研究现状
    Apriori是Agrawal等于1993年设计的一个基本算法,首先提出了挖掘顾客交易数据库中项集间的关联规则问题,其核心方法是基于频繁项集理论的递推方法。算法提出后以后,很多研究人员对关联规则挖掘算法进行了大量研究,特别是对关联规则挖掘算法进行了大量的研究和优化。如Savasere等人设计了一个基于划分的算法,Mannila提出的基于采样的方法等。
    近几年,随着研究者对于关联规则挖掘的深入研究,关联规则挖掘研究有了许多扩展,包括:事务间关联规则挖掘、空间关联规则挖掘、负关联规则挖掘、序列模式挖掘及正关联规则挖掘;另外,对度量的研究也有所突破。自从Chen,Hart,Brin和Motwani等人提出了强关联规则的兴趣度问题以后,强关联规则兴趣度问题的研究得到了很高的重视。后来评估关联规则兴趣度相应的一些优化方法的出现,促进了目前度量方法的进一步改进和完善。同时,Motwani和Silverstein把这方面的研究和讨论推广到相关的算法中。除这个方面外,其他方面的研究也得到了发展,如多层关联规则挖掘、区间数据关联规则挖掘、删除冗余规则、度量的改进研究、关联规则的有效增量更新和并行分布规则挖掘等等,这些关联规则挖掘算法在实际数据挖掘系统中的到了很好的应用。
    2.算法思想
    2.1相关概念
    (1)项(item): 项指的是具体的一件东西,比如在购物篮的例子中,你的购物篮里面的大米,被子,红酒等等商品都是项;
    (2)项集(itemset): 顾名思义,项的集合,由一个或多个项组成的一个整体,我们把由kk个项组成的项集叫kk项集;
    (3)事务(transaction):一个事务,可以看做是发生的一次事件,比如一个人一次的购物清单,用符号TT表示,一般来说,TT包含一个它本身的身份——TIDTID以及事务中的一个项集。当然,如果我们收集很多这样的清单,构成一个数据库,这个数据库就能作为我们挖掘计算的依据了。这个库,用符号DD表示。
    (4)关联规则:表示实体之间相关关系,用蕴含式A⇒BA⇒B表示A和B之间相关关系(A和B可以是两个项,也可以是两个项集),关联规则包含支持度(support)和置信度(confidence)两个层面指标;
    (5)支持度(support):说的是所有事务中,A和B同时出现的次数与总的事务数的比例。换个说法,现实数据中,支持A和B这种关联的比例。用以下公式计算:
    support(A⇒B)=P(A∪B)
    其中,P(A∪B)的意思是事务中同时包含A和B的比例;
    (6)置信度(confidence):A⇒BA⇒B的置信度说的是包含A的事务中,同时也包含B的事务所占的比例。用以下公式计算:
    confidence(A⇒B)=P(B|A)
    比如说,总共100个事务,有50个包含A,而这50个事务当中,又有20个同时也包含B,那么,confidence(A⇒B)=40%
    了解了支持度(support)和置信度(confidence)两个概念,那么不妨可以再深入一步,拓展一个概念:绝对支持度;
    支持度计数(绝对支持度):绝对支持度又叫支持度计数,频度或计数。上面我们定义的支持度其实也可以叫“相对支持度”,而绝对支持度则说的是一个实体出现的次数,比如:support(A) = A在全体事务数据库DD中出现的次数。这个概念很重要,因为依靠支持度计数我们就能通过support(A)support(A)和support(A∪B)support(A∪B)来计算置信度:
    confidence(A⇒B)=P(B|A)=support(A∪B)support(A)
    (7)强规则:我们将实体之间的关联规则定义为强规则,如果实体之间的相对支持度(support)和置信度(confidence)满足我们预定义的最小支持度阈值(min_sup)和最小置信度阈值(min_conf)。换句话说,只要我们在上面的概念5中定义的两个指标都满足,那么,实体之间就是极有强(关联)规则的;
    (8)频繁项集:指的是频繁在事务中出现的项集,所谓“频繁”的标准就是这个项集出现的次数满足最小支持度计数(阈值)。
    2.2 基本思想
    该算法的基本思想是:首先找出所有的频集,这些项集出现的频繁性至少和预定义的最小支持度一样。然后由频集产生强关联规则,这些规则必须满足最小支持度和最小可信度。然后使用第1步找到的频集产生期望的规则,产生只包含集合的项的所有规则,其中每一条规则的右部只有一项,这里采用的是中规则的定义。一旦这些规则被生成,那么只有那些大于用户给定的最小可信度的规则才被留下来。为了生成所有频集,使用了递归的方法。
    (1) L1 = find_frequent_1-itemsets(D);
    (2) for (k=2;Lk-1 ≠Φ ;k++) {
    (3) Ck = apriori_gen(Lk-1 ,min_sup);
    (4) for each transaction t ∈ D {//scan D for counts
    (5) Ct = subset(Ck,t);//get the subsets of t that are candidates
    (6) for each candidate c ∈ Ct
    (7) c.count++;
    (8) }
    (9) Lk ={c ∈ Ck|c.count≥min_sup}
    (10) }
    (11) return L= ∪ k Lk;
    可能产生大量的候选集,以及可能需要重复扫描数据库,是Apriori算法的两大缺点。    
    3.算法步骤
    下面我们对Aprior算法流程做一个总结。
      输入:数据集合D,支持度阈值α
      输出:最大的频繁k项集
      (1)扫描整个数据集,得到所有出现过的数据,作为候选频繁1项集。k=1,频繁0项集为空集。
      (2)挖掘频繁k项集
        (a) 扫描数据计算候选频繁k项集的支持度
        (b) 去除候选频繁k项集中支持度低于阈值的数据集,得到频繁k项集。如果得到的频繁k项集为空,则直接返回频繁k-1项集的集合作为算法结果,算法结束。如果得到的频繁k项集只有一项,则直接返回频繁k项集的集合作为算法结果,算法结束。
        © 基于频繁k项集,连接生成候选频繁k+1项集。
      (3) 令k=k+1,转入步骤2。
    从算法的步骤可以看出,Aprior算法每轮迭代都要扫描数据集,因此在数据集很大,数据种类很多的时候,算法效率很低。
    我们下面这个简单的例子看看:

    图3.1.1
      我们的数据集D有4条记录,分别是134,235,1235和25。现在我们用Apriori算法来寻找频繁k项集,最小支持度设置为50%。首先我们生成候选频繁1项集,包括我们所有的5个数据并计算5个数据的支持度,计算完毕后我们进行剪枝,数据4由于支持度只有25%被剪掉。我们最终的频繁1项集为1235,现在我们链接生成候选频繁2项集,包括12,13,15,23,25,35共6组。此时我们的第一轮迭代结束。
      进入第二轮迭代,我们扫描数据集计算候选频繁2项集的支持度,接着进行剪枝,由于12和15的支持度只有25%而被筛除,得到真正的频繁2项集,包括13,23,25,35。现在我们链接生成候选频繁3项集,123, 125,135和235共4组,这部分图中没有画出。通过计算候选频繁3项集的支持度,我们发现123,125和135的支持度均为25%,因此接着被剪枝,最终得到的真正频繁3项集为235一组。由于此时我们无法再进行数据连接,进而得到候选频繁4项集,最终的结果即为频繁3三项集235。

    4.算法应用
    4.1所应用的数据集介绍
    以超市交易为数据集,所有商品的项集为I = {bread, beer, cake, cream, milk, tea}
    某条交易如Ti = {bread, beer, milk},可以简化为Ti = {a, b, d}
    data.txt数据集样本如下
    a, d, e,f
    a, d, e
    c, e
    e, f

    数据集位于本地的D:\data目录下,数据集一共有270行,前24行的数据内容如图4.1所示

    图4.1.1

    4.2核心代码

    # -*- coding: utf-8 -*-
    """
    Created on Tue Jun 25 21:39:58 2019
    
    @author: lyz
    """
    
    
    def load_data_set():
        data_set = []
        fd = open("d:\data\data.txt", "r")
        for line in fd.readlines():
            line = line.strip('\n')
            data_set.append(line)
        return data_set
    
    '''
    直接从数据集构造1-候选集
    '''
    def create_C1(data_set):
        C1 = set()
        for t in data_set:
            for item in t:
                item_set = frozenset([item])
                C1.add(item_set)
        return C1
    
    '''
    判断是否满足
    '''
    def is_apriori(Ck_item, Lksub1):
        for item in Ck_item:
            sub_Ck = Ck_item - frozenset([item])
            if sub_Ck not in Lksub1:
                return False
        return True
    
    '''
    生成各个候选集Ck
    '''
    def create_Ck(Lksub1, k):
        Ck = set()
        len_Lksub1 = len(Lksub1)
        list_Lksub1 = list(Lksub1)
        for i in range(len_Lksub1):
            for j in range(1, len_Lksub1):
                l1 = list(list_Lksub1[i])
                l2 = list(list_Lksub1[j])
                l1.sort()
                l2.sort()
                if l1[0:k-2] == l2[0:k-2]:
                    Ck_item = list_Lksub1[i] | list_Lksub1[j]
                    if is_apriori(Ck_item, Lksub1):
                        Ck.add(Ck_item)
        return Ck
    
    '''
    通过候选集Ck生成频繁集Lk
    '''
    def generate_Lk_by_Ck(data_set, Ck, min_support, support_data):
        Lk = set()
        item_count = {}
        for t in data_set:
            for item in Ck:
                if item.issubset(t):
                    if item not in item_count:
                        item_count[item] = 1
                    else:
                        item_count[item] += 1
        t_num = float(len(data_set))
        for item in item_count:
            if (item_count[item] / t_num) >= min_support:
                Lk.add(item)
                support_data[item] = item_count[item] / t_num
        return Lk
    
    '''
    生成各阶频繁集,最小支持度为0.2
    '''
    def generate_L(data_set, k, min_support):
        support_data = {}
        C1 = create_C1(data_set)
        L1 = generate_Lk_by_Ck(data_set, C1, min_support, support_data)
        Lksub1 = L1.copy()
        L = []
        L.append(Lksub1)
        for i in range(2, k+1):
            Ci = create_Ck(Lksub1, i)
            Li = generate_Lk_by_Ck(data_set, Ci, min_support, support_data)
            Lksub1 = Li.copy()
            L.append(Lksub1)
        return L, support_data
    
    '''
    生成从频繁集关联规则分析
    '''
    def generate_big_rules(L, support_data, min_conf):
        big_rule_list = []
        sub_set_list = []
        for i in range(0, len(L)):
            for freq_set in L[i]:
                for sub_set in sub_set_list:
                    if sub_set.issubset(freq_set):
                        conf = support_data[freq_set] / support_data[freq_set - sub_set]
                        big_rule = (freq_set - sub_set, sub_set, conf)
                        if conf >= min_conf and big_rule not in big_rule_list:
                            big_rule_list.append(big_rule)
                sub_set_list.append(freq_set)
        return big_rule_list
    
    if __name__ == "__main__":
        data_set = load_data_set()
        L, support_data = generate_L(data_set, k=3, min_support=0.2)
        big_rules_list = generate_big_rules(L, support_data, min_conf=0.7)
        for Lk in L:
            print ("=" * 50)
            print ("frequent " + str(len(list(Lk)[0])) + "-itemsets\t\tsupport")
            print ("=" * 50)
            for freq_set in Lk:
                print (freq_set, support_data[freq_set])
        print()
        print ("Big Rules")
        for item in big_rules_list:
            print (item[0], "=>", item[1], "conf: ", item[2])
    
    

    4.3实现页面截图

    图 4.3.1

    图4.3.2

    图4.3.3

    图4.3.4
    5.总结
    Aprior算法是一个非常经典的频繁项集的挖掘算法,很多算法都是基于Aprior算法而产生的,包括FP-Tree,GSP, CBA等。这些算法利用了Aprior算法的思想,但是对算法做了改进,数据挖掘效率更好一些,因此现在一般很少直接用Aprior算法来挖掘数据了,但是理解Aprior算法是理解其它Aprior类算法的前提,同时算法本身也不复杂,因此值得好好研究一番。
    这次的收获主要有以下几点:同一行数据,最小支持度越小,那么产生的频繁项集维数越高,程序运行的时间越长;频繁项集的子集一定是频繁的,子集频繁父亲一定频繁;Apriori也存在缺点:第一,在每一步产生候选项目集时循环产生的组合过多,没有排除不应该参与组合的元素;第二,每次计算项集的支持度时,开销会随着数据的增多而成几何级增长。

    展开全文
  • 来公司的第一天收到要熟悉数据仓库与数据挖掘的任务,任务内容如下:  1.阅读有关数据仓库数据挖掘、OLAP在线联机分析的相关文档,掌握和了解相关基础知识和概念  2.了解常见的数据仓库及OLAP解决数据决策...
  • /* 大学生一枚,只为分享知识别无他求,有兴趣一起交流,相互激励,共同进步 关注个人微信公众号:飞享 ...3.元数据是数据仓库运行和维护的中心内容,数据仓库系统对数据的存取和更新都需要元数据信息。 4.根据...
  • 数据仓库与数据挖掘复习题目

    千次阅读 2019-05-22 09:07:22
    期末考试题型 ...1. 某超市研究销售纪录数据后发现,买啤酒的人很大概率也会购买尿布,这种属于数据挖掘的哪类问题?(A) A. 关联规则发现 B. 聚类 C. 分类 D. 自然语言处理 2. 以下两种描述分别对应...
  • 1、数据仓库有哪些主要的特征 (1)、面向主题的 (2)、集成的 (3)、稳定性不容易丢失(非易失) (4)、按时间变化而变化(即时变) 2、简述数据仓库的传统数据库的主要区别 区别 传统数据库 数据仓库 ...
  • 数据仓库与数据挖掘的OLAP技术 1.数据仓库 Ø 概念:数据仓库是一个面向主题的、集成的、随时间而变化的、不容易丢失的数据集合,支持管理部门的决策过程. Ø 关键特征: v 面向主题:围绕一些主题;关注决策...
  • 数据仓库与数据挖掘》期末复习总结(1)-(第一章 引论)第一章 引论1、OLAP2、大数据的5V特征 第一章 引论 1、OLAP 联机分析处理(对数据仓库操作:下钻、上卷) 2、大数据的5V特征 大量化、多样化、快速化、...
  • 数据仓库与数据挖掘(DATA WAREHOUSING AND DATA MINING)第一章数据仓库与数据挖掘概述本章要点– 数据仓库的发展– 数据仓库的基本概念– 数据挖掘的发展– 数据挖掘的基本概念– 数据仓库与数据挖掘的集成3数据...
  • 山东大学2019-2020数据仓库与数据挖掘期末考试 一、 1.数据分析的步骤,每个步骤都干啥 2.数据仓库的特点,解释 3.大数据4v理论 4.数据流概念,难点是什么,解决方案的特点 5.检测离群点的四种方法 二、 1、给出三...
  • 下载地址:网盘下载内容简介编辑本书介绍了以数据仓库数据挖掘和联机分析为核心技术的商务智能的基本概念、基本原理、开发方法、开发工具、应用领域和管理方法等内容。全书共分为10章,包括商务智能基本概念、数据...
  • 近日,我中心为福州某科技公司进行 “数据仓库与数据挖掘”内训。 本次课程形式为面授加远程授课,大家利用周末休息时间来为自己充电。现场上课的学员在老师不断穿插的各种案例中理解技术要点;远程听课的小伙伴...
  • 数据仓库概述 从传统数据库到数据仓库 计算机数据处理有两种主要方式 事务型处理 分析型处理 传统数据库事务处理 传统数据库是长期存储在计算机内的、有组织的、可共享的数据集合 有严格的数学理论支持,并在...
  • 数据仓库与数据挖掘技术在水利信息化中的应用[摘 要] 作为信息化建设的重要工具, 数据仓库与数据挖掘技术在处理海量数据方面有着独有的优势。因此, 在拥有海量数据的水利行业中也有着广泛的应用。本文对数据仓库与...
  •  DW(Data Warehouse):数据仓库,详见正文Q1部分。    OLTP(On-Line Transaction Processing):联机事务处理 也称为面向交易的处理系统,其基本特征是顾客的原始数据可以立即传送到计算中
  • 数据仓库与数据挖掘 上机实训

    千次阅读 2019-04-17 12:01:55
    1、掌握数据挖掘中数据预处理的方法; 2、了解数据转换的过程和方法; 3、了解描述性数据汇总的计算机实现方法。 1、理解分类的一般过程和基本原理; 2、巩固分类算法的算法思想,能够进行分类操作; 3、学会分类...
  • 1 1.1 数据分析的定义 数据分析是指用适当的分析方法对收集来的大量数据进行分析,提取...明确目的和思路(先决条件、提供项目方向)、数据收集(数据库建立)、数据处理(清洗、转化、提取、计算)、数据分析(数据...
  • 我们从各省市统计局公布的数据中搜集了包括人均GDP(元)、人口密度(人/平方公里)、PM2.5年平均浓度(微克/立方米)、年旅游收入(亿元)的数据并且做了统计和可视化。 我们认为这些数据可以一定程度上反映出一个...
  • HAWQ具有大规模并行处理、完善的SQL兼容性、支持存储过程和事务、出色的性能表现等特性,还可与开源数据挖掘库MADlib轻松整合,从而使用SQL就能进行数据挖掘与机器学习。本书内容分技术解析、实战演练与数据挖掘三个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 38,759
精华内容 15,503
关键字:

数据仓库与数据挖掘