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

这是脚本:

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

2 回答 2

2

决策树在 R(tree、rpart、party)和 Weka(J48、LMT、DecisionStump)中有许多不同的算法实现,不同的算法可能会在同一数据集上产生不同的决策树(一些通过最大化信息增益/基尼指数来工作) ,一些使用带有卡方统计的假设检验)。

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

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

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

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

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)

在此处输入图像描述

于 2016-10-25T08:34:31.127 回答
1

您在 R 中的代码中在这里选择了一个随机样本: ind <- sample(2, nrow(cancer), replace=TRUE, prob=c(0.7, 0.3))

你是如何在 Weka 中复制和使用相同的随机样本的?树是非常不稳健的模型,并且可以随着不同的数据文件快速变化。

于 2016-10-25T07:59:58.257 回答