1、交叉验证
1.1概念
交叉验证的核心思想:对数据集进行多次划分,对多次评估的结果取平均,从而消除单次划分时数据划分得不平衡而造成的不良影响。因为这种不良影响在小规模数据集上更容易出现,所以交叉验证方法在小规模数据集上更能体现出优势。
将数据集划分为n份,依次使用其中1份作为测试集,其他n-1份作为训练集,多次计算模型的准确性
交叉验证用于评估模型的预测性能,尤其是训练好的模型在新数据上的表,可以在一定程度上减小过拟合。
2、目的:
模型评估(周志华《机器学习》p24)和模型选择。
- 模型评估
数据集被划分成训练集、测试集两部分,训练集和测试集的划分采用N折交叉的方式。
交叉验证的优势在于:
避免由于数据集划分不合理而导致的问题,比如模型在训练集上过拟合,这种过拟合可能不是模型导致的,而是因为数据集划分不合理造成的。这种情况在用小规模数据集训练模型时很容易出现,所以在小规模数据集上用交叉验证的方法评估模型更有优势。
原文链接:https://blog.csdn.net/qq_40305043/article/details/115352782
可以看成是模型选择过程中的一个步骤:先对候选的每个模型进行评估,再选出评估表现最好的模型作为最终模型。把这种策略用于划分训练集和测试集,就可以进行模型评估;
- 模型选择
模型选择,也可以称为超参数选择。数据集需要划分成训练集、验证集、测试集三部分,训练集和验证集的划分采用N折交叉的方式。
验证集是在训练过程中用于检验模型的训练情况,从而确定合适的超参数;
测试集是在训练结束之后,测试模型的泛化能力。
把这种策略用于划分训练集和验证集,就可以进行模型选择。
交叉重复的使用数据集分为训练集和测试集,这次用于训练集,下次可能用于测试集。一般用在数据量不是很充条件下,评估模型好坏。
如果样本大于一万条的话,我们一般随机的把数据分成三份,一份为训练集(Training Set),一份为验证集(Validation Set),最后一份为测试集(Test Set)。
用训练集来训练模型,
用验证集来评估模型预测的好坏和选择模型及其对应的参数。
把最终得到的模型再用于测试集,最终决定使用哪个模型以及对应参数。
简单:30%测试集,70%训练集
3、交叉验证与过拟合的关系
交叉验证通过寻找最佳模型的方式来解决过拟合,通过训练集和测试集,通过调整不同的分布,而正则化则是通过约束参数的范数来解决过拟合。
当用交叉验证进行模型选择时,可以从多种模型中选择出泛化能力最好的(即最不容易发生过拟合)的模型。从这个角度上讲,交叉验证是避免发生过拟合的手段。同样是解决过拟合的方法,交叉验证与正则化不同:
4. 交叉验证的优缺点
- 优点:
获得对模型更合理更准确的评估,尤其是数据集很小时,更能体现出这个优势。
- 缺点:
增加了计算量。
5. 交叉验证的使用场景
如果当前有多个候选模型,想从中选出一个最合适的模型,就可以用交叉验证的方法进行模型选择,尤其是当数据集很小时。
如果当前只有一个模型,想获得对这个模型的performance最客观的评估,就可以用交叉验证的方法进行模型评估,尤其是当数据集很小时。
五、实例代码
import numpy as np
from sklearn import datasets
from sklearn.cross_validation import train_test_split
#train_test_split进行数据切分
#X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
from sklearn.neighbors import KNeighborsClassifier
from sklearn.cross_validation import cross_val_score
def main():
# 加载iris数据集
iris = datasets.load_iris()
# 读取特征
X = iris.data
# 读取分类标签
y = iris.target
# 定义分类器,k近邻选择为5
knn = KNeighborsClassifier(n_neighbors = 5)
# 进行交叉验证数据评估, 数据分为5部分, 每次用一部分作为测试集
scores = cross_val_score(knn, X, y, cv = 5, scoring = 'accuracy')
# 输出5次交叉验证的准确率
print(scores)
if __name__ == '__main__':
main()
#最后输出结果
#[ 0.96666667 1. 0.93333333 0.96666667 1. ]
参考:https://blog.csdn.net/weixin_42691585/article/details/113971857