交叉验证概述

交叉验证

交叉验证(Cross-validation)主要用于建模应用中,例如PCR 、PLS 回归建模中。在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预报,并求这小部分样本的预报误差,记录它们的平方加和。

中文名
交叉验证
外文名
Cross validation
实    质
建模应用中
特    点
PCR 、PLS 回归建模中

目录

  1. 1 概念
  2. 2 基本思想
  3. 3 目的
  1. 4 常见的交叉验证形式
  2. ? Holdout 验证
  1. ? K-fold cross-validation
  2. ? 留一验证

交叉验证概念

这个过程一直进行,直到所有的样本都被预报了一次而且仅被预报一次。把每个样本的预报误差平方加和,称为PRESS(predicted Error Sum of Squares)。

交叉验证基本思想

交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标.

交叉验证目的

用交叉验证的目的是为了得到可靠稳定的模型。在建立PCR 或PLS 模型时,一个很重要的因素是取多少个主成分的问题。用cross validation 校验每个主成分下的PRESS值,选择PRESS值小的主成分数。或PRESS值不再变小时的主成分数。

常用的精度测试方法主要是交叉验证,例如10折交叉验证(10-fold cross validation),将数据集分成十份,轮流将其中9份做训练1份做验证,10次的结果的均值作为对算法精度的估计,一般还需要进行多次10折交叉验证求均值,例如:10次10折交叉验证,以求更精确一点。

交叉验证有时也称为交叉比对,如:10折交叉比对

交叉验证常见的交叉验证形式

交叉验证Holdout 验证

常识来说,Holdout 验证并非一种交叉验证,因为数据并没有交叉使用。 随机从最初的样本中选出部分,形成交叉验证数据,而剩余的就当做训练数据。 一般来说,少于原本样本三分之一的数据被选做验证数据。

交叉验证K-fold cross-validation

K折交叉验证,初始采样分割成K个子样本,一个单独的子样本被保留作为验证模型的数据,其他K-1个样本用来训练。交叉验证重复K次,每个子样本验证一次,平均K次的结果或者使用其它结合方式,最终得到一个单一估测。这个方法的优势在于,同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次,10折交叉验证是最常用的。

交叉验证留一验证

正如名称所建议, 留一验证(LOOCV)意指只使用原本样本中的一项来当做验证资料, 而剩余的则留下来当做训练资料。 这个步骤一直持续到每个样本都被当做一次验证资料。 事实上,这等同于和K-fold 交叉验证是一样的,其中K为原本样本个数。 在某些情况下是存在有效率的演算法,如使用kernel regression 和Tikhonov regularization。

当假设空间含有不同复杂度(如不同参数数量)的模型时,就要进行模型选择。如果过度追求在训练数据集上误差小的模型,那么选出来的模型在测试数据集上的误差就可能很大,此时模型过拟合了训练数据集,图1显示了训练误差和测试误差与模型复杂度之间的关系。

所以模型选择时应特别注意防止过拟合,本文首先回顾了过拟合,之后介绍防止过拟合常用的方法之一——交叉验证。

过拟合

若训练得到的模型的复杂度超过真实模型的复杂度,就称发生了过拟合,反之为欠拟合。过拟合发生的原因是训练数据集中存在随机噪声和确定性噪声。

(注:图片来自 Tutorial Slides by  Andrew Moore)

交叉验证

交叉验证(Cross-validation,CV) 目的:检测和预防过拟合

交叉验证方法 优点 缺点
Test-set 计算开销小 无法评估模型泛化能力
Leave-one-out cross validation(LOOCV) 不浪费数据 计算开销大
k-fold cross validation 计算开销相对LOOCV小 浪费1/k的数据

Test-set 将数据集中的全部数据用于模型训练,不考虑模型验证,选择训练集上误差最小的模型为最优模型,易产生过拟合。 LOOCV (Leave-one-out Cross Validation)

下图示例了使用LOOCV方法对线性回归、二次回归、直接点连接模型进行选择的过程.从大小为n的数据集中抽出一个作为模型验证样本,其他的(n-1)个样本用于模型训练,这样对于线性拟合、二次拟合、点连接三种模型分别有n个模型和对应得3个的均方误差(MSE),选择均方差最小 的,即二次拟合为最优模型。

线性拟合 二次拟合 点连接

k-fold cross validation

以k=3为例,下图示例了使用3-fold交叉验证的方法对线性回归、二次回归、直接点连接模型进行选择的过程,数据集被随机划分为3份,其中2份用来训练模型,1份用来验证,这样针对线性、二次拟合、点连接模型分别有3个训练好的模型和均方误差(MSE),选择均方差最小 的,即二次拟合为最优模型。

线性拟合 二次拟合 点连接
时间: 2024-10-27 01:52:04

交叉验证概述的相关文章

Sklearn-CrossValidation 交叉验证

1. 交叉验证概述 进行模型验证的一个重要目的是要选出一个最合适的模型,对于监督学习而言,我们希望模型对于未知数据的泛化能力强,所以就需要模型验证这一过程来体现不同的模型对于未知数据的表现效果. 最先我们用训练准确度(用全部数据进行训练和测试)来衡量模型的表现,这种方法会导致模型过拟合:为了解决这一问题,我们将所有数据分成训练集和测试集两部分,我们用训练集进行模型训练,得到的模型再用测试集来衡量模型的预测表现能力,这种度量方式叫测试准确度,这种方式可以有效避免过拟合. 测试准确度的一个缺点是其样

训练模型:交叉验证

一.基本概述 用交叉验证的目的是为了得到可靠稳定的模型. 消除测试集与训练集选择的不好,导致训练的模型不好. 二.k折交叉验证 K折交叉验证,初始采样分割成K个子样本,一个单独的子样本被保留作为验证模型的数据,其他K-1个样本用来训练.交叉验证重复K次,每个子样本验证一次,平均K次的结果或者使用其它结合方式,最终得到一个单一估测. 这个方法的优势在于,同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次,10折交叉验证是最常用的. k 折交叉验证通过对 k 个不同分组训练的结果进行平均

用交叉验证改善模型的预测表现

预测模型为何无法保持稳定? 让我们通过以下几幅图来理解这个问题: 此处我们试图找到尺寸(size)和价格(price)的关系.三个模型各自做了如下工作: 第一个模型使用了线性等式.对于训练用的数据点,此模型有很大误差.这样的模型在初期排行榜和最终排行榜都会表现不好.这是"拟合不足"("Under fitting")的一个例子.此模型不足以发掘数据背后的趋势. 第二个模型发现了价格和尺寸的正确关系,此模型误差低/概括程度高. 第三个模型对于训练数据几乎是零误差.这是因

机器学习 libsvm交叉验证与网格搜索(参数选择)

首先说交叉验证. 交叉验证(Cross validation)是一种评估统计分析.机器学习算法对独立于训练数据的数据集的泛化能力(generalize), 能够避免过拟合问题. 交叉验证一般要尽量满足: 1)训练集的比例要足够多,一般大于一半 2)训练集和测试集要均匀抽样 交叉验证主要分成以下几类: 1)Double cross-validation Double cross-validation也称2-fold cross-validation(2-CV),作法是将数据集分成两个相等大小的子集

交叉验证Cross-Validation

PRML中首章绪论的模型选择,提到两个方法: 1.交叉验证(Cross-Validation) 2.赤池信息准则(Akaike Information Criterion),简称:AIC. 交叉验证是模型选择的一种方法,若有模型选择问题,就可以用交叉验证.例如做线性回归,你有 10 个变量,就有 (2的10次方=)1024 个模型需要选择,就可以使用交叉验证 或者 AIC. 使用交叉验证是从预测的角度去做,使用 AIC 是从模型的复杂度与模型的拟合角度去做. 交叉验证: (ref-baidu :

『cs231n』作业1问题1选讲_通过代码理解K近邻算法&交叉验证选择超参数参数

通过K近邻算法探究numpy向量运算提速 茴香豆的"茴"字有... ... 使用三种计算图片距离的方式实现K近邻算法: 1.最为基础的双循环 2.利用numpy的broadca机制实现单循环 3.利用broadcast和矩阵的数学性质实现无循环 图片被拉伸为一维数组 X_train:(train_num, 一维数组) X:(test_num, 一维数组) 方法验证 import numpy as np a = np.array([[1,1,1],[2,2,2],[3,3,3]]) b

交叉验证(Cross Validation)原理小结

交叉验证是在机器学习建立模型和验证模型参数时常用的办法.交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏.在此基础上可以得到多组不同的训练集和测试集,某次训练集中的某样本在下次可能成为测试集中的样本,即所谓"交叉". 那么什么时候才需要交叉验证呢?交叉验证用在数据不是很充足的时候.比如在我日常项目里面,对于普通适中问题,如果数据样本量小于一万条,我们就会采用交叉验证来训练优化选择模型.如果样本

一篇文章,带你明白什么是过拟合,欠拟合以及交叉验证

误差模型:过拟合,交叉验证,偏差-方差权衡 作者Natasha Latysheva;Charles Ravarani 发表于cambridgecoding 介绍 ??在本文中也许你会掌握机器学习中最核心的概念:偏差-方差权衡.其主要想法是,你想创建尽可能预测准确并且仍能适用于新数据的模型(这是泛化).危险的是,你可以轻松的在你制定的数据中创建过度拟合本地噪音的模型,这样的模型是无用的,并且导致弱泛化能力,因为噪声是随机的,故而在每个数据集中是不同的.从本质上讲,你希望创建仅捕获数据集中有用成份的

R: Kriging interpolation and cross validation 克里金插值及交叉验证浅析

克里金插值的基本介绍可以参考ARCGIS的帮助文档[1]. 其本质就是根据已知点的数值,确定其周围点(预测点)的数值.最直观的方法就是找到已知点和预测点数值之间的关系,从而预测出预测点的数值.比如IDW插值方法,就是假设已知点和预测点的值跟它们相对距离成反比.克里金插值的精妙之处在于它不仅考虑了已知点和预测点的距离关系,还考虑了这些已知点之间的自相关关系. 如何衡量已知点之间的自相关关系呢?通常使用的就是半变异函数,其公式如下[1]: Semivariogram(distance h) = 0.