Advertisement

数据挖掘——序列

阅读量:

数据挖掘技术主要用于识别数据中的序列或模式。在本章中, 我们将致力于让数据按照某种规律发展, 即通过一系列事件的一致变化来预估另一个关键的数据点。

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

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

我们在众多规模庞大的数据集中进行模式挖掘的能力是强大的。这种能力涉及多个方面包括人口结构的变化趋势智能手机使用频率的变化情况高速公路维护质量的趋势以及不同年龄段人群所面临的安全问题等多维度的现象分析。然而我们能够明显地意识到这些潜在的规律和序列正等待着我们去深入探索和总结其中蕴含的知识价值

通过利用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语言的强大功能又能培养解决实际问题的能力为初学数据分析者以及有一定经验的研究人员提供了一条有效的学习路径。

该书系统介绍了基于数据挖掘的关键技术和方法,并详细阐述了分类分析与聚类方法的核心原理及应用实例;此外还涵盖了机器学习中的核心算法以及自然语言处理技术和数据展示技术等内容。全书深入浅出地解析了各种数据分析技术及其在实际项目中的应用要点,并结合大量案例展示了不同场景下的数据分析流程及解决方案设计思路;该书内容全面且条理清晰, 其系统化的知识体系能够帮助读者快速掌握数据分析的基本技能, 是深入学习数据分析领域的理想教材。

全部评论 (0)

还没有任何评论哟~