2017-11-08 11 views
1

큰 데이터 집합이 있는데 변수 사이의 연결 규칙을 마이닝하려고합니다.많은 연속 변수 간의 연결 규칙

제 문제는 160 개의 변수 중 연관 규칙을 찾아야하며 1800 개가 넘는 항목 집합이 있다는 것입니다.

또한 내 변수는 연속 변수입니다. 광업 협회 규칙에, 나는 보통 apriori 알고리즘을 사용했지만 잘 알려진 바와 같이,이 알고리즘은 범주 형 변수를 사용해야합니다.

누구나 내가이 경우 사용할 수있는 알고리즘의 종류에 대한 제안 사항이 있습니까?

내 데이터 세트의 제한된 예는 다음

ID_Order Model  ordered quantity 
A.1  typeX  20 
A.1  typeZ  10 
A.1  typeY  5 
B.2  typeX  16 
B.2  typeW  12 
C.3  typeZ  1 
D.4  typeX  8 
D.4  typeG  4 
... 

내 목표 사람이 방법에 대한 제안을이 있는가 어쩌면 R의 신경망 알고리즘을 사용하여, 서로 다른 제품 간의 연관 규칙과 상관 관계를 채굴 할 것 이 문제를 해결 하시겠습니까? 사전에

감사

+0

보기 [ arules] (https://cran.r-project.org/web/packages/arules/index.ht) ml) – mtoto

답변

1
당신은 다음과 같은 데이터 집합에서 트랜잭션을 생성 할 수 있습니다

:

이 기능은 ID_Order에 의해 그룹 df ID_Order

concat <- function(x) { 
    return(list(as.character(x))) 

} 

당 트랜잭션을 가져 오는 데 사용됩니다

library(dplyr) 

및 사슬 같이 잇다. pull()은 연결 된 Model을 목록에 반환합니다. ID_Order

a_list <- df %>% 
    group_by(ID_Order) %>% 
    summarise(concat = concat(Model)) %>% 
    pull(concat) 

설정 이름 : transactions 클래스의

가져 오기 개체 :

transactions <- as(a_list, "transactions") 

추출 규칙

names(a_list) <- unique(df$ID_Order) 

그런 다음 패키지 arules를 사용할 수 있습니다. suppconf resp에서 최소 지원 및 최소 신뢰도를 설정할 수 있습니다.
rules <- apriori(transactions, 
       parameter = list(supp = 0.1, conf = 0.5, target = "rules")) 

규칙이 사용 검사하려면

inspect(rules) 

을 그리고 이것은 당신이 무엇을 얻을 수 있습니다 :

 lhs    rhs  support confidence lift  count 
[1] {}   => {typeZ} 0.50 0.50  1.0000000 2  
[2] {}   => {typeX} 0.75 0.75  1.0000000 3  
[3] {typeW}  => {typeX} 0.25 1.00  1.3333333 1  
[4] {typeG}  => {typeX} 0.25 1.00  1.3333333 1  
[5] {typeY}  => {typeZ} 0.25 1.00  2.0000000 1  
[6] {typeZ}  => {typeY} 0.25 0.50  2.0000000 1  
[7] {typeY}  => {typeX} 0.25 1.00  1.3333333 1  
[8] {typeZ}  => {typeX} 0.25 0.50  0.6666667 1  
[9] {typeY,typeZ} => {typeX} 0.25 1.00  1.3333333 1  
[10] {typeX,typeY} => {typeZ} 0.25 1.00  2.0000000 1  
[11] {typeX,typeZ} => {typeY} 0.25 1.00  4.0000000 1 
+0

안녕하세요 @ 클레멘스, 귀하의 답변 주셔서 감사합니다 매우 상세한지만, 내가 스크립트를 실행하려고하면 오류가 발생했습니다.내가 코드'a_list <- df %>퍼센트 GROUP_BY (ID_Order) %> % 대한 요약 (CONCAT = CONCAT (모델)) %> % 풀 (CONCAT)의이 부분을 실행하면 는'이 오류를 얻을 : (함수 '오류 (클래스, fdef, mtable) : 서명 'tbl_df' '에 대한 상속 된 메소드'pull '을 찾을 수 없습니다. 패키지 간 충돌로 인한 것일 수 있습니다. 아마도 git2r와 dplyr 인 일 수 있습니다. 감사합니다 –

+0

오류를 재현 할 수 없지만'pull (concat) '대신'dplyr :: pull (concat)'을 명시 적으로 사용하려고 할 수 있습니다. R 3.4를 사용하고 있습니다. 1 및 dplyr 0.7.4 – clemens

+0

감사합니다. 매우 유용합니다! –

1

? transactions의 예 섹션에서 :에서

## example 4: creating transactions from a data.frame with 
## transaction IDs and items (by converting it into a list of transactions first) 
a_df3 <- data.frame(
    TID = c(1,1,2,2,2,3), 
    item=c("a","b","a","b","c","b") 
) 
a_df3 
trans4 <- as(split(a_df3[,"item"], a_df3[,"TID"]), "transactions") 
trans4 
inspect(trans4)