2013-05-13 6 views
5

R 바구니 분석을 사용하여 arules 패키지를하지만, 주문 조합을 중복R 바구니 분석의 고유 주문 번호와 패키지를 arules 사용하지만, 중복 주문 조합을 고유 주문 번호와

나는를 사용하여 바구니 분석을 할 노력하고있어 그냥 학습 R. arules 꾸러미 (그러나 나는 다른 어떤 꾸러미 제안에도 완전히 열리다!) 6 개의 다른 항목 타입의 가능한 모든 조합을 비교하기 위해 구입했다.

내 원래 데이터 세트는 다음과 같이 보았다 :

OrderNo, ItemType, ItemCount 
111, Health, 1 
111, Leisure, 2 
111, Sports, 1 
222, Health, 3  
333, Food, 7 
333, Clothing, 1 
444, Clothing, 2 
444, Health, 1 
444, Accessories, 2 

합니다. . .

목록에는 약 3,000 회의 관측이 있습니다.

OrderNo, Accessories, Clothing, Food, Health, Leisure, Sports 
111, 0, 0, 0, 1, 2, 1 
222, 0, 0, 0, 3, 0, 0 
333, 0, 1, 7, 0 , 0, 0 
444, 2, 2, 0, 1, 0, 0 
. . . 

나는 다음과 같은 명령을 (사용하여 트랜잭션에 읽으려고 할 때마다하고 만 시도 :

나는 특정 ItemType은의 수를 포함하는 각각의 고유 한 주문에 대한 하나 개의 행을 포함하는 행렬에 데이터를 붕괴 그것의 변형) : asMethod (객체 오류) : 중복 된 항목 트랜잭션 목록을 강요 할 수

tr <- read.transactions("dataset.csv", rm.duplicates=FALSE, format="basket", sep=",") 

나는 오류 메시지가 표시됩니다.

나는 이것이 3,000 회의 관찰을 가지고 필연적으로 특정 조합이 두 번 이상 나타날 것이라고 가정합니다. 즉, 한 명 이상의 사람이 의류 한 장만 구입하고 다른 것은 아무것도 아닙니다 : OrderNo, 0, 1 , 0, 0, 0, 0). 고유 한 조합 수에 따라 데이터 세트를 축소 할 수는 있지만, 그렇게하면 가장 빈번한 조합을 표시 할 가중치가 없을 것입니다.

나는 format = "basket"을 사용하면 동일한 항목 조합을 포함하는 여러 주문을 설명 할 수 있다고 생각했지만 분명히 그렇지 않습니다. 나는 너무 길다. 내가 읽은 모든 문서는 이것이 가능함을 의미하지만 문제에 접근하는 방법에 대한 예제 나 조언을 찾을 수 없습니다.

어떤 조언을 주시면 감사하겠습니다. 내 머리가 이쪽으로 돌고있다.

추가 정보 : 내 최종 결과를 위해, 나는 상위 5 대 구매 조합의 가장 중요한 조합을 얻으려고합니다. 그게 도움이되는지 나는 모른다.

+0

케어를 게시이 발견 될 것인가? http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

답변

1

당신이 .CSV 파일을 사용하는 경우는, 중복을 제거해야합니다, 데이터를 실행하십시오 ->이 파일을 처리하기 전에 Excel에서 중복을 제거합니다. arules는 중복이 발견되면 오류를 던집니다. 오류가 발생하여 arules이 오류를 발생시킵니다.

또 다른 방법은 항목 집합에 duplicated()를 사용하고 unique()을 사용하여 복제본을 제거하는 것입니다.

또는 더 간단한 방법은 작은, 독립적 인 예를 제공하기 위해 SO

Association analysis with duplicate transactions using arules package in R

4

확인, 검색 및 내가 찾을 수있는 모든 PDF 파일을 읽는 시간 후, 나는 마침내 DATA MINING Desktop Survival Guide by Graham Williams:

read.transactions에서 답 (토록 연역적/바구니 분석의 가장 도움이 연습을!) 발견을 함수는 트랜잭션 ID와 행당 하나의 항목이있는 파일에서 데이터를 읽을 수도 있습니다 (format = "single"옵션 사용).

그래서 가져온 후에 모든 변환 작업을 수행 할 필요가 없었습니다. 원래 "csv"파일에서 "basket"대신 "single"형식 옵션을 지정하여 곧바로 가져와야했습니다. 또한 파일에 이 포함되어 있는지 확인하고이라는 항목 이름이없고 항목 유형과 고유 한 표현이 주문 번호와 쌍을 이루는 지 확인해야했습니다 (예 : 사람이 "식료품 종류"카테고리에서 두 항목을 주문한 경우이를 표시해야 함). 한 행에). cols=c(2,1) 옵션은 열 1에 주문 번호가 있고 열 2가 나머지 데이터 (ItemType)임을 나타냅니다.

tr <- read.transactions(file='dataset.csv', format='single', sep=',', cols=c(2,1))