Дерево решений Проблема анализа

В настоящее время я работаю над проблемой с 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

а это скрипт:

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

person Zak    schedule 25.10.2016    source источник
comment
почему они должны быть одинаковыми?   -  person rawr    schedule 25.10.2016
comment
потому что это тот же алгоритм, который я применил в обоих случаях (дерево решений)   -  person Zak    schedule 25.10.2016
comment
и ваши случайно выбранные данные обучения и тестирования, должны ли они быть одинаковыми?   -  person rawr    schedule 25.10.2016
comment
Не совсем, но обычно должно быть некоторое сходство. пробы однородны...   -  person Zak    schedule 25.10.2016
comment
Какой размер у cancer? И почему результаты случайного присвоения статуса класса должны давать аналогичную модель?   -  person IRTFM    schedule 25.10.2016


Ответы (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)

введите описание изображения здесь

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

введите описание изображения здесь

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

введите описание изображения здесь

person Sandipan Dey    schedule 25.10.2016

вы выбрали случайную выборку здесь, в своем коде в R: ind ‹- sample(2, nrow(рак), replace=TRUE, prob=c(0,7, 0,3))

как вы воспроизвели и использовали ту же случайную выборку в Weka? деревья являются очень ненадежными моделями и могут быстро меняться в зависимости от файлов данных.

person RomRom    schedule 25.10.2016