极速理解ML交叉验证

  • 10/02 10:55

交叉验证(Cross Validation)是验证分类器(你训练的模型)性能的一种统计分析方法。其基本思想是在某种意义下将原始训练数据进行分组,训练集和验证集。所以对于一个大数据集,一般我们会把它按照 6:2:2 分成训练集、验证集和测试集(简易的机器学习过程会省去验证集)。

首先用训练集对模型进行训练,再利用验证集来测试训练得到的模型,以此来初步评价模型的性能(注意!交叉验证还是处于训练的阶段,不是测试阶段)。
常见的交叉验证方法包括简单交叉验证K折交叉验证留一法交叉验证留P法交叉验证

简单交叉验证

就是上面最简单的概念,将训练数据分为训练集和验证集,训练集训练模型,验证集验证模型,验证得到的准确率就是模型的性能指标。

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split( data, target, test_size=.4, random_state=0 )

K折交叉验证(K-Fold)

将训练数据分为K组(一般是均分),然后将每个子集数据分别做一次验证集,其余K-1组子集当作训练集,所以会进行K次交叉验证,得到K个模型,将K个模型最终的验证准确率取平均值,作为模型的性能指标,通常设K大于或等于3。

from sklearn.model_selection import KFold
kf = KFold(n_splits = 10) # k取10

留一法交叉验证(LOO-CV)

留一法交叉验证(leave-one-out cross validation)就是K折交叉验证里K=N的情况,就是每个子集只由一个样本数据组成,N个样本数据,所以会进行N次交叉验证,得到N个模型,将N个模型最终的验证准确率取平均值,作为模型的性能指标。

from sklearn.model_selection import LeaveOneOut
loo = LeaveOneOut()

留P法交叉验证(LPO-CV)

留P法交叉验证(leave-p-out cross validation)则是从数据集中留下P个数据点作为验证集,而其他的数据用作训练集。这个过程会遍历所有可能的训练集/验证集分割方式。如果数据集有N个样本,那么将会有从N个样本中选出P个样本的组合方式,对于每一种组合,训练一次模型并评估一次性能。由于组合数可能非常大,这种方法在计算上通常非常昂贵,特别是当数据集的大小相对于P来说较大时。

from sklearn.model_selection import LeavePOut
lpo = LeavePOut(p=5) #p取5
人工客服
(售后/吐槽/合作/交友)

相关资讯

  1. 1.
  2. 2.
  3. 3.
  4. 4.
  5. 5.
  6. 6.
  7. 7.
  8. 8.
  9. 9.
  10. 10.
  11. 11.
  12. 12.
  13. 13.
  14. 14.
  15. 15.
  16. 16.
  17. 17.
  18. 18.
  19. 19.
  20. 20.
查看全部20条内容