2016-10-25 5 views
2

현재 R의 문제를 해결하고 있습니다. 데이터 세트에 분류 트리를 적용하고 싶지만 이미 Weka를 사용하여 동일한 문제를 해결 했으므로 결과가 잘못되었습니다. 나는 다른 결과를 얻었다. 의사 결정 트리 분석 문제

나는 다음과 같은 csv 파일에 포함 된 데이터 세트를 가지고 :

age,menopause,tumor.size,inv.nodes,node.caps,deg.malig,breast,breast.quad,irradiat,class 
40-49,premeno,15-19,0-2,yes,3,right,left_up,no,recurrence-events 
50-59,ge40,15-19,0-2,no,1,right,central,no,no-recurrence-events 
50-59,ge40,35-39,0-2,no,2,left,left_low,no,recurrence-events 
40-49,premeno,35-39,0-2,yes,3,right,left_low,yes,no-recurrence-events 
40-49,premeno,30-34,3-5,yes,2,left,right_up,no,recurrence-events 

을 그리고 이것은 스크립트입니다 : 당신이 R 내 코드에서 여기 무작위 표본을 선택한

#Open r file 
cancer = read.csv("cancer.csv") 
#Data Exploration 
summary(cancer) 
str(cancer) 
#Divide into test and train sets 
set.seed(1234) 
ind <- sample(2, nrow(cancer), replace=TRUE, prob=c(0.7, 0.3)) 
trainData <- cancer[ind==1,] 
testData <- cancer[ind==2,] 
#Build the model 
library(party) 
cancermodel <- class ~ age + menopause + tumor.size + inv.nodes + node.caps + deg.malig + breast + breast.quad + irradiat 
cancertree <- ctree(cancermodel,trainData) 
table(predict(cancertree),trainData$class) 
#Draw tree 
plot(cancertree, type="simple") 
#Testset 
testPred <- predict(cancertree, newdata = testData) 
table(testPred, testData$class) 
+3

왜이 동일해야? – rawr

+0

두 알고리즘 (결정 트리) – Zak

+0

에 적용한 것과 동일한 알고리즘과 임의로 샘플링 한 교육 및 테스트 데이터가 동일해야하기 때문에? – rawr

답변

1

: < - 샘플 (2, nrow (암), replace = TRUE, prob = c (0.7, 0.3))

Weka에서 어떻게 동일한 무작위 샘플을 복제하고 사용 했습니까? 나무는 매우 비 모델이며 다양한 데이터 파일에 따라 빠르게 달라질 수 있습니다.

2

의사 결정 트리는 R (tree, rpart, party) 및 Weka (J48, LMT, DecisionStump)에서 많은 알고리즘 구현을 가지며 서로 다른 알고리즘은 동일한 데이터 세트에서 서로 다른 의사 결정 트리를 생성합니다 게인/지니 인덱스, 카이 제곱 통계에 의한 가설 테스트 사용).

주어진 알고리즘조차도 다른 입력 매개 변수 (잘라 내기/잘라 내지 않음, 분할 할 노드의 최소 # 데이터 포인트 등)가있는 다른 결정 트리를 생성합니다.

또한 @RomRom이 지적한 것처럼 의사 결정 트리는 훈련 데이터의 약간의 변경으로 인해 서로 다른 트리를 모두 출력 할 수 있다는 점에서 매우 견고한 모델이 아닙니다.

위의 내용을 모두 염두에두고 R과 Weka에서 동일한 의사 결정 트리를 만드는 것은 어렵습니다. 가능한 경우에도 모델 매개 변수를 신중하게 조정해야하므로 많은 실험이 필요할 수 있습니다.

다음은 몇 가지 R 의사 결정 트리 모델 및 RWeka 의사 결정 트리 모델을 사용하는 홍채 데이터 세트의 예입니다 (그려진 나무에서 볼 수 있듯이, 다른 모델은 동일한 교육 데이터 세트 아이리스로 다른 트리를 생성 함).

library(RWeka) 
m1 <- J48(Species ~ ., data = iris) 
if(require("partykit", quietly = TRUE)) plot(m1) 

enter image description here

library(rpart) 
m2 <- rpart(Species ~ ., data = iris) 
library(rpart.plot) 
prp(m2) 

enter image description here

library(party) 
m3 <- ctree(Species ~ ., data = iris) 
plot(m3) 

enter image description here