R 决策树分析问题

R 决策树分析问题,r,tree,classification,data-mining,j48,R,Tree,Classification,Data Mining,J48,我目前正在研究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 5

我目前正在研究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)
#打开r文件
cancer=read.csv(“cancer.csv”)
#数据探索
总结(癌症)
str(癌症)
#分为测试组和列车组
种子集(1234)

ind您在R中的代码中选择了一个随机样本:ind决策树在R(tree、rpart、party)和Weka(J48、LMT、DecisionStump)中有许多不同的算法实现,不同的算法可能会在同一数据集上生成不同的决策树(一些通过最大化信息增益/基尼指数进行工作,一些使用卡方统计的假设检验)

甚至任何给定的算法都会产生具有不同输入参数的不同决策树(修剪/未运行、要分割的节点中的最小数据点等)

此外,正如@RomRom所指出的,决策树不是一个非常健壮的模型,因为训练数据中的细微变化可能会输出一个完全不同的树

记住所有这些,在R和Weka中生成相同的决策树是很困难的,即使可以,也必须非常仔细地调整模型参数,这可能需要大量的实验

以下是iris数据集的示例,其中包含一些R决策树模型和RWeka决策树模型(从绘制的树可以看出,不同的模型使用相同的训练数据集iris生成不同的树)

库(RWeka)

m1为什么它们应该是相同的?因为这是我在两种情况下应用的相同算法(决策树)你随机抽取的训练和测试数据应该是相同的吗?不完全相同,但通常应该会有一些变化。样本是同质的……癌症的大小是多少?为什么随机分配班级状态的结果会产生类似的模型?
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)