机器学习:常见交叉验证(cross-validation)
Posted 挂科难
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习:常见交叉验证(cross-validation)相关的知识,希望对你有一定的参考价值。
交叉验证
交叉验证(cross-validation)
交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏。在此基础上可以得到多组不同的训练集和测试集,某次训练集中的某样本在下次可能成为测试集中的样本,即所谓“交叉”。 是评估泛化性能的统计学方法,比单次划分训练集和测试集的方法更稳定,全面。数据集被多次划分,并且需要训练多个模型。
k折交叉验证(k-fold cross-validation)
也称S折交叉验证(S-Folder Cross Validation)
首先将数据划分成(大致)相等的5部分,每一部分叫做**折(fold)**使用一折作为测试集,其他折作为训练集。
scikit-learn中默认是五折交叉验证,当然也可以用cv参数修改。
from sklearn.svm import SVC
from sklearn.model_selection import cross_val_score
svm = SVC()
svm_scores = cross_val_score(svm, X, y) # 返回一个含五个数的列表
print('svm的5折交叉验证平均值:', svm_scores.mean())
简单交叉验证
所谓的简单,是和其他交叉验证方法相对而言的
首先,我们随机的将样本数据分为两部分(比如: 70%的训练集,30%的测试集),然后用训练集来训练模型,在测试集上验证模型及参数。
接着,我们再把样本打乱,重新选择训练集和测试集,继续训练数据和检验模型。最后我们选择损失函数评估最优的模型和参数。
留一交叉验证(Leave-one-out Cross Validation)
该方法是k折交叉验证的特殊情况,主要用于样本量非常少的情况,样本数N <= 50.
我们令K 等于样本数N,每次选择1个样本来验证预测模型的好坏,剩余N-1个样本用于训练。
以上是关于机器学习:常见交叉验证(cross-validation)的主要内容,如果未能解决你的问题,请参考以下文章