数据挖掘技术一般用于检测数据中的序列或模式。本章中,我们将试图使数据遵循一种模式,在此模式中,一个或一系列事件可以通过一致的方式预测另一个数据点。
本文描述了在数据集中查找模式的不同方法:
- 查找模式
- 在数据中查找模式
- 约束条件
我们可以在很多较大的数据集中查找模式。这涵盖了很多区域,比如混合人口的变化、使用手机的频率、高速公路质量衰退、年龄因素造成的事故等。不过我们能明确地感受到,有很多模式和序列正等待我们去发现。
我们可以通过使用R编程中的一些工具找到这些模式。大多数模式因约束条件而在一定程度上受到限制,如序列的有用时间。
1 模式
我们来回顾一下确定数据中模式的方法:
模 型 类 别 | 模型如何工作 |
---|---|
eclat | 此模型用于项集模式检测,其中购物车最为常见 |
arules | 此模型确定数据集中的项目共现 |
apriori | 此模型学习数据集中的关联规则 |
TraMineR | 这是一个用于挖掘序列的R功能包 |
1.1 Eclat
Eclat算法用于频繁项集的挖掘。这种情况下,我们寻找行为相似的模式,与之相对的是寻找不规则模式(与处理其他数据挖掘的方法类似)。
Algorithm通过数据中的交集来估算同时频繁出现事件候选项(如购物车项目)的支持度。然后通过对频繁候选项进行测试来证实数据集中的模式。
1.用法
在R编程中使用Eclat就是使用arules功能包中的eclat函数。使用Eclat算法的R编程遵循了此处提出的约定:
> eclat(data,
parameter = NULL,
control = NULL)
下表对eclat函数的不同参数进行了说明:
参 数 | 描 述 |
---|---|
data | 待分析的数据矩阵 |
parameter | ECParameter或列表的对象 |
control | ECControl或列表的对象 |
常见的ECParameter如下所示:
参 数 | 描 述 |
---|---|
support | 此参数界定了一个项集的最小支持度(默认值为0.1) |
minlen | 此参数包含了一个项集的最小容量(默认值为1) |
maxlen | 此参数包含了一个项集的最大容量(默认值为10) |
target | 此参数界定了待挖掘关联项集的类型: ● 频繁项集 ● 最频繁项集 ● 频繁闭项集 |
ECControl常见值如下所示:
参 数 | 描 述 |
---|---|
sort | 此参数为下列数值之一: ● 1代表升序 ● -1代表降序 ● 0代表未分类 ● 2代表升序 ● -2代表事务容量和的降序 |
verbose | 此参数显示进度信息 |
调用eclat函数返回数据中出现的频繁项集。
Eclat的实施包括成年人数据集。成年人数据集包括人口统计局数据中约50000行的数据。
2.使用eclat找到成年人行为的相似点
使用下列代码找到成年人行为的相似点:
> library("arules")
> data("Adult")
> dim(Adult)
[1] 48842 115
> summary(Adult)
transactions as itemMatrix in sparse format with
48842 rows (elements/itemsets/transactions) and
115 columns (items) and a density of 0.1089939
most frequent items:
capital-loss=None capital-gain=None
46560 44807
native-country=United-States race=White
43832 41762
workclass=Private (Other)
33906 401333
element (itemset/transaction) length distribution:
sizes
9 10 11 12 13
19 971 2067 15623 30162
Min. 1st Qu. Median Mean 3rd Qu. Max
9.00 100 13.00 153 13.00 13.00
includes extended item information - examples:
labels variables levels
1 age=Young age Young
2 age=Middle-aged age Middle-aged
3 age=Senior age Senior
includes extended transaction information - examples:
transactionID
1 1
2 2
3 3
检查最终结果时,我们会注意到以下细节:
- 摘要共48842行,115列。
- 已列出常见项目:白种人。
- 有很多描述符,如age=Young。
3.查找数据集中的频繁项目
处理数据集时,通过下列代码挖掘出现的频繁项集:
> data("Adult")
> itemsets <- eclat(Adult)
parameter specification:
tidLists support minlenmaxlen target ext
FALSE 0.1 1 10 frequent itemsets FALSE
algorithmic control:
sparse sort verbose
7 -2 TRUE
eclat - find frequent item sets with the eclat algorithm
version 6 (2004.08.16) (c) 2002-2004 Christian Borgelt
createitemset ...
set transactions ...[115 item(s), 48842 transaction(s)] done [0.03s].
sorting and recoding items ... [31 item(s)] done [0.00s].
creating bit matrix ... [31 row(s), 48842 column(s)] done [0.02s].
writing ... [2616 set(s)] done [0.00s].
Creating S4 object ... done [0.00s].
默认值已发现2616个频繁集合。如果我们寻找前五个集合,将会看到下列输出数据:
> itemsets.sorted <- sort(itemsets)
> itemsets.sorted[1:5]
items support
1 {capital-loss=None} 0.9532779
2 {capital-gain=None} 0.9173867
3 {native-country=United-States} 0.8974243
4 {capital-gain=None,
capital-loss=None} 0.8706646
5 {race=White} 0.8550428
以下是对之前输出数据的研究所得:
- 普查数据中的大多数人未要求资本损失或资本利得(这种财政税收事件并非正常状态)。
- 大多数人来自美国。
- 大多数是白种人。
4.集中于最高频率的示例
为了进一步证实数据,我们可以将范围缩减至数据集中出现的最高频率(可以通过调节minlen参数直至处理完一项集合来实现操作):
> itemsets <- eclat(Adult, parameter=list(minlen=9))
> inspect(itemsets)
items support
1 {age=Middle-aged,
workclass=Private,
marital-status=Married-civ-spouse,
relationship=Husband,
race=White,
sex=Male,
capital-gain=None,
capital-loss=None,
native-country=United-States} 0.1056673
按照预期,由一位美国本土且拥有工作的已婚男士填写普查数据表格。
1.2 arulesNBMiner
在R中,arulesNBMiner是一个功能包,用于寻找一个集合中两个或两个以上项目的共现。底层模型,即负二项式模型,允许高度偏态次数分配,否则会很难确定最小项集容量。我们在正被挖掘的较大数据集中寻找频繁数据集。当确定使用arulesNBMiner时,您应该看到一些迹象:项目集频率正出现在数据子集合中。
1.用法
将arulesNBMiner作为功能包进行操作,并且必须将此功能包安装于您的R编程环境中。可以通过使用任意数据集来学习如何使用模型/函数中包含的工具,如下所示:
> results <-NBMiner(data, parameter, control = NULL)
下表对NBMiner函数的不同参数进行了说明:
参 数 | 描 述 |
---|---|
data | 待分析的数据矩阵 |
parameter | 参数列表(自动转换为NBMinerParameters的对象) |
control | 使用的控制列表(自动转换为NBMinerControl的对象),目前仅verbose和调试逻辑可用 |
NBMinerParameters是用于调用NBMiner的参数块,其架构如下所示:
NBMinerParameters(data, trim = 0.01, pi = 0.99,
theta = 0.5, minlen = 1, maxlen = 5, rules = FALSE,
plot = FALSE, verbose = FALSE, getdata = FALSE)
NBMinerParameters的数值如下所示:
参 数 | 描 述 |
---|---|
data | 事务 |
trim | 从数据频率分布尾数修剪的分数 |
pi |