数据挖掘——序列

本文详细介绍了数据挖掘中的序列模式,包括Eclat算法在寻找成年人行为相似点的应用,arulesNBMiner在频繁集挖掘中的作用,Apriori算法评估购物篮中的关联,以及TraMineR在序列确定和可视化方面的功能。通过具体示例展示了如何使用R语言进行数据挖掘,如使用eclat、arulesNBMiner、Apriori和TraMineR等功能包,揭示数据中的模式和序列相似点。
摘要由CSDN通过智能技术生成

数据挖掘技术一般用于检测数据中的序列或模式。本章中,我们将试图使数据遵循一种模式,在此模式中,一个或一系列事件可以通过一致的方式预测另一个数据点。

本文描述了在数据集中查找模式的不同方法:

  • 查找模式
  • 在数据中查找模式
  • 约束条件

我们可以在很多较大的数据集中查找模式。这涵盖了很多区域,比如混合人口的变化、使用手机的频率、高速公路质量衰退、年龄因素造成的事故等。不过我们能明确地感受到,有很多模式和序列正等待我们去发现。

我们可以通过使用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
数据挖掘代码Python是使用Python编程语言进行数据挖掘任务时所使用的代码。Python是一种易于学习和使用的高级编程语言,具有广泛的应用性和丰富的库和工具,使其成为进行数据挖掘的理想选择。 在Python中进行数据挖掘的代码可以涵盖以下几个方面: 1. 数据加载:使用Python代码可以加载各种数据源,如CSV文件、数据库中的表或者API接口,实现数据获取的功能。可以使用CSV模块、pandas等库来实现这个过程。 2. 数据清洗:数据清洗是数据挖掘前的重要步骤,用于处理和转换数据以消除噪音和不一致性。在Python中,可以使用pandas、numpy等库来处理缺失值、异常值和重复值。 3. 特征工程:特征工程是为了提取出对目标变量有更好预测能力的特征。在Python中,可以使用sklearn等库中的各种特征提取方法,如文本处理中的TF-IDF、图像处理中的Haar特征等。 4. 数据建模:数据建模是数据挖掘的核心环节,用于构建模型来对数据进行预测和分类。在Python中,可以使用sklearn中的各种机器学习算法(如决策树、逻辑回归、支持向量机等)或者深度学习框架(如TensorFlow、Keras等)来实现这个过程。 5. 模型评估和优化:在Python中,可以使用sklearn中的评估指标(如准确率、精确率、召回率等)来评估模型的性能,并使用交叉验证和网格搜索等技术来优化模型的超参数。 综上所述,数据挖掘代码Python涵盖了数据加载、数据清洗、特征工程、数据建模和模型评估等过程,可以帮助研究人员和数据分析师更高效地进行数据挖掘任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值