第8章 频繁模式挖掘
一种基于频繁模式有向无环图的数据流频繁模式挖掘算法
F .rwt Pgo h算法 …采用分 治策略 ,扫 描两次 事
务数据 库 ,不需要产 生大量 候选集 ,只插 入满足用 户定义 的最小支 持度 阈值 的项 目。 当有大 量新事 务 到达 时, 能导致 数据库 中频繁项 集发 生变 化 , P 可 F— go h 算法 需要 重新扫 描数 据库 以判 断 已有 的频 rwt 繁项集 是否有效 。F UP算法 口 先计 算新插 入事务 中的频繁项 集 ,当得 到 的频繁 项集 原 数据库 与
法 H, 将这 些数据 由基于列 的形式转 换为基于行 的 形式 ,并采用 自上而下 的方法挖 掘频繁项集 。 是 但
以பைடு நூலகம் 各种 方 法 都不 能在 一 次扫 描下 完成 频繁 模式 挖掘 ,需要频繁 建立相 同的 F — e Pt e结点 ,无法 区 r 分新 旧事务 ,当事务数 和项数 剧增时 ,算法效率下
双 向重合 的, 通过 与原数据 库 中结果 比较来决 定是 否更新 头表和树 的结构 ,提 高了树 的更 新效率 。 针 对 事 务数 很 少 但 每 个 事 务 中 的项 数 很 多 的数 据 , H n i i 人提 出了 T — ls a a 等 J we D C oe和 T D C oe T — ls 算
降 。 了实现一 次扫描挖 掘频繁项集 ,F —r y算 为 Par a
数据仓库与数据挖掘复习大全
数据仓库与数据挖掘复习大全湖北文理学院湖北襄阳王茂林1.某超市研究销售纪录数据后发现,买啤酒的人很大概率也会购买尿布,这种属于数据挖掘的哪类问题?(A)A. 关联规则发现B. 聚类C. 分类D. 自然语言处理2. 以下两种描述分别对应哪两种对分类算法的评价标准?(A)(a)警察抓小偷,描述警察抓的人中有多少个是小偷的标准。
(b)描述有多少比例的小偷给警察抓了的标准。
A. Precision, RecallB. Recall, PrecisionC. Precision, ROCD. Recall, ROC分类是一种重要的数据挖掘算法。
分类的目的是构造一个分类函数或分类模型(即分类器),通过分类器将数据对象映射到某一个给定的类别中。
分类器的主要评价指标有准确率(Precision)、召回率(Recall)、F b-score、ROC、AOC等。
准确率(Precision) 和召回率(Recall)是信息检索领域两个最基本的指标。
准确率也称为查准率,召回率也称为查全率。
它们的定义如下:Precision=系统检索到的相关文件数量/系统检索到的文件总数量Recall=系统检索到的相关文件数量/系统所有相关文件数量F b-score是准确率和召回率的调和平均:F b=[(1+b2)*P*R]/(b2*P+R),比较常用的是F1。
在信息检索中,准确率和召回率是互相影响的,虽然两者都高是一种期望的理想情况,然而实际中常常是准确率高、召回率就低,或者召回率低、但准确率高。
所以在实际中常常需要根据具体情况做出取舍,例如对一般搜索的情况是在保证召回率的情况下提升准确率,而如果是疾病监测、反垃圾邮件等,则是在保证准确率的条件下,提升召回率。
但有时候,需要兼顾两者,那么就可以用F-score指标。
在信息检索中,准确率和召回率是互相影响的,虽然两者都高是一种期望的理想情况,然而实际中常常是准确率高、召回率就低,或者召回率低、但准确率高。
第8章 频繁模式挖掘PPT课件
21.07.2020
16
8.1.1 问题描述(续)
❖ 关联规则
➢ 关联规则是形如XY的蕴含式,其中XI,YI且 XY=,则X称为规则的条件,Y称为规则的结果 。
➢ 如果事务数据库D中有s%的事务包含XY,则称关 联规则XY的支持度为s%。
➢ 支持度是指项集X和Y在数据库D中同时出现的概率 。
21.07.2020
21.07.2020
35
1. Apriori算法描述
❖ 关联规则挖掘过程: ➢ 第一步:寻找频繁项集。根据定义,这些项集出现
的频度不小于预先定义的最小额度。---较难 找出满足定义的大项目集
➢ 第二步:由频繁项集产生关联规则。根据定义,这 些规则必须满足最小支持度和最小置信度。--较易 从大项目集(频繁项目集)生成关联规则
的频度不小于预先定义的最小额度。---较难 ➢ 第二步:由频繁项集产生关联规则。根据定义,这
些规则必须满足最小支持度和最小置信度。--较易
21.07.2020
28
8.1.2 关联规则分类
❖ 购物篮分析只是关联规则挖掘的一种形式。 ❖ 根据不同的分类标准,关联规则有多种分类方法: ➢ 根据规则中所处理的数据类型分类 ➢ 根据规则中涉及的数据维数分类 ➢ 根据规则中数据的抽象层次分类 ➢ 其它
➢ 设I={i1,i2,…,im}是项的集合,表示各种商品的 集合;D= {t1,t2,…,tn}为交易集,表示每笔交易 的集合(是全体事务的集合)。其中每一个事务T 都是项的集合,且有TI。每个事务都有一个相关 的唯一标识符和它对应,也就是事务标识符或TID。
21.07.2020
14
8.1.1 问题描述(续)
❖ 给定一个大小为m的项目集合,共有2m个子集,去掉
频繁模式挖掘中Apriori、FP-Growth和Eclat算法的实现和对比(Python实现)
频繁模式挖掘中Apriori、FP-Growth和Eclat算法的实现和对⽐(Python实现)最近上数据挖掘的课程,其中学习到了频繁模式挖掘这⼀章,这章介绍了三种算法,Apriori、FP-Growth和Eclat算法;由于对于不同的数据来说,这三种算法的表现不同,所以我们本次就对这三种算法在不同情况下的效率进⾏对⽐。
从⽽得出适合相应算法的情况。
GitHub:(⼀)算法原理其中相应的算法原理在之前的博客中都有⾮常详细的介绍,这⾥就不再赘述,这⾥给出三种算法⼤概的介绍但是这⾥给出每个算法的关键点:1.1 Apriori算法:限制候选产⽣发现频繁项集重要性质:频繁项集所有⾮空⼦集也⼀定是频繁的。
主要步骤:1. 连接2. 剪枝特点:需要多次扫描数据库,对于⼤规模数据效率很低!1.2 FP-Growth算法通过模式增长挖掘频繁模式主要步骤:1. 构建频繁模式树2. 构造条件模式基3. 挖掘频繁模式特点:两次扫描数据库,采⽤分治的策略有效降低搜索开销1.3 Eclat算法使⽤垂直格式挖掘频繁项集主要步骤:1. 将数据倒排{ item:TID_set }2. 通过求频繁k项集的交集来获取k+1项集特点:仅需要⼀次扫描数据库,TID集合很长的话需要消耗⼤量的内存和计算时间(⼆)算法实现由于各个博客给出的算法实现并不统⼀,⽽且本⼈在实现《机器学习实战》中FP-Growth算法的时候发现,在在创建FP-Tree时根据headTable中元素的⽀持度顺序的排序过程中,这个地⽅的排序⽅法写的有问题,当在模式稠密时,具有很多⽀持度相同的项集,书中的代码并没有考虑着⼀点,所以如果遇到⽀持度相同的项集那个就会出现⼀定的随机性,导致建树过程出错,最后的频繁项集结果会偏⼩,因此这⾥对改错误进⾏了纠正,在⽀持度相同时,添加了按照项集排序的规则,这样建⽴的FP-Tree才完全正确。
1.1 Apriori算法实现:1# -*- coding: utf-8 -*-2'''3@author: Infaraway4@time: 2017/4/15 12:545@Function:6'''789def init_c1(data_set_dict, min_support):10 c1 = []11 freq_dic = {}12for trans in data_set_dict:13for item in trans:14 freq_dic[item] = freq_dic.get(item, 0) + data_set_dict[trans]15# 优化初始的集合,使不满⾜最⼩⽀持度的直接排除16 c1 = [[k] for (k, v) in freq_dic.iteritems() if v >= min_support]17 c1.sort()18return map(frozenset, c1)192021def scan_data(data_set, ck, min_support, freq_items):22"""23计算Ck中的项在数据集合中的⽀持度,剪枝过程24 :param data_set:25 :param ck:26 :param min_support: 最⼩⽀持度27 :param freq_items: 存储满⾜⽀持度的频繁项集28 :return:29"""30 ss_cnt = {}31# 每次遍历全体数据集32for trans in data_set:33for item in ck:34# 对每⼀个候选项集,检查是否是 term中的⼀部分(⼦集),即候选项能否得到⽀持35if item.issubset(trans):36 ss_cnt[item] = ss_cnt.get(item, 0) + 137 ret_list = []38for key in ss_cnt:39 support = ss_cnt[key] # 每个项的⽀持度40if support >= min_support:41 ret_list.insert(0, key) # 将满⾜最⼩⽀持度的项存⼊集合42 freq_items[key] = support #43return ret_list444546def apriori_gen(lk, k):47"""48由Lk的频繁项集⽣成新的候选项集连接过程49 :param lk: 频繁项集集合50 :param k: k 表⽰集合中所含的元素个数51 :return: 候选项集集合52"""53 ret_list = []54for i in range(len(lk)):55for j in range(i+1, len(lk)):56 l1 = list(lk[i])[:k-2]57 l2 = list(lk[j])[:k-2]58 l1.sort()59 l2.sort()60if l1 == l2:61 ret_list.append(lk[i] | lk[j]) # 求并集62# retList.sort()63return ret_list646566def apriori_zc(data_set, data_set_dict, min_support=5):67"""68 Apriori算法过程69 :param data_set: 数据集70 :param min_support: 最⼩⽀持度,默认值 0.571 :return:72"""73 c1 = init_c1(data_set_dict, min_support)74 data = map(set, data_set) # 将dataSet集合化,以满⾜scanD的格式要求75 freq_items = {}76 l1 = scan_data(data, c1, min_support, freq_items) # 构建初始的频繁项集77 l = [l1]78# 最初的L1中的每个项集含有⼀个元素,新⽣成的项集应该含有2个元素,所以 k=279 k = 280while len(l[k - 2]) > 0:81 ck = apriori_gen(l[k - 2], k)82 lk = scan_data(data, ck, min_support, freq_items)83 l.append(lk)84 k += 1 # 新⽣成的项集中的元素个数应不断增加85return freq_itemsView Code1.2 FP-Growth算法实现:1)FP_Growth⽂件:在create_tree()函数中修改《机器学习实战》中的代码:############################################################################################## # 这⾥修改机器学习实战中的排序代码:ordered_items = [v[0] for v in sorted(local_data.items(), key=lambda kv: (-kv[1], kv[0]))]##############################################################################################1# -*- coding: utf-8 -*-2"""3@author: Infaraway4@time: 2017/4/15 16:075@Function:6"""7from DataMining.Unit6_FrequentPattern.FP_Growth.TreeNode import treeNode8910def create_tree(data_set, min_support=1):11"""12创建FP树13 :param data_set: 数据集14 :param min_support: 最⼩⽀持度15 :return:16"""17 freq_items = {} # 频繁项集18for trans in data_set: # 第⼀次遍历数据集19for item in trans:20 freq_items[item] = freq_items.get(item, 0) + data_set[trans]2122 header_table = {k: v for (k, v) in freq_items.iteritems() if v >= min_support} # 创建头指针表23# for key in header_table:24# print key, header_table[key]2526# ⽆频繁项集27if len(header_table) == 0:28return None, None29for k in header_table:30 header_table[k] = [header_table[k], None] # 添加头指针表指向树中的数据31# 创建树过程32 ret_tree = treeNode('Null Set', 1, None) # 根节点3334# 第⼆次遍历数据集35for trans, count in data_set.items():36 local_data = {}37for item in trans:38if header_table.get(item, 0):39 local_data[item] = header_table[item][0]40if len(local_data) > 0:41############################################################################################## 42# 这⾥修改机器学习实战中的排序代码:43 ordered_items = [v[0] for v in sorted(local_data.items(), key=lambda kv: (-kv[1], kv[0]))]44############################################################################################## 45 update_tree(ordered_items, ret_tree, header_table, count) # populate tree with ordered freq itemset46return ret_tree, header_table474849def update_tree(items, in_tree, header_table, count):50'''51 :param items: 元素项52 :param in_tree: 检查当前节点53 :param header_table:54 :param count:55 :return:56'''57if items[0] in in_tree.children: # check if ordered_items[0] in ret_tree.children58 in_tree.children[items[0]].increase(count) # incrament count59else: # add items[0] to in_tree.children60 in_tree.children[items[0]] = treeNode(items[0], count, in_tree)61if header_table[items[0]][1] is None: # update header table62 header_table[items[0]][1] = in_tree.children[items[0]]63else:64 update_header(header_table[items[0]][1], in_tree.children[items[0]])65if len(items) > 1: # call update_tree() with remaining ordered items66 update_tree(items[1::], in_tree.children[items[0]], header_table, count)676869def update_header(node_test, target_node):70'''71 :param node_test:72 :param target_node:73 :return:74'''75while node_test.node_link is not None: # Do not use recursion to traverse a linked list!76 node_test = node_test.node_link77 node_test.node_link = target_node787980def ascend_tree(leaf_node, pre_fix_path):81'''82遍历⽗节点,找到路径83 :param leaf_node:84 :param pre_fix_path:85 :return:86'''87if leaf_node.parent is not None:88 pre_fix_path.append(leaf_)89 ascend_tree(leaf_node.parent, pre_fix_path)909192def find_pre_fix_path(base_pat, tree_node):93'''94创建前缀路径95 :param base_pat: 频繁项96 :param treeNode: FP树中对应的第⼀个节点97 :return:98'''99# 条件模式基100 cond_pats = {}101while tree_node is not None:102 pre_fix_path = []103 ascend_tree(tree_node, pre_fix_path)104if len(pre_fix_path) > 1:105 cond_pats[frozenset(pre_fix_path[1:])] = tree_node.count106 tree_node = tree_node.node_link107return cond_pats108109110def mine_tree(in_tree, header_table, min_support, pre_fix, freq_items):111'''112挖掘频繁项集113 :param in_tree:114 :param header_table:115 :param min_support:116 :param pre_fix:117 :param freq_items:118 :return:119'''120# 从⼩到⼤排列table中的元素,为遍历寻找频繁集合使⽤121 bigL = [v[0] for v in sorted(header_table.items(), key=lambda p: p[1])] # (sort header table) 122for base_pat in bigL: # start from bottom of header table123 new_freq_set = pre_fix.copy()124 new_freq_set.add(base_pat)125# print 'finalFrequent Item: ',new_freq_set #append to set126if len(new_freq_set) > 0:127 freq_items[frozenset(new_freq_set)] = header_table[base_pat][0]128 cond_patt_bases = find_pre_fix_path(base_pat, header_table[base_pat][1])129 my_cond_tree, my_head = create_tree(cond_patt_bases, min_support)130# print 'head from conditional tree: ', my_head131if my_head is not None: # 3. mine cond. FP-tree132# print 'conditional tree for: ',new_freq_set133# my_cond_tree.disp(1)134 mine_tree(my_cond_tree, my_head, min_support, new_freq_set, freq_items)135136137def fp_growth(data_set, min_support=1):138 my_fp_tree, my_header_tab = create_tree(data_set, min_support)139# my_fp_tree.disp()140 freq_items = {}141 mine_tree(my_fp_tree, my_header_tab, min_support, set([]), freq_items)142return freq_itemsView Code2)treeNode对象⽂件1# -*- coding: utf-8 -*-2'''3@author: Infaraway4@time: 2017/3/31 0:145@Function:6'''789class treeNode:10def__init__(self, name_value, num_occur, parent_node):11 = name_value # 节点元素名称12 self.count = num_occur # 出现的次数13 self.node_link = None # 指向下⼀个相似节点的指针,默认为None14 self.parent = parent_node # 指向⽗节点的指针15 self.children = {} # 指向孩⼦节点的字典⼦节点的元素名称为键,指向⼦节点的指针为值1617def increase(self, num_occur):18"""19增加节点的出现次数20 :param num_occur: 增加数量21 :return:22"""23 self.count += num_occur2425def disp(self, ind=1):26print'' * ind, , '', self.count27for child in self.children.values():28 child.disp(ind + 1)View Code1.3 Eclat算法实现1# -*- coding: utf-8 -*-2"""3@author: Infaraway4@time: 2017/4/15 19:335@Function:6"""78import sys9import time10 type = sys.getfilesystemencoding()111213def eclat(prefix, items, min_support, freq_items):14while items:15# 初始遍历单个的元素是否是频繁16 key, item = items.pop()17 key_support = len(item)18if key_support >= min_support:19# print frozenset(sorted(prefix+[key]))20 freq_items[frozenset(sorted(prefix+[key]))] = key_support21 suffix = [] # 存储当前长度的项集22for other_key, other_item in items:23 new_item = item & other_item # 求和其他集合求交集24if len(new_item) >= min_support:25 suffix.append((other_key, new_item))26 eclat(prefix+[key], sorted(suffix, key=lambda item: len(item[1]), reverse=True), min_support, freq_items)27return freq_items282930def eclat_zc(data_set, min_support=1):31"""32 Eclat⽅法33 :param data_set:34 :param min_support:35 :return:36"""37# 将数据倒排38 data = {}39 trans_num = 040for trans in data_set:41 trans_num += 142for item in trans:43if item not in data:44 data[item] = set()45 data[item].add(trans_num)46 freq_items = {}47 freq_items = eclat([], sorted(data.items(), key=lambda item: len(item[1]), reverse=True), min_support, freq_items)48return freq_itemsView Code(三)试验阶段:这样我们就统⼀了三种算法的调⽤以及返回值,现在我们可以开始试验阶段了,我们在试验阶段分别根据最⼩⽀持度阈值和数据规模的变化来判断这三种算法的效率:⾸先我们先统⼀调⽤者三个算法:1def test_fp_growth(minSup, dataSetDict, dataSet):2 freqItems = fp_growth(dataSetDict, minSup)3 freqItems = sorted(freqItems.iteritems(), key=lambda item: item[1])4return freqItems567def test_apriori(minSup, dataSetDict, dataSet):8 freqItems = apriori_zc(dataSet, dataSetDict, minSup)9 freqItems = sorted(freqItems.iteritems(), key=lambda item: item[1])10return freqItems111213def test_eclat(minSup, dataSetDict, dataSet):14 freqItems = eclat_zc(dataSet, minSup)15 freqItems = sorted(freqItems.iteritems(), key=lambda item: item[1])16return freqItems然后实现数据规模变化的效率改变1def do_experiment_min_support():23 data_name = 'unixData8_pro.txt'4 x_name = "Min_Support"5 data_num = 15006 minSup = data_num / 678 dataSetDict, dataSet = loadDblpData(open("dataSet/" + data_name), ',', data_num)9 step = minSup / 5 # #################################################################10 all_time = []11 x_value = []12for k in range(5):1314 x_value.append(minSup) # ################################################################# 15if minSup < 0: # #################################################################16break17 time_fp = 018 time_et = 019 time_ap = 020 freqItems_fp = {}21 freqItems_eclat = {}22 freqItems_ap = {}23for i in range(10):24 ticks0 = time.time()25 freqItems_fp = test_fp_growth(minSup, dataSetDict, dataSet)26 time_fp += time.time() - ticks027 ticks0 = time.time()28 freqItems_eclat = test_eclat(minSup, dataSetDict, dataSet)29 time_et += time.time() - ticks030 ticks0 = time.time()31 freqItems_ap = test_apriori(minSup, dataSetDict, dataSet)32 time_ap += time.time() - ticks033print"minSup :", minSup, " data_num :", data_num, \34" freqItems_fp:", len(freqItems_fp), " freqItems_eclat:", len(freqItems_eclat), " freqItems_ap:", len(35 freqItems_ap)36print"fp_growth:", time_fp / 10, " eclat:", time_et / 10, " apriori:", time_ap / 1037# print_freqItems("show", freqItems_eclat)38 minSup -= step # #################################################################39 use_time = [time_fp / 10, time_et / 10, time_ap / 10]40 all_time.append(use_time)41# print use_time42 y_value = []43for i in range(len(all_time[0])):44 tmp = []45for j in range(len(all_time)):46 tmp.append(all_time[j][i])47 y_value.append(tmp)48 plot_pic(x_value, y_value, data_name, x_name)49return x_value, y_valueView Code然后实现最⼩⽀持度变化的效率改变1def do_experiment_data_size():23 data_name = 'kosarakt.txt'4 x_name = "Data_Size"5 data_num = 20000067 step = data_num / 5 # #################################################################8 all_time = []9 x_value = []10for k in range(5):11 minSup = data_num * 0.01012 dataSetDict, dataSet = loadDblpData(open("dataSet/"+data_name), '', data_num)13 x_value.append(data_num) # #################################################################14if data_num < 0: # #################################################################15break16 time_fp = 017 time_et = 018 time_ap = 019 freqItems_fp = {}20 freqItems_eclat = {}21 freqItems_ap = {}22for i in range(2):23 ticks0 = time.time()24 freqItems_fp = test_fp_growth(minSup, dataSetDict, dataSet)25 time_fp += time.time() - ticks026 ticks0 = time.time()27 freqItems_eclat = test_eclat(minSup, dataSetDict, dataSet)28 time_et += time.time() - ticks029 ticks0 = time.time()30# freqItems_ap = test_apriori(minSup, dataSetDict, dataSet)31# time_ap += time.time() - ticks032print"minSup :", minSup, " data_num :", data_num, \33" freqItems_fp:", len(freqItems_fp), " freqItems_eclat:", len(freqItems_eclat), " freqItems_ap:", len(freqItems_ap) 34print"fp_growth:", time_fp / 10, " eclat:", time_et / 10, " apriori:", time_ap / 1035# print_freqItems("show", freqItems_eclat)36 data_num -= step # #################################################################37 use_time = [time_fp / 10, time_et / 10, time_ap / 10]38 all_time.append(use_time)39# print use_time4041 y_value = []42for i in range(len(all_time[0])):43 tmp = []44for j in range(len(all_time)):45 tmp.append(all_time[j][i])46 y_value.append(tmp)47 plot_pic(x_value, y_value, data_name, x_name)48return x_value, y_valueView Code同时为了观察⽅便,我们需要对三种算法返回的结果进⾏绘图1# -*- coding: utf-8 -*-2"""3@author: Infaraway4@time: 2017/4/16 20:485@Function:6"""78import matplotlib.pyplot as plt91011def plot_pic(x_value, y_value, title, x_name):12 plot1 = plt.plot(x_value, y_value[0], 'r', label='Kulc') # use pylab to plot x and y13 plot2 = plt.plot(x_value, y_value[1], 'g', label='IR') # use pylab to plot x and y14# plot3 = plt.plot(x_value, y_value[2], 'b', label='Apriori') # use pylab to plot x and y15 plt.title(title) # give plot a title16 plt.xlabel(x_name) # make axis labels17 plt.ylabel('value ')18 plt.legend(loc='upper right') # make legend1920 plt.show() # show the plot on the screenView Code将两个部分统⼀执⾏:1if__name__ == '__main__':23# x_value, y_value = do_experiment_min_support()4# x_value, y_value = do_experiment_data_size()5# do_test()(四)实验结果分析:本次实验我们主要从以下⼏个⽅⾯来讨论三种算法的效率:数据规模⼤⼩最⼩⽀持度阈值长事物数据模式的稠密性4.1 数据规模⼤⼩:数据集:unxiData8规模:900-1500Min_support = 1/30时 Min_support = 1/20时数据集:kosarakt规模:6000-10000Min_support = 1/50 Min_support = 1/80 Min_support = 1/100结论:⼀般情况下,数据规模越⼤,使⽤Apriori算法的效率越低,因为该算法需要多次扫描数据库,当数据量越⼤时,扫描数据库带来的消耗越多。
最小频繁相关模式的挖掘
对于 模式, 独立 我们有如 个结论: 1模 下几 ( 式X ) 独立当 且仅当V , X 则I y , 2 如果 YY , p ) 7 ) ( I .(
模式 x独立的,则 x 的任意子模式都是独立模式. 如果一个频繁模式是相关模式 ,则此模式为频繁相关模式. 同样 ,如果一个频繁模式为独立模式 ,则
维普资讯
20 0 6年笫 4期 ( 总第 5 4期 )
漳 州帅地学 院学报 ( 自然科学版 ) Jun l f hn z o eces lg o ra o ag huT ah r C l! Z e
o
— —
N . . 0 6年 o 4 20
首先给出最小相关模式的定义 ,然后用一个例子加 以说明,最后给出最小频繁相 关模式挖掘算法. 一
设 X ={, , , )是一个模式 , x 的相关 自信度 c. l o— n dne6为: /i … f 12 o e t n ofec[ a c i i ]
P( i i 2… i 一P i) i … P( I n) (1 P(2) i n) p( x) P( i i 2… i +P( ) i … P( l n) i P( 1 2) i n)
表 1 事务数据库 :
1 0
2 0
A, C B,
C, , D E A、 C D E
D .E
3 0 4 0
则 所有频 模式为{CC ,ED , E. 为Pc 1 , = 1 7 Po 一/ ,o =/ ,D 繁 A ,D C,EC } 因 A =/ D 7 -/ , c= l7 PE 1 C 1 l 7
基于矩阵技术的频繁项目集挖掘算法
、 .7 b1 3
・
计
算
机
工
程
2 1 年 8月 01
Au us 2 1 g t 01
No 1 .6
Co u e g n e i g mp tr En i e r n
软件技术与数据库 ・
文 ■ t o - 4 ( 11 - _ 文 标 码t 章 号 o 3 8 o ) _ _ 2 1 2 2 16珈8 o 献 识 A
n a di h sab t rt f ce c n d s a ee ce c . t a  ̄t i e mee in ya p c f in y i i
佃 一
I e od ]f q et a e ; Pgo t a oi m; a i t h oo y d t m n g c nt i bt e e o K y r s r un t r F -rw g rh m tx en lg ; a ii ;o s a tu —e t d w e p tn h l t r c a n rns r m h
图 3所示。
叠 1 l务数据库 D的 C P树 I ‘ F・
3 运用矩阵技术的约束子树的挖掘算法
约束路径 : i i …< 是 C P树 的 im n , 设 12 i << F- t - N是 C P e o F一
树 中的一个节点 , P是 从 ro 节 点到 N 的子路径 , M 和 Q ot 设
.
[ bt c ]S m r l i s nF — o t a o t I m s r us e eea u e u b r f o d o a F -e s a r ur u e A s a t o epo e e s Pg w h l r m.t ut e r v l gn r eh g m e n i n l P t ̄ t e i s g r b ms x t i r g i h c i y t n o c t r t q e h i h
计算机思维导论课程 第8章-数据分析与数据挖掘练习题-带答案
第 8 章数据分析与数据挖掘
一、单选题
1. 某超市研究销售记录数据后发现,买啤酒的人很大概率也会购买尿布,这种属于数据挖 掘的【 】问题。 A:关联规则 B:聚类 C:分类 D:自然语言处理 答案:A
2. 将原始数据进行集成、变换、维度规约、数值规约是【 】步骤的任务。 A:频繁模式挖掘 B:分类和预测 C:数据预处理 D:数据流挖掘 答案:C
Y(千) 30 57 64 72 36 43 59 90 20 83
【提示】:设线性回归方程公式为������=ax+������,计算回归系数 a、b 公式为:
������ = ∑(���∑���−(������������−̅)(���������̅���)−2 ���̅���),������ = ���̅��� − ������������̅。
频繁三项集的频繁子集有:EK、EO、OK、E、K、O,得以下关联规则及置信度: 1)EKO 3/4 = 75% 2)EOK 3/3 = 100% 3)OKE 3/3 = 100% 4)EKO 3/4 = 75% 5)KEO 3/5 = 60% 6)OEK 3/3 = 100%
(4)求有效规则:满足最小置信度min_conf=80%的有效规则有: 1)EOK 2)OKE 3)OEK
������
甲的均值为:(9.7+8.6+9.6+8.6+7.9+9.6+9.3+8.9+9.6+9.2)/10 = 9.1 乙的均值为:(9.4+9.5+8.5+9.5+9.1+9.2+9+8.6+8.8+9.6)/10 = 9.12
挖掘数据流频繁模式的相关技术和算法研究综述
挖掘数据流频繁模式的相关技术和算法研究综述
唐懿芳;穆志纯;张师超;钟达夫
【期刊名称】《计算机工程与应用》
【年(卷),期】2009(045)026
【摘要】数据流本身的特点使得静态挖掘方法不再满足要求.国内外学者已提出许多新的挖掘数据流频繁模式的方法和技术.对这些技术和算法进行了综述.首先介绍数据流的概念和特点,分析国内外的研究现状,总结了数据流中挖掘频繁模式的特点,并列出挖掘方法的常用技术和基于这些技术的代表性算法,最后讨论了将来的研究方向.
【总页数】5页(P121-125)
【作者】唐懿芳;穆志纯;张师超;钟达夫
【作者单位】北京科技大学信息工程学院,北京,100083;广东科技干部管理学院计算机工程技术学院,广东珠海,519090;北京科技大学信息工程学院,北京,100083;广西师范大学计算机科学与信息工程学院,广西桂林,541004;悉尼理工大学信息技术学院,澳大利亚悉尼;广东科技干部管理学院计算机工程技术学院,广东珠海,519090【正文语种】中文
【中图分类】TP311
【相关文献】
1.基于滑动窗口模型的数据流加权频繁模式挖掘算法 [J], 马连灯;王占刚;
2.一种基于频繁模式有向无环图的数据流频繁模式挖掘算法 [J], 任家东;王倩;王蒙
3.基于滑动窗口模型的数据流加权频繁模式挖掘算法 [J], 马连灯;王占刚
4.基于医疗数据流的加权频繁模式挖掘算法 [J], 王鑫;王新国
5.基于数据流的大图中频繁模式挖掘算法研究 [J], 汤小春;樊雪枫;周佳文;李战怀因版权原因,仅展示原文概要,查看原文内容请购买。
数据分析知识:数据挖掘中的频繁模式挖掘
数据分析知识:数据挖掘中的频繁模式挖掘数据挖掘中的频繁模式挖掘数据挖掘是一个复杂的过程,需要从庞大的数据集中提取出有价值的信息,这些信息可以用于业务分析、决策支持、市场营销等方面。
而频繁模式挖掘,就是在大量数据中寻找频繁出现的组合,从而发现数据集中的一些结构、规律和特征,帮助人们更好地理解数据,作出可靠的决策。
本文将介绍频繁模式挖掘的概念、算法和应用,并探讨其在实践中的优势和不足之处。
一、频繁模式挖掘的概念频繁模式挖掘是数据挖掘中的一种技术,它通过数据集中的项集来寻找频繁出现的组合,从而发现数据集中的一些规律、结构和特征。
在频繁模式挖掘中,一个项集是指包含若干个属性(或特征)的集合,而频繁项集指在数据集中出现频率较高的项集。
举个例子,某超市的销售数据表格中,每一行代表一次购物,每一列代表某种商品,如果某些商品常常同时被购买,那么这些商品就组成了一个频繁项集。
对于频繁项集的挖掘,可以应用一些经典的算法,如Apriori算法、FP-growth算法等。
这些算法可以从数据集中提取出频繁项集,并进行支持度和置信度的计算,从而评估每个项集的重要性和关联性。
而支持度指项集在数据集中出现的概率,而置信度则是指在包含某项集的条件下,另一个项集出现的概率。
二、频繁模式挖掘的算法1、Apriori算法Apriori算法是频繁项集挖掘领域中的经典算法,它最早由R. Agrawal和R. Srikant于1994年提出。
该算法是基于Apriori原理的,即如果一个项集是频繁的,那么它的所有子集必须也是频繁的。
具体而言,Apriori算法的流程包括:(1)对数据集中的单个项进行扫描,统计每个项的出现次数,得到一个项集L1;(2)对于项集L1中的每一项,计算其支持度,只保留支持度大于等于设定阈值minsup的项,得到一个新的项集L2;(3)对于项集L2中的每两个项,判断它们是否能够组合成一个新的项集,如果满足条件,则进行计数,并得到一个新的项集L3;(4)重复第二步和第三步,直到无法生成新的项集为止。
数据仓库与数据挖掘复习大全
数据仓库与数据挖掘复习⼤全数据仓库与数据挖掘复习⼤全湖北⽂理学院湖北襄阳王茂林1.某超市研究销售纪录数据后发现,买啤酒的⼈很⼤概率也会购买尿布,这种属于数据挖掘的哪类问题?(A)A. 关联规则发现B. 聚类C. 分类D. ⾃然语⾔处理2. 以下两种描述分别对应哪两种对分类算法的评价标准?(A)(a)警察抓⼩偷,描述警察抓的⼈中有多少个是⼩偷的标准。
(b)描述有多少⽐例的⼩偷给警察抓了的标准。
A. Precision, RecallB. Recall, PrecisionC. Precision, ROCD. Recall, ROC分类是⼀种重要的数据挖掘算法。
分类的⽬的是构造⼀个分类函数或分类模型(即分类器),通过分类器将数据对象映射到某⼀个给定的类别中。
分类器的主要评价指标有准确率(Precision)、召回率(Recall)、F b-score、ROC、AOC等。
准确率(Precision) 和召回率(Recall)是信息检索领域两个最基本的指标。
准确率也称为查准率,召回率也称为查全率。
它们的定义如下:Precision=系统检索到的相关⽂件数量/系统检索到的⽂件总数量Recall=系统检索到的相关⽂件数量/系统所有相关⽂件数量F b-score是准确率和召回率的调和平均:F b=[(1+b2)*P*R]/(b2*P+R),⽐较常⽤的是F1。
在信息检索中,准确率和召回率是互相影响的,虽然两者都⾼是⼀种期望的理想情况,然⽽实际中常常是准确率⾼、召回率就低,或者召回率低、但准确率⾼。
所以在实际中常常需要根据具体情况做出取舍,例如对⼀般搜索的情况是在保证召回率的情况下提升准确率,⽽如果是疾病监测、反垃圾邮件等,则是在保证准确率的条件下,提升召回率。
但有时候,需要兼顾两者,那么就可以⽤F-score指标。
在信息检索中,准确率和召回率是互相影响的,虽然两者都⾼是⼀种期望的理想情况,然⽽实际中常常是准确率⾼、召回率就低,或者召回率低、但准确率⾼。
频繁模式挖掘算法综述
结 构 以及 设 置广 告 页 面 等 。 因此 挖 掘 邻 近 序 列 模 式 有 实 际 意 义 。
为 了 提 高 算 法 效 率 , 们 提 出 了 散 列 项 集 计 数 1 划 分I、 人 9 1 、 , 选 O l 目前 人 们 已 经 提 出 了许 多 邻 近 序 列 模式 挖 掘算 法 . 如 ail rw提 出 的 P M 算 法fI 算 法 先 把所 有 的 序 列 串 联 在 D 3. 0该 样 I和 动 态 项 集 1等 技 术 来 对 A r r算 法 进 行 优 化 。 但 这 些 算 D ne C o I U 1 2 l pi i o 起 组 成 一 个 长 字符 串 .然 后 通 过 在 长 字 符 串 中 删 除 低 阶 邻 近 法 都 是 在 A f r算 法 基 础 上 进 行 的 改 进 . 可 能 改 变 A f f算 p oi i 不 po ii
2 频 繁 项 集挖 掘 、
要 多 次 扫 描 数 据 库 . 致 算 法 性 能 不 佳 。算 法 F S a 导 me pn和 Pe r. i a f P n虽 然 不 用 多 次 扫描 数 据 库 .但 往 往 会 构 造 很 多 投 影 或 者 x
关 联 规 则 是 数 据 挖 掘 的 众 多 模式 中最 为 重 要 的 一 种 .它 主 伪 投 影 数 据 库 . 此算 法 的 效率 也 不 理想 Pi 对 We 日志 的 因 e针 b 要 用 来揭 示数 据库 中项 目或 属 性 之 间 的相 关 性 。 关 联 规 则 经 常 特 点设 计 了一 个 称 为 WA — n P Mie的 算 法 . 算 法 首 先 扫 描 两 该
算法 , 并指 出 了频 繁 模 式 未 来的 研 究 方 向 。
数据流频繁模式挖掘技术研究
到 达 的 事 务 序 列 . 中 每 个 事 务 也 是 一 个 项 集 . 当于 购 物 其 相 篮 中 的 商 品 , 表 示 到 目前 为 止 ,所 见 到 的 数 据 流 D N S的 事
数 据 流 【 一 种 潜 在 无 限 的 、 续 快 速 的 、 时 间 不 断 ] 是 连 随
面 将 对 几 种 常 见 的 数 据 流 频 繁 模 式 挖 掘 技 术进 行讨 论 。
31随 机 取 样 .
为 了 避 免 存 储 整 个 数 据 流 . 可 以对 不 断 到 来 的 数 据 流 以 一 定 的 概 率 进 行 取 样 。 果 事 先 知 道 数据 流 的长 度 的话 。 如 就 可 以直 接 选 择 无 偏 取 样 方 法 。 而 , 可 能 事 先 知 道 数 据 然 不 流 的长度 , 以, 对这 种 方法进 行改进 。 所 须 它 的 基 本 思 榍 [] 简 单 。 先 设 存 储 池 为 空 , 刚 开 始 很 o 首 对
变 化 的数 据 序 列 。 种 数 据 序 列 广 泛 存 在 于 现 实 生 活 中 , 这 例
大一计算思维导论-数据分析及数据挖掘
第8 章数据分析与数据挖掘一、单选题1.某超市研究销售记录数据后发现,买啤酒的人很大概率也会购买尿布,这种属于数据挖掘的【】问题。
A:关联规则 B:聚类 C:分类 D:自然语言处理答案:A2.将原始数据进行集成、变换、维度规约、数值规约是【】步骤的任务。
A:频繁模式挖掘 B:分类和预测 C:数据预处理 D:数据流挖掘答案:C3.当不知道数据所带标签时,可以使用【】技术促使带同类标签的数据与带其他标签的数据相分离。
A:分类 B:聚类 C:关联分析 D:隐马尔可夫链答案:B4.级110人。
则年级属性的众数是【】。
A:一年级 B:二年级 C:三年级 D:四年级答案:A5.建立一个模型,通过这个模型根据已知的变量值来预测其他某个变量值,这属于数据挖掘的【】任务。
A:根据内容检索 B:建模描述 C:预测建模 D:寻找模式和规则答案:C6.假设12个销售价格数据排序后为:5, 10, 11, 13, 15, 35, 50, 55,72, 91, 204, 215,使用等频分箱法将它们划分成四个箱。
则15在【】箱子内。
A:第一个 B:第二个 C:第三个 D:第四个答案:B7.假设12个销售价格数据排序后为:5, 10, 11, 13, 15, 35, 50, 55,72, 91, 204, 215,使用等宽分箱法将它们划分成四个箱。
则15在【】箱子里。
(最大值-最小值)/组数=跨度A:第一个 B:第二个 C:第三个 D:第四个答案:A8.设X={1,2,3}是频繁项集,则可由X产生【】个关联规则。
列出非空子集判断两两之间的关系A:4 B:5 C:6 D:7 答案:C9.以下【】算法是聚类算法。
A:ID3 B:C4.5 C:K-Mean D:Apriori答案:C10.以下【】算法是关联规则算法。
A:DBSCAN B:C4.5 C:K-MeanD:Apriori 答案:D 二、多选题1.数据挖掘的预测建模任务主要包括【】大类问题。
数据流中的频繁模式挖掘
。
第 1 7卷.第 期
20 07年 l 2月
计 算 机 技 术 与 发 展
( M PI ER ) YF TEC HNOIOGY . AND DEVEL OPM ENT
Vo . 7 No 1 1 1 .2 De . 2 0 c 0 7
摘 要 : 来 , 据流 挖掘越 来越 引起 研究人 员 的关注 , 渐成 为许 多领域 有 用 的工具 。 如何 利 用有 限 的存储 空 间高 近年 数 已逐
效 地挖 掘 出频 繁模 式 已成为数 据流 挖掘 的基本 问题 , 具有 很强 的现 实意 义和理 论 价值 。在 论述 数 据 流管 理系 统模 型 的基 础 上 , 入分 析 了国 内外 的各 种频 繁模式 挖掘算 法 , 深 并指 出这些 算 法 的特 点 及 其局 限 性 。最后 对 未 来 的研 究方 向进 行 了
C HENG h a .i 一 W ANG n n a 2 Z u n 1 ,。 u Be . i n ( . o e eo mp t c n e He i e h oo y U ie i , f 3 0 9 C i ; 1 C l g f l o C u e S i c , f c n l nv r t He i 0 0 , hn r e eT g sy e2 a
Ab ta tDaa sra nn a trce n ee rh r atn ina dh sb cmeaueu o lo nyf ls sr c : t tem miigh satatdma yr sa c es’te to n a e o s fl o rma i d .A n a e al mb t f e f d m nt u p . 1t o t s h i tdso a es aet n e u n te fiin l. s do o mme to M S d 1v ro sfe u n t ef i h w o ue tel e trg p c o mief q e tp tm efce ty Bae n o - s l mi r a n fDS mo e.a iu q e tp r a
数据流中的频繁项集挖掘
0 引言
频繁模式 挖掘 是数 据 挖 掘 的精 髓 , 且在 上 个 并
世 纪被广泛研 究 。近 年来 , 掘 数 据 流上 的频繁 模 挖 式 引起 了大量 研 究 者 兴趣 。与其 它 的 流 问题 比较 ,
{ 0, ,. } 0,:… 0D 。设 P为 在 D 中 出现 的所 有 可 能 . 的( 趣 的) 式集 合 , 兴 模 g为计 数 函数 g P×D Ⅳ, : 一 0 是对 象 的集 合 , 是 非 预 设 的 整 数 集 。假 设 参 数 Ⅳ P∈ 且 0 P, ∈0,( , ) 回P在 0中出现 的次数 。模 g Po 返 j
( dol f o ll c neadTd i y Jag U i ri f c neadT cnl yZ  ̄ i g2  ̄3 C i ) S i ll ̄r i c n e mo g , inm nv syo i c n eho g ,h a 1 , hn o 0 C ll S e o e t Se o n 2 a
s e ms T e t gv s s me i o tn e n t n,a ay e o y ia l oi ms o e a a sra . t a . h n i ie o mp r td f i o r a i i n ls s s me tp c l ag r h t v r d t t ms e
Ab t a t: F e u n t ms t nng i oe d t n n p r to n s be n e tnsv l t d e sr c r q e ti e es mi i s a c r aa mi i g o e ain a d ha e x e iey su id o e h a t d c d . I e ri l v rt e l s e a e n t a t e,i v r iws t e e h i u s o mi e  ̄e u n a tr v r d t h c t o ev e h tc n q e t n q e t p t ns o e a a e
树形频繁模式的挖掘及可视化技术研究
项 集 的格 式输 出 , 但 占用 存 储 空 间 , 致 共 享 前 不 导 缀 项集 的冗余 存 储 , 且 子序 列 模 式 匹 配 消 耗 更 多 而
时间. 我们 提 出的基 于数 据垂 直 分 布 的频 繁 模 式 挖 掘算 法 H MF l 利 用 位 图 计 算 频 繁 模 式 的 支 持 B P1 度 , 服 了产 生 大量 候 选集 和需 多 次 扫 描 数 据 库 的 克
树 形 频 繁模 式 的挖 掘及 可视 化 技 术 研 究
胡 相 峰 ,乔 梅
( 天津理工大学 计算机与通信工程学院 , 天津 30 8 ) 0 34 摘 要: 频繁项 集的挖掘不仅仅是 关联规则挖掘的基础 , 而且在序 列模 式、 聚类 、 多维模 式等数 据挖掘任 务 中扮 演重
要 角 色. 文 在 给 出一 个 基 于数 据 垂 直 分 布 的 频 繁 项 集 挖 掘 算 法 H MF 本 B P的 基 础 上 , 述 了利 用 MF 中 的树 视 图控 论 C 件 ( TeCr 将 频 繁 项 集 树 形 可视 化 , C re t ) 1 并讨 论 了基 于 该频 繁 模 式树 的 3种 约 束 频 繁 项 集查 询 的 方 法 . 关 键 词 :频 繁项 集 ; 联 矩 阵 ; 状 图控 件 ;关 联 规 则 关 树
频 繁模 式 的 挖 掘 是 数 据 挖 掘 领 域 中一 个 重 要
便 用户交 互 式 查 询 频 繁 模 式 , 后 讨 论 了利用 频 繁 最
问题 , 过 去 的 数 十 年 中 , A r r, Pgo t 在 以 pi iF —rwh算 o 法 为代 表 的关 联 规 则挖 掘 算 法 相 继 提 出. 些 算 法 这
中 图分 类 号 : P 1 T 31 文 献标 识码 : A d i1 .9 9ji n 17 -9 X.0 0 0 .1 o :03 6 /.s .6 3 05 2 1 .5 05 s
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2019/12/16
3
8.0 基本概念(续)
几个概念。
频繁项集一般是指频繁地在事务数据集中一起出现 的商品的集合,如小卖部中被许多顾客频繁地一起 购买的牛奶和面包。
频繁子序列,如顾客倾向于先购买便携机,再购买 数码相机,然后再购买内存卡这样的模式就是一个 (频繁)序列模式。
数)×100%
2019/12/16
17
8.1.1 问题描述(续)
【例8.1】某顾客购物的交易数据库总交易数为5。
2019/12/16
18
8.1.1 问题描述(续)
【例8.1】相关的支持度和置信度。
support(XY)=(包含X和Y的事务数/事务总数)×100% confidence(XY)=(包含X和Y的事务数/包含X的事务数)×100%
2019/12/16
15
8.1.1 问题描述(续)
关联规则
关联规则是形如XY的蕴含式,果。
如果事务数据库D中有s%的事务包含XY,则称关 联规则XY的支持度为s%。
支持度是指项集X和Y在数据库D中同时出现的概率。
购物篮分析:设全域为商店出售的商品的集合(即 项目全集),一次购物购买(即事务)的商品为项 目全集的子集,若每种商品用一个布尔变量表示该 商品的有无,则每个购物篮可用一个布尔向量表示。 通过对布尔向量的分析,得到反映商品频繁关联或 同时购买的购买模式。这些模式可用关联规则描述。
2019/12/16
设X为一个由多个项目构成的集合,称为项集,如 001中的{A、C、D},当且仅当XT时我们说事务T 包含X。
2019/12/16
14
8.1.1 问题描述(续)
项集X在在事务数据库DB中出现的次数占总事务的 百分比叫做项集的支持度。
如果项集的支持度超过用户给定的最小支持度阈值, 就称该项集是频繁项集(或大项集)。
设I={i1,i2,…,im}是项的集合,表示各种商品的 集合;D= {t1,t2,…,tn}为交易集,表示每笔交 易的集合(是全体事务的集合)。其中每一个事务 T都是项的集合,且有TI。每个事务都有一个相关 的唯一标识符和它对应,也就是事务标识符或TID。
2019/12/16
13
8.1.1 问题描述(续)
2019/12/16
19
8.1.1 问题描述(续)
频度:由于分母相同,有时仅用分子表示,即项集 在数据库中出现的次数来代表支持度。
通过支持度和置信度作为评分函数,给出了 对模式进行评价的一个量化标准。
9
8.1.1 问题描述
现实:商店有很多商品,例如“面包”、“牛奶”、 “啤酒”等。顾客将把他们需要的商品放入购物篮 中。
研究的目的:发现顾客通常会同时购买哪些商品。 通过上述研究可以帮助零售商合理地摆放商品,引 导销售。
2019/12/16
10
8.1.1 问题描述(续)
举例:某一个时间段内顾客购物的记录形成一个交
2019/12/16
16
8.1.1 问题描述(续)
【定义2】关联规则 XY对事务集D的支持度 (support)定义为D中包含有事务X和Y的百分比。 关联规则XY对事务集合D的置信度(confidence) 定义为D中包含有X的事务数与同时包含Y的百分比。 即:
support(XY)=(包含X和Y的事务数/事务总数)×100% confidence(XY)=(包含X和Y的事务数/包含X的事务
2019/12/16
4
8.0 基本概念(续)
频繁子结构是指从图集合中挖掘频繁子图模式。子 结构可能涉及不同的结构形式(例如,图、树或 格),可以与项集或子序列结合在一起。如果一个 子结构频繁地出现,则称它为(频繁)子结构模式。
2019/12/16
5
8.0 基本概念(续)
频繁项集挖掘是频繁模式挖掘的基础。
的关联关系。 一个典型的关联规则的例子是:70%购买了牛奶的
顾客将倾向于同时购买面包。 经典的关联规则挖掘算法:Apriori算法和FP-
growth算法 。
2019/12/16
8
8.1 频繁项集合关联规则(续)
1. 购物篮分析-引发关联规则挖掘的例子
问题:“什么商品组或集合顾客多半会在一次购物 中同时购买?”
易数据库,每一条记录代表一次交易,包含一个交
易标识符(TID)和本次交易所购买的商品。
一个简单交易数据库实例
数据库D:
TID
项
001
002
003
2019/12/16
004
A、C、D
B、C、E
A、B、C、E
B、E
11
8.1.1 问题描述(续)
几个基本概念:
数据项:设I={i1,i2,…,im}是常数的集合,其中 m是任意有限的正整数常量,每个常数ik (k=1,2,...,m)称为一个数据项。
2019/12/16
6
8.1 频繁项集和关联规则
关联规则(Association Rule Mining)挖掘是数据挖掘 中最活跃的研究方法之一。
关联规则挖掘的目的:找出数据库中不同数据项集 之间隐藏的关联关系。
2019/12/16
7
8.1 频繁项集和关联规则(续)
最早是由R.Agrawal等人在1993年提出的。 其目的是为了发现超市交易数据库中不同商品之间
数据仓库与数据挖掘
Data Warehouse and Data Mining
五邑大学计算机学院
何国辉
2019/12/16
1
数据仓库与数据挖掘
Data Warehouse and Data Mining
第八章 频繁模式挖掘
2019/12/16
2
8.0 基本概念
频繁模式(frequent pattern)是指在数据集中频繁出 现的模式。
项集:由I中的数据项组成的集合,即XI。
K-项集:一个大小为K的项集(包含有K项,如{A、 B}为2-项集,{A、C、D}为3-项集)。
一个交易T:是由在I中的数据项所构成的集合,即 TI。
2019/12/16
12
8.1.1 问题描述(续)
【定义1】以商场交易数据库为例,形式化地描述 关联规则: