在R的插入符号包中使用adaboost

时间:2013-10-11 17:04:19

标签: r machine-learning data-mining classification adaboost

我一直在使用ada R套餐,最近一直使用caret。根据文档,caret的{​​{1}}函数应该有一个使用ada的选项。但是,当我使用与train()电话中相同的语法时,插入符号正在嘲笑我。

以下是使用ada()示例数据集的演示。

wine

我猜测火车()需要额外的输入,但是抛出的警告并没有给我任何关于缺失的提示。另外,我可能会错过一个依赖项,但没有暗示应该在那里......

4 个答案:

答案 0 :(得分:2)

查找?train并搜索ada您会看到:

Method Value: ada from package ada with tuning parameters: iter, maxdepth, nu (classification only)

因此,您必须错过nu参数和maxdepth参数。

答案 1 :(得分:2)

所以这似乎有效:

wineTrainInd <- wine_train[!colnames(wine_train) %in% "good"]
wineTrainDep <- as.factor(wine_train$good)

results_ada = train(x = wineTrainInd, y = wineTrainDep, method="ada")

results_ada
Boosted Classification Trees 

5199 samples
   9 predictors
   2 classes: 'Bad', 'Good' 

No pre-processing
Resampling: Bootstrapped (25 reps) 

Summary of sample sizes: 5199, 5199, 5199, 5199, 5199, 5199, ... 

Resampling results across tuning parameters:

  iter  maxdepth  Accuracy  Kappa  Accuracy SD  Kappa SD
  50    1         0.732     0.397  0.00893      0.0294  
  50    2         0.74      0.422  0.00853      0.0187  
  50    3         0.747     0.437  0.00759      0.0171  
  100   1         0.736     0.411  0.0065       0.0172  
  100   2         0.742     0.428  0.0075       0.0173  
  100   3         0.748     0.442  0.00756      0.0158  
  150   1         0.737     0.417  0.00771      0.0184  
  150   2         0.745     0.435  0.00851      0.0198  
  150   3         0.752     0.449  0.00736      0.016   

Tuning parameter 'nu' was held constant at a value of 0.1
Accuracy was used to select the optimal model using  the largest value.
The final values used for the model were iter = 150, maxdepth = 3 and nu
 = 0.1.

原因在于另一个问题:

caret::train: specify model-generation-parameters

我认为当train试图自己找到最佳调整参数时,您将调整参数作为参数传递。如果您确实想要定义自己的参数,可以为网格搜索定义参数网格。

答案 2 :(得分:1)

wine$good中的数据类型是什么?如果它是factor,请尝试明确提及它是:

wine$good <- as.factor(wine$factor)
stopifnot(is.factor(wine$good))

原因:通常,R包需要一些帮助来区分分类与回归场景,并且在插入符中可能存在一些通用代码,这些代码可能错误地将该练习识别为回归问题(忽略了ada仅进行分类的事实) )。

答案 3 :(得分:0)

请在tuneGrid中包含参数

Grid <- expand.grid(maxdepth=25,nu=2,iter=100)
results_ada = train(good~., data=wine_train, method="ada",
trControl=cv_opts,tuneGrid=Grid)

这样可行。