使用重采样

时间:2016-07-13 15:03:40

标签: machine-learning cross-validation resampling

我一直在尝试深入了解重采样方法的细节,并在1000行的小数据集上实现它们。数据分为800个训练集和200个验证集。我使用K-fold交叉验证和重复的K-fold交叉验证来训练KNN使用训练集。根据我的理解,我对结果做了一些解释 - 但是,我对它们有一些疑问(见下面的问题):

结果: 10折Cv

Resampling: Cross-Validated (10 fold) 
Summary of sample sizes: 720, 720, 720, 720, 720, 720, ... 
Resampling results across tuning parameters:

  k  Accuracy  Kappa     
  5  0.6600    0.07010791
  7  0.6775    0.09432414
  9  0.6800    0.07054371

Accuracy was used to select the optimal model using  the largest value.
The final value used for the model was k = 9.

重复10次,重复10次

Resampling results across tuning parameters:

  k  Accuracy  Kappa     
  5  0.670250  0.10436607
  7  0.676875  0.09288219
  9  0.683125  0.08062622

Accuracy was used to select the optimal model using  the largest value.
The final value used for the model was k = 9.

10倍,1000次重复

  k  Accuracy   Kappa     
  5  0.6680438  0.09473128
  7  0.6753375  0.08810406
  9  0.6831800  0.07907891

Accuracy was used to select the optimal model using  the largest value.
The final value used for the model was k = 9. 

10次,重复2000次

  k  Accuracy   Kappa     
  5  0.6677981  0.09467347
  7  0.6750369  0.08713170
  9  0.6826894  0.07772184

质疑

  1. 选择参数时,K=9是获得最高精度的最佳值。但是,我不明白在最终选择参数值时如何考虑Kappa

  2. 重复数必须增加,直到我们得到稳定的结果,当重复从10增加到1000时,准确度会发生变化。但是,结果类似于1000次重复和2000次重复。将1000/2000重复的结果考虑为稳定的绩效估计是否正确?

  3. 重复号码的任何拇指规则?

  4. 最后,我应该在完整的训练数据(800行)上训练模型,现在测试验证集的准确性吗?

1 个答案:

答案 0 :(得分:0)

  1. AccuracyKappa只是不同的分类效果指标。简而言之,它们的区别在于Accuracy does not take possible class imbalance into account在计算指标时while Kappa does。因此,对于不平衡的类,最好使用Kappa。使用R caret,您可以通过train::metric参数执行此操作。

  2. 在运行时,您可以看到效果略有不同的效果10CV多次重复10次 - 你也会得到略有不同的结果。您应该注意的是分区和重复的分类性能的方差。如果您获得较小的差异,您可以通过对所有数据进行培训来推导出您,您可能会获得一个模型,该模型将为您提供与新数据相似(因此稳定)的结果。但是,如果你获得了巨大的差异,你可以偶然得出(幸运或不幸),你可能会获得一个模型,要么在新数据上给你相当好或相当差的表现。 BTW:预测性能差异是例如R caret::train会自动给你,因此我建议你使用它。

  3. 见上文:查看差异并增加重复次数,直到您可以重复整个过程并获得类似的平均性能和性能差异。

  4. 是的,存在CV和重新采样方法,为您提供信息,了解您的模型对新数据的执行情况。因此,在执行简历和重新取样并获取此信息后,您通常会使用所有数据来训练您在自己的数据中使用的最终模型。应用场景(包括火车和测试分区!)。