在交叉验证中,留一法和普通交叉验证的区别?

使用评估方法的动机

通过实验测试来对学习器的泛化误差进行评估并进而做出选择。

评估方法 主要分三种:

  • 留出法(分一次 互斥集)
  • 交叉验证法(分多次 对k折形成多次互斥集)
  • 自助法(有放回抽样)

读西瓜书,其实对其认识还是很模糊,不知道具体的应用场景
主要参考:https://dataminingguide.books.yourtion.com/chapter-5/chapter-5-2.html

留出法 只一次,随机性太大,说服力不强

交叉验证 每一个样本数据都即被用作训练数据,也被用作测试数据。避免的过度学习和欠学习状态的发生,得到的结果比较具有说服力。

那么交叉验证中 普通 和 留一 有什么区别呢?

下面以留一法为主体介绍优缺点:

优点

  1. 我们用几乎所有的数据进行训练,然后用一个数据进行测试
  2. 确定性

确定性
实验没有随机因素,整个过程是可重复的。

比如十折验证,你测两次,结果是不一样的

而你用留一法测多少次都是一样的

缺点

  1. 计算时间很长
  2. 分层问题

分层问题

让我们回到运动员分类的例子——判断女运动员参与的项目是篮球、体操、还是田径。

在训练分类器的时候,我们会试图让训练集包含全部三种类别。如果我们完全随机分配,训练集中有可能会不包含篮球运动员,在测试的时候就会影响结果。

比如说,我们来构建一个包含100个运动员的数据集:从女子NBA网站上获取33名篮球运动员的信息,到Wikipedia上获取33个参加过2012奥运会体操项目的运动员,以及34名田径运动员的信息。

现在我们来做十折交叉验证。我们按顺序将这些运动员放到10个桶中,所以前三个桶放的都是篮球运动员,第四个桶有篮球运动员也有体操运动员,以此类推。

这样一来,没有一个桶能真正代表这个数据集的全貌。最好的方法是将不同类别的运动员按比例分发到各个桶中,这样每个桶都会包含三分之一篮球运动员、三分之一体操运动员、以及三分之一田径运动员。

这种做法叫做分层。而在留一法中,所有的测试集都只包含一个数据。所以说,留一法对小数据集是合适的,但大多数情况下我们会选择十折交叉验证。

你可能感兴趣的:(ML)