【问题标题】:Using r and weka. How can I use meta-algorithms along with nfold evaluation method?使用 r 和 weka。如何将元算法与 nfold 评估方法一起使用?
【发布时间】:2011-04-21 18:02:00
【问题描述】:

这是我的问题的一个例子

library(RWeka)
iris <- read.arff("iris.arff")

执行 nfolds 以获得分类器的正确精度。

m<-J48(class~., data=iris)
e<-evaluate_Weka_classifier(m,numFolds = 5)
summary(e)

这里提供的结果是通过使用数据集的一部分构建模型并使用另一部分测试获得的,因此提供了准确的精度

现在我执行 AdaBoost 来优化分类器的参数

m2 <- AdaBoostM1(class ~. , data = temp ,control = Weka_control(W = list(J48, M = 30)))
summary(m2)

这里提供的结果是通过使用相同的数据集来构建模型和用于评估它的相同数据集获得的,因此准确性不代表我们使用其他实例由模型评估的现实生活中的精度.不过,此过程有助于优化构建的模型。

主要问题是我无法优化构建的模型,同时使用未用于构建模型的数据进行测试,或者仅使用 nfold 验证方法以获得适当的准确性。

【问题讨论】:

  • 我格式化了你的问题。您可能想尝试 stats.stackexchange.com 来解决您的问题。
  • e2
  • 非常感谢 Joris 格式化问题。
  • e2

标签: r machine-learning data-mining weka


【解决方案1】:

我猜你误解了 evaluate_Weka_classifier 的功能。在这两种情况下,evaluate_Weka_classifier 仅根据训练数据进行交叉验证。它不会改变模型本身。比较以下代码的混淆矩阵:

m<-J48(Species~., data=iris)
e<-evaluate_Weka_classifier(m,numFolds = 5)
summary(m)
e


m2 <- AdaBoostM1(Species ~. , data = iris ,
       control = Weka_control(W = list(J48, M = 30)))
e2 <- evaluate_Weka_classifier(m2,numFolds = 5)
summary(m2)
e2

在这两种情况下,摘要都会根据训练数据为您提供评估,而evaluate_Weka_classifier() 函数会为您提供正确的交叉验证。无论是对于 J48 还是对于 AdaBoostM1,模型本身都会根据交叉验证进行更新。

现在关于 AdaBoost 算法本身:事实上,它确实使用某种“加权交叉验证”来得出最终分类器。错误分类的项目在下一个构建步骤中被赋予更大的权重,但评估是对所有观察使用相同的权重完成的。因此,使用交叉验证来优化结果并不真正符合自适应提升算法背后的总体思路。

如果您想使用训练集和评估集进行真正的交叉验证,您可以执行以下操作:

id <- sample(1:length(iris$Species),length(iris$Species)*0.5)
m3 <- AdaBoostM1(Species ~. , data = iris[id,] ,
      control = Weka_control(W = list(J48, M=5)))

e3 <- evaluate_Weka_classifier(m3,numFolds = 5)
# true crossvalidation
e4 <- evaluate_Weka_classifier(m3,newdata=iris[-id,])

summary(m3)
e3
e4

如果您想要一个基于交叉验证更新的模型,您将不得不使用不同的算法,例如 randomForest 包中的randomForest()。这收集了一组基于交叉验证的最优树。它也可以与 RWeka 包结合使用。

edit :为真正的交叉验证更正了代码。使用subset 参数对evaluate_Weka_classifier() 也有效。

【讨论】:

  • 非常感谢您提供的所有信息,您的回复非常好,我真的很感激。
猜你喜欢
  • 2020-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 2016-09-06
  • 1970-01-01
相关资源
最近更新 更多