数据挖掘——序列
数据挖掘技术主要用于识别数据中的序列或模式。在本章中, 我们将致力于让数据按照某种规律发展, 即通过一系列事件的一致变化来预估另一个关键的数据点。
本文描述了在数据集中查找模式的不同方法:
- 查找模式
- 在数据中查找模式
- 约束条件
我们在众多规模庞大的数据集中进行模式挖掘的能力是强大的。这种能力涉及多个方面包括人口结构的变化趋势智能手机使用频率的变化情况高速公路维护质量的趋势以及不同年龄段人群所面临的安全问题等多维度的现象分析。然而我们能够明显地意识到这些潜在的规律和序列正等待着我们去深入探索和总结其中蕴含的知识价值
通过利用R编程中的某些工具来识别出这些模式。大多数模式受限于约束条件,在一定程度上被限制了发展。例如,在分析序列时所涉及的时间范围。
1 模式
我们来回顾一下确定数据中模式的方法:
| 模 型 类 别 | 模型如何工作 |
|---|---|
| eclat | 此模型用于项集模式检测,其中购物车最为常见 |
| arules | 此模型确定数据集中的项目共现 |
| apriori | 此模型学习数据集中的关联规则 |
| TraMineR | 这是一个用于挖掘序列的R功能包 |
1.1 Eclat
该算法被用来挖掘频繁项集。在这种情况下,在这种情形下我们识别出行为相似的模式与其相对的是识别不规则模式(类似于处理其他领域中的数据挖掘方法)
该算法基于数据中的交集计算同时频繁出现事件候选项(如购物车项目)的支持度。随后对该算法进行测试以验证数据集中潜在模式的存在。
1.用法
在R编程中应用Eclat算法等同于调用arules功能包中的eclat函数,在遵循上述所提出设定或规范的基础上进行操作时会生成预期的结果
> eclat(data,
parameter = NULL,
control = NULL)
下表对eclat函数的不同参数进行了说明:
| 参 数 | 描 述 |
|---|---|
| data | 待分析的数据矩阵 |
| parameter | ECParameter或列表的对象 |
| control | ECControl或列表的对象 |
常见的ECParameter如下所示:
| 参 数 | 描 述 |
|---|---|
| support | 此参数界定了一个项集的最小支持度(默认值为0.1) |
| minlen | 此参数包含了一个项集的最小容量(默认值为1) |
| maxlen | 此参数包含了一个项集的最大容量(默认值为10) |
此参数决定了挖掘过程中所关注的关联项集合类型,在数据挖掘中通常涉及三种基本类型的关联项集合:最常见的关联项集合、具有最大频率值的关联项集合以及其属性满足封闭性的关联项集合。
ECControl常见值如下所示:
| 参 数 | 描 述 |
|---|
| sort| 该参数仅接受以下数值:
● 1则表示升序排序
● -1则表示降序排序
● 0则表示无分类设置
● 2则表示升序排序
● -2则表示事务容量按降序排列 |
| verbose|该参数指定是否显示进度条信息
调用eclat函数返回数据中出现的频繁项集。
Eclat的实施基于成年人数据集。基于人口统计局提供的约5万条记录的数据
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
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 | 精度阈值π |
| theta | 剪枝参数θ |
续表
| 参 数 | 描 述 |
|---|---|
| minlen | 项集中所发现项目的最小数(默认值为1) |
| maxlen | 项集中所发现项目的最大数(默认值为5) |
| rules | 包含了布尔值,用于确定是否挖掘NB精确规则而非NB频繁项集 |
| plot | 包含了布尔值,用于确定是否为模型绘图 |
| verbose | verbose输出参数,用于估算程序 |
| getdata | 用于获取研究及估算的计数 |
功能包中的Agrawal数据可通过调用库函数直接获取。请注意:Agrawal数据是基于集中事务设计并采用特殊合成方式生成的。代码示例如下:
> data(Agrawal)
> summary(Agrawal.db)
transactions as itemMatrix in sparse format with
20000 rows (elements/itemsets/transactions) and
1000 columns (items) and a density of 0.00997795
most frequent items:
item540 item155 item803 item741 item399 (Other)
1848 1477 1332 1295 1264 192343
element (itemset/transaction) length distribution:
sizes
1 2 3 4 5 6 7 8 9 10 11 12 13
15 88 204 413 737 1233 1802 2217 2452 2444 2304 1858 1492
14 15 16 17 18 19 20 21 22 23 24 25
1072 706 431 233 138 83 46 19 10 1 1 1
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.000 8.000 10.000 9.978 1000 25.000
includes extended item information - examples:
labels
1 item1
2 item2
3 item3
includes extended transaction information - examples:
transactionID
1 trans1
2 trans2
3 trans3
> summary(Agrawal.pat)
set of 2000 itemsets
most frequent items:
item399 item475 item756 item594 item293 (Other)
29 29 29 28 26 3960
element (itemset/transaction) length distribution:sizes
1 2 3 4 5 6
702 733 385 134 34 12
Min. 1st Qu. Median Mean 3rd Qu. Max.
00 1.00 00 05 3.00 6.00
summary of quality measures:
pWeightspCorrupts
Min.:100e-08 Min. :0.0000
1st Qu.:1.426e-04 1st Qu. :0.2885
Median :3.431e-04 Median :0.5129
Mean :5.000e-04 Mean :0.5061
3rd Qu.:6.861e-04 3rd Qu. :0.7232
Max. :3.898e-03 Max. :1.0000
includes transaction ID lists: FALSE
以下是对之前输出数据的研究所得:
- 涉及共两万条数据和一千个特征。
- 所有的纵向字段均被命名为...。
- 具体而言,在这些子集中存在明显的样本分布偏差(例如,在容量为1时共有七百多个样本,在容量为二时则达到了几百个样本)。
2.为频繁集挖掘Agrawal数据
如果以Agrawal数据为例,可以得到下列输出数据:
> mynbparameters <- NBMinerParameters(Agrawal.db)
> mynbminer <- NBMiner(Agrawal.db, parameter = mynbparameters)
> summary(mynbminer)
set of 3332 itemsets
most frequent items:
item540 item615 item258 item594 item293 (Other)
69 57 55 50 46 6813
element (itemset/transaction) length distribution:sizes
1 2 3 4 5
1000 1287 725 259 61
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.000 1.000 000 128 3.000 5.000
summary of quality measures:
precision
Min.:0.9901
1st Qu. :1.0000
Median :1.0000
Mean :0.9997
3rd Qu. :1.0000
Max. :1.0000
以下是对之前输出数据的研究所得:
- 项目近乎均匀分布。
- 项集长度1或2有较大偏斜。
1.3 Apriori
Apriori是一种用于分析关联规则的分类算法。它与其处理事务的方式相对应。该算法致力于探索数据集中频繁出现的子集,并且必须达到最低支持度标准以确认关联性
Apriori的概念虽然看似复杂但其核心原理非常直观。该算法能够从数据集中发现潜在的关系例如在数据集中若出现项集Y则算法能够推导出相关的项集X。具体而言支持度衡量的是同时包含项集{X Y}的数据项占总数据项的比例而置信度则表示在包含项集{X}的情况下也含有项集{Y}的比例
1.用法
apriori方法的使用规则如下所示:
apriori(data, parameter = NULL, appearance = NULL, control = NULL)
下表对apriori函数的不同参数进行了说明:
| 参 数 | 描 述 |
|---|---|
| data | 这是所需的数据集 |
| parameter | 这是用于控制处理方式的参数列表。支持度的默认值为0.1,置信度默认值为0.8,maxlen默认值为10 |
| appearance | 控制了所用的数据值 |
| control | 控制了算法,特别是分类的效能 |
2.评估购物篮中的关联
我们正在探索零售商店中常见购物篮内商品种类之间的关系。为此我们将按照以下步骤执行操作。
(1)下载下列arules功能包:
> install.packages("arules")
> library(arules)
(2)下载事务,即比利时杂货店数据:
> tr <- read.transactions("http://fimi.ua.ac.be/data/retail.dat",
format="basket")
(3)大概了解数据:
>summary(tr)
transactions as itemMatrix in sparse format with
88162 rows (elements/itemsets/transactions) and
16470 colunsis (items) and a density of 0.0006257289
most frequent items:
39 48 38 32 41 (Other)
50675 42135 15596 15167 14945 770058
element (itemset/transaction) length distribution:
sizes
1 2 3 4 5 6 7 8 9 10 11 12 13
3016 5516 6919 7210 6814 6163 5746 5143 4660 4086 3751 3285 2866
14 15 16 17 18 19 20 21 22 23 24 25 26
2620 2310 2115 1874 1645 1469 1290 1205 981 887 819 684 586
27 28 29 30 31 32 33 34 35 36 37 38 39
582 472 480 355 310 303 272 234 194 136 153 123 115
40 41 42 43 44 45 46 47 48 49 50 51 52
112 76 66 71 60 50 44 37 37 33 22 24 21
53 54 55 56 57 58 59 60 61 62 63 64 65
21 10 11 10 9 11 4 9 7 4 5 2 2
66 67 68 71 73 74 76
5 3 3 1 1 1 1
Min. 1st Qu. Median Mean 3rd QU. Max.
1.00 4.00 8.00 10.31 14.00 76.00
includes extended item information - examples:
labels
1 0
2 1
3 10
以下是对之前输出数据的研究所得:
- 共88162个购物篮,对应16470个项目。
- 成对项目很受欢迎(项目39有50675个)。
(4)一起看一下最频繁的项目:
> itemFrequencyPlot(tr, support=0.1)
我们可以再次看到少数频率比平常频率更高的项目。
(5)现在,为合适的关联构建一些规则:
> rules <- apriori(tr, parameter=list(supp=0.5,conf=0.5))
parameter specification:
confidenceminvalsmaxaremavaloriginalSupport support minlen
0.5 0.1 1 none FALSE TRUE 0.5 1
maxlen target ext
10 rules FALSE
algorithmic control:
filter tree heap memopt load sort verbose
0.1 TRUE TRUE FALSE TRUE 2 TRUE
apriori - find association rules with the apriori algorithm
version 4.21 (2004.05.09) (c) 1996-2004 Christian Borgelt
set item appearances ...[0 item(s)] done [0.00s].
set transactions ...[16470 item(s), 88162 transaction(s)] done
[0.13s].
sorting and recoding items ... [1 item(s)] done [0.01s].
creating transaction tree ... done [0.02s].
checking subsets of size 1 done [0.00s].
writing ... [1 rule(s)] done [0.00s].
creating S4 object ... done [0.01s].
(6)然后用一条规则作为结束。规则摘要如下:
> summary(rules)
set of 1 rules
rule length distribution (lhs + rhs):sizes
1
1
Min. 1st Qu. Median Mean 3rd Qu. Max.
1 1 1 1 1 1
summary of quality measures:
support confidence lift
Min.:0.5748 Min. : 0.5748 Min. :1
1st Qu. :0.5748 1st Qu. :0.5748 1st Qu. :1
Median :0.5748 Median :0.5748 Median :1
Mean :0.5748 Mean :0.5748 Mean :1
3rd Qu. :0.5748 3rd Qu.:0.5748 3rd Qu. :l
Max. :0.5748 Max. :0.5748 Max. :1
mining info:
datantransactions support confidence
tr 88162 0.5 0.5
规则的支持度有力,置信度较低。
(7)具体规则:
>inspect(rules)
lhsrhs support confidence lift
1{} => {39} 0.5747941 0.5747941 1
正如我们猜想的那样,大多数人将项目39放入购物篮。
(8)我们可以寻找更多与规则相关的信息,以便全面了解其产生的影响。
>interestMeasure(rules, c("support", "chiSquare", "confidence",
"conviction", "cosine", "leverage", "lift", "oddsRatio"), tr)
sapply(method, FUN = function(m) interestMeasure(x, m,
transactions, reuse, ...))
support 0.5747941
chiSquareNaN
confidence 0.5747941
conviction 1.0000000
cosine 0.7581518
leverage 0.0000000
lift 1.0000000
oddsRatioNaN
一条派生规则将这些措施的置信度展现得非常全面。
1.4 用TraMineR确定序列
该功能库可进行模式挖掘并生成可视化的表示形式;其核心思想在于识别和分析这些事件轨迹;还可以整合一系列图形化展示工具来呈现结果;另外还有一些天然存在的案例;其中的部分案例具有重复或相似的行为轨迹;例如,在社会科学研究领域;这些行为轨迹会表现出周期性或循环特征。
借助这份文件, 我将帮助您大致认识TraMineR, 从而生成一系列用于分析序列的工具。在选择挖掘工具时, 您的选择取决于您的需求。
您可以同时使用TraMineR功能包及一对内置数据集:
| 数 据 集 | 描 述 |
|---|---|
| actcal | 此数据集包含了2000年以来每月活动单个的状态符号 |
| biofam | 此数据集包含了15岁至30岁期间单个的家庭生活状态 |
| mvad | 此数据集包含了每月活动单个的状态数据 |
1.用法
seqdef函数用于确定数据中出现的序列:
seqdef(data, var=NULL, informat="STS", stsep=NULL,
alphabet=NULL, states=NULL, id=NULL, weights=NULL,
start=1, left=NA, right="DEL", gaps=NA,
missing=NA, void="%", nr="*", cnames=NULL,
xtstep=1, cpal=NULL, missing.color="darkgrey",
labels=NULL, ...)
下表对seqdef函数的不同参数进行了说明:
| 参 数 | 描 述 |
|---|---|
| data | 矩阵 |
| var | 会有一个纵列列表,其中包含序列或代表所有纵列都存在的“NULL” |
包含了一定的数据存储格式,在实际应用中具体包括但不限定于以下几种常见的数据存储格式:STS(语义标签)、SPS(属性标签)、SPELL(拼写校对)。其中stsep作为分隔符,在文件处理中用于标识字段结束位置的具体分隔标志。states则用于记录了关于短暂状态的信息
2.确定训练和职业中的序列
在这一案例中
改写说明
seqdef(data, var=NULL, informat="STS", stsep=NULL,
alphabet=NULL, states=NULL, id=NULL, weights=NULL, start=1,
left=NA, right="DEL", gaps=NA, missing=NA, void="%", nr="*",
cnames=NULL, xtstep=1, cpal=NULL, missing.color="darkgrey",
labels=NULL, ...)
大多数参数可以在默认值下使用。
请看此段描述: seq 数据对象对应于 plot 函数中的第一个参数。 您可以选择实际需要使用的 plot 函数(例如本例中采用 seqiplot)来替代 XXX。
seqXXXplot(seqdata, group=NULL, type="i", title=NULL,
cpal=NULL, missing.color=NULL,
ylab=NULL, yaxis=TRUE, axes="all", xtlab=NULL, cex.plot=1,
withlegend="auto", ltext=NULL, cex.legend=1,
use.layout=(!is.null(group) | withlegend!=FALSE),
legend.prop=NA, rows=NA, cols=NA, ...)
大部分参数都是您在plot中所需的增强版本的基础图表的一部分;其中ylab用于标记图表中的y轴。
首先,我们必须用下列编码将TraMineR加载入您的环境中。
> install.packages("TraMineR")
> library ("TraMineR")
该功能包中的mvad数据集用于我们的研究。mvad数据集记录了712名个体从自我培养到职业发展的进程。具体而言,我们可以按照以下方式利用该数据集。
> data(mvad)
数据摘要如下所示:
> summary(mvad)
id weight male catholic Belfast
Min.: 1.0 Min.:0.1300 no :342 no :368 no :624
1st Qu. :178.8 1st Qu. :0.4500 yes:370 yes:344 yes: 88
Median :356.5 Median :0.6900
Mean :356.5 Mean :0.9994
3rd Qu. :534.2 3rd Qu. :1.0700
Max. :710 Max. :4.4600
N.EasternSouthern S.Eastern Western Grammar funemp
no :503 no :497 no :629 no :595 no :583 no :595
yes:209 yes:215 yes: 83 yes:117 yes:129 yes:117
gcse5eqfmprlivboth Jul.93
no :452 no :537 no :261 school :135
yes:260 yes:175 yes:451 FE : 97
employment :173
training :122
joblessness:185
HE : 0
我们可以查看标准标识符来了解体重、性别、宗教等信息。
由于我们正通过86采用了17列的数据(选取的数据部分被应用于序列确定函数),如下所示
> myseq <- seqdef(mvad, 17:86)
[>] 6 distinct states appear in the data:
1 = employment
2 = FE
3 = HE
4 = joblessness
5 = school
6 = training
[>] state coding:
[alphabet] [label] [long label]
1 employmentemploymentemployment
2 FEFEFE
3 HEHEHE
4 joblessnessjoblessnessjoblessness
5 schoolschoolschool
6 trainingtrainingtraining
[>] 712 sequences in the data set
[>] min/max sequence length: 70/70
从这一角度看是正确的。我们可以参考失业、学习阶段、技能培训及职业发展等具体状态来获取所需的一系列行数据。
我们可以使用一些内置图表来将已确定的序列可视化。序列如下所示。
- seqiplot:指数图表。
- seqfplot:频率图表。
- seqdplot:分布图表。
以指数图表为例:
> seqiplot(myseq)
基于个人状态间转换期的划分期间内,在连续几个月的时间里都会有相应的训练安排。请确保在核实数据后确认其与您的序列数据理解保持一致。
现在,以频率图表为例:
> seqfplot(myseq)
我们从序列的时间频率分布入手分析其特征表现。观察多轮之后会发现同一序列的人群分布呈现稳定特征,在经过一段特定时期的学习或操作之后会出现预期的工作状态
现在,以分布图表为例:
> seqdplot(myseq)
我们来进行序列状态在各个时期的分布情况考察。一般而言,在上学或接受训练之后开始工作。明白了。
通过以下指令我们可以看到序列的熵:
> seqHtplot(myseq)
熵在不同时期的变化特点:经历显著下降后会伴随轻微的增长。这与不同群体最初的选择呈现出一致性(涉及多种情况),例如上学、受训或其他方式
有一个有趣的概念关于数据湍流。** turbulent flow ** 传递了一个重要提示:从可观察的具体案例能够推导出多少不同的后续序列?通过seqST函数我们可以将这种复杂现象进行可视化展示。该函数接受序列数据作为输入并返回相应的Turbo流量特征。让我们通过实例进一步解释这一概念:
> myturbulence <- seqSt(myseq)
> hist(myturbulence)
我们能够观察到长尾分布基本符合标准化特征。大部分现有状态可划分为后续较少的状态以及少数其他状态可能具有异常值。
1.5 序列相似点
TraMineR功能包也可以确定序列的度量,如不同序列间的相异点。
- 最长公共前缀(LCP) :我们可以识别出两个字符串中共同初始部分的最大长度,并将其作为衡量相似度的重要依据。
- 最长公共序列(LCS) :通过分析两个序列间的一致片段,并关注其内部最大长度的一致片段来评估它们的相似性。
- 最佳匹配(OM)距离 :该指标旨在将不同序列转换为一致的形式,并计算实现这一目标所需进行的最小编辑成本。
使用TraMineR中的seqdist函数可以实现所有这些功能。
1.序列度量
我们可以用seqdist计算LCP。
2.用法
seqdist函数使用规则如下:
seqdist(seqdata, method, refseq=NULL, norm=FALSE,
indel=1, sm=NA, with.missing=FALSE, full.matrix=TRUE)
下表对seqdist函数的不同参数进行了说明:
| 参 数 | 描 述 |
|---|---|
| seqdata | 这是状态序列(用seqdef界定) |
| method | 包含了待用的LCP方法 |
| refseq | 这是可选参考序列 |
| norm | 将距离标准化 |
| indel | 仅用于OM |
| sm | 这是替代矩阵(忽略LCP) |
| with.missing | 如果出现缺失间隙,数值为“TRUE” |
| full.matrix | 如果数值为“TRUE”,返回全矩阵 |
3.示例
seqdist函数用法示例如下:
(1)使用被构建到功能包的famform序列:
> data(famform)
(2)界定可用的序列对象:
> seq <- seqdef(famform)
[>] found missing values ('NA') in sequence data
[>] preparing 5 sequences
[>] coding void elements with '%' and missing values with '*'
[>] 5 distinct states appear in the data:
1 = M
2 = MC
3 = S
4 = SC
5 = U
[>] state coding:
[alphabet] [label] [long label]
1 MMM
2 MCMCMC
3 SSS
4 SCSCSC
5 UUU
[>] 5 sequences in the data set
[>] min/max sequence length: 2/5
> seq
Sequence
[1] S-U
[2] S-U-M
[3] S-U-M-MC
[4] S-U-M-MC-SC
[5] U-M-MC
(3)确定使用序列3和序列4的LCP:
> seqLLCP(seq[3,],seq[4,])
[1] 4
我们可以得到四个前置匹配(S-U-M-MC与S-U-M-MC-SC相比)。
(4)我们可以直接计算LCS度量:
> seqLLCS(seq[1,],seq[2,])
[1] 2
我们可以在2中找到常用序列。
(5)也可以直接确定OMD:
[>] cost <- seqsubm(seq, method-"CONSTANT". Cval=2)
[>] creating 5x5 substitution-cost matrix using 2 as constant
value
> cost
M-> MC-> S-> SC-> U->
M-> 0 2 2 2 2
MC-> 2 0 2 2 2
S-> 2 2 0 2 2
SC-> 2 2 2 0 2
U-> 2 2 2 2 0
OMD仅为2(仅用较小序列来诠释概念)。
2 问题
实际问题
- 如何避免将白人群体包含在ECLAT结果中?
- 请阐述序列图表中所呈现的各类转变阶段。
- 在TraMineRmvad的数据摘要中,在地区反应观察到显著差异,请推测其原因。
什么时候做、怎样做以及为什么这样做?
- 分析seqiplot中离群数据的情况,并指出哪些观测不符合预期。
- 当绘制在seqHtplot图中的线呈现上扬趋势时,请解释图中曲线形态的变化可能反映的数据特征。
- 介绍如何利用该序列查找功能进行数据分析。
挑战
- 识别项目编号在市场购物篮数据中的具体意义。
- 本章所列的说明仅为TraMineR功能包中的一部分内容。如需了解其他附加功能,请进一步查阅相关资料。
3 总结
本章中,我们分析了数据序列的不同类型.基于ECLAT函数分析数据集中的项目组合,以识别人口中的相似模式.利用TraMineR识别购物篮中的项目频繁集合.应用Apriori算法确定购物篮中项目的关联性.首先利用TraMineR分析成年人职业转换期的序列发展轨迹;其次,通过其可访问的大量图形特征进行可视化展示.最后,我们运用seqdist工具对各个序列间的相似性和差异性进行详细比较分析.
本文摘自《数据科学:R语言实战》
该书的一大显著优点在于其直观易懂且操作简便的特点。书中每个示例都配备了完整的数据集与源代码支持,在深入分析每一步骤的过程中能够使读者充分理解案例的整体脉络与内在逻辑关系,并且能够直接运行并编译书中所提供的全部源代码材料以掌握如何将实际问题转化为可操作的具体代码实现方案。通过这种方式既能深入探索R语言的强大功能又能培养解决实际问题的能力为初学数据分析者以及有一定经验的研究人员提供了一条有效的学习路径。
该书系统介绍了基于数据挖掘的关键技术和方法,并详细阐述了分类分析与聚类方法的核心原理及应用实例;此外还涵盖了机器学习中的核心算法以及自然语言处理技术和数据展示技术等内容。全书深入浅出地解析了各种数据分析技术及其在实际项目中的应用要点,并结合大量案例展示了不同场景下的数据分析流程及解决方案设计思路;该书内容全面且条理清晰, 其系统化的知识体系能够帮助读者快速掌握数据分析的基本技能, 是深入学习数据分析领域的理想教材。
