2016-11-02 4 views
2

에서 지원하는 패턴 찾기 (여기의 기본 zaki 데이터 집합을 사용하자). 데이터 세트에서 빈번한 서브 시퀀스를 찾으려면 SPADE (cspade 함수)를 사용합니다.R의 arulesSequences 내가 시간 정보와 트랜잭션 데이터 집합을 가지고 내가 <p>R</p>에 <code>arulesSequences</code> 라이브러리에 문제가 있어요 시퀀스

library(arulesSequences) 
data(zaki) 
frequent_sequences <- cspade(zaki, parameter=list(support=0.5)) 

자, 내가 원하는 것은 지원하는 자주 시퀀스입니다 (각 custumer에 대한 즉) 각 시퀀스에 대해 찾을 수 있습니다. 많은 성공을 거두지 않고 %in%subset의 다양한 조합을 시도했습니다. 두 번째 custumer에 대한 예를 들어

, 초기 거래는 inspect(zaki[[email protected]$sequenceID==2])은 다음과 같습니다 전체 데이터 세트 inspect(frequent_sequences)에서

items  sequenceID eventID SIZE 
5 {A,B,F} 2   15  3 
6 {E}  2   20  1 

빈번한 서열은 다음과 같습니다 내가보고 싶은 무엇

items support 
1 <{A}> 1.00 
2 <{B}> 1.00 
3 <{D}> 0.50 
4 <{F}> 1.00 
5 <{A, F}> 0.75 
6 <{B, F}> 1.00 
7 <{D}, {F}> 0.50 
8 <{D}, {B, F}> 0.50 
9 <{A, B, F}> 0.75 
10 <{A, B}> 0.75 
11 <{D}, {B}> 0.50 
12 <{B}, {A}> 0.50 
13 <{D}, {A}> 0.50 
14 <{F}, {A}> 0.50 
15 <{D}, {F}, {A}> 0.50 
16 <{B, F}, {A}> 0.50 
17 <{D}, {B, F}, {A}> 0.50 
18 <{D}, {B}, {A}> 0.50 

가 있다는 것입니다 고객 2는 빈번한 시퀀스 1, 2, 4, 5, 6, 9 및 10을 지원하지만 다른 시퀀스는 지원하지 않습니다.

역순으로 정보를 얻을 수도 있습니다. 즉, 빈번한 서브 시퀀스를 지원하는 기본 시퀀스는 무엇입니까? R은 빈번한 시퀀스의 지원을 계산하기 위해이 정보를 사용하기 때문에이 정보를 어떻게 든 알 수 있습니다.

이 용이해야한다 나에게 보인다 (그리고 아마도!)하지만 난 그것을 알아낼 수 없습니다 ...

어떤 생각?

답변

2

멋진 머리를 파고 나서, 나는 그것을 할 길을 찾았고 실제로, 그것은 쉽다 ... support 기능이 일을하기 때문에!

ids <- unique([email protected]$sequenceID) 
encoding <- data.frame() 

# Prepare the data.frame: as many columns as there are frequent sequences 
for (seq_id in 1:length(frequent_sequences)){ 
    encoding[,labels(frequent_sequences[seq_id])] <- logical(0) 
} 

# Fill the rows 
for (id in ids){ 
    transaction_subset <- zaki[[email protected]$sequenceID==id] 
    encoding[id, ] <- as.logical(
     support(frequent_sequences, transaction_subset, type="absolute") 
     ) 
} 

이 결과에 도달하는 심미적 방법 일 수 있지만, 이것은 예상 된 결과 얻을 수 있습니다

> encoding 
    <{A}> <{B}> <{D}> <{F}> <{A,F}> <{B,F}> <{D},{F}> <{D},{B,F}> <{A,B,F}> 
1 TRUE TRUE TRUE TRUE TRUE TRUE  TRUE  TRUE  TRUE 
2 TRUE TRUE FALSE TRUE TRUE TRUE  FALSE  FALSE  TRUE 
3 TRUE TRUE FALSE TRUE TRUE TRUE  FALSE  FALSE  TRUE 
4 TRUE TRUE TRUE TRUE FALSE TRUE  TRUE  TRUE  FALSE 
    <{A,B}> <{D},{B}> <{B},{A}> <{D},{A}> <{F},{A}> <{D},{F},{A}> <{B,F},{A}> 
1 TRUE  TRUE  TRUE  TRUE  TRUE   TRUE  TRUE 
2 TRUE  FALSE  FALSE  FALSE  FALSE   FALSE  FALSE 
3 TRUE  FALSE  FALSE  FALSE  FALSE   FALSE  FALSE 
4 FALSE  TRUE  TRUE  TRUE  TRUE   TRUE  TRUE 
    <{D},{B,F},{A}> <{D},{B},{A}> 
1   TRUE   TRUE 
2   FALSE   FALSE 
3   FALSE   FALSE 
4   TRUE   TRUE