1. 程式人生 > >資料探勘——序列

資料探勘——序列

資料探勘技術一般用於檢測資料中的序列或模式。本章中,我們將試圖使資料遵循一種模式,在此模式中,一個或一系列事件可以通過一致的方式預測另一個數據點。

本文描述了在資料集中查詢模式的不同方法:

  • 查詢模式
  • 在資料中查詢模式
  • 約束條件

我們可以在很多較大的資料集中查詢模式。這涵蓋了很多區域,比如混合人口的變化、使用手機的頻率、高速公路質量衰退、年齡因素造成的事故等。不過我們能明確地感受到,有很多模式和序列正等待我們去發現。

我們可以通過使用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 精度閾值π
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.
  1.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

以下是對之前輸出資料的研究所得:

  • 共20000行,1000列。
  • 所有縱列都用專案399、專案475等命名。
  • 2000個子集在少數例子中具有偏態(如容量1有702、容量2有733等)。

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的支援度和置信度概念十分有趣。Apriori方法會從您的資料集中返回有趣的關聯,如當出現Y時,會返回X。支援度是包含X和Y的事務的百分比。置信度是同時包含X和Y的事務的百分比。支援度的預設值為10,置信度的預設值為80。

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,以便生成一系列用於發現序列的工具。在挖掘操作中選擇何種工具取決於您自己。

您可以同時使用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”
informat 包含了原始資料的格式,可以是下列格式中的任意一種:
 STS
 SPS
 SPELL
stsep 分隔符
alphabet 所有可能狀態的列表
states 包含了短時狀態的標記

2.確定訓練和職業中的序列

在這一示例中,我們將看到人們生活中從訓練到工作的程序中時間的序列。我們期望看到從失業未經訓練的狀態至經過訓練並最終成為全職員工的程序。        

TraMineR功能包中的一些函式有助於序列分析。我們使用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, ...)

大多數引數可以在預設值下使用。

如您所見,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")

我們將使用TraMineR功能包中內建的mvad資料集。mvad資料集追蹤了712個個體在20世紀90年代自訓練至工作的程序。我們可以按下列形式使用mvad資料集。

> 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)

熵在不同時期的變化特點:明顯降低後會出現細微的上升。這與不同人群會在最初做出不同選擇的情況一致(很多狀態),如上學或訓練,然後進行工作,成為勞動力(一種狀態)。

有一個有趣的想法為資料湍流。湍流傳達出一個資訊,即從資料中可見的某個特定事例可以推匯出多少不同的後續序列。我們可以用seqST函式將湍流視覺化。seqST函式將序列資料作為引數,並返還湍流資料。讓我們繼續以示例進行說明:

> 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資料摘要中,地區響