横梁

使用交叉验证损失估计

句法

vals = crossval(乐趣,x)
vals = crossval(乐趣,x,y,...)
MSE = Crossval('MSE',X,Y,'Predfun',Predfun)
MCR = Crossval('MCR',X,Y,'Predfun',Predfun)
val = crossval(标准,x1,x2,...,y,'predfun',predfun)
vals = crossval(...,'名称',价值

描述

vals = crossval(乐趣,x)对功能执行10倍交叉验证乐趣,应用于数据X

乐趣是具有两个输入功能的函数处理,训练子集XXTrain.,以及测试子集XXTest., 如下:

testval =有趣(xtrain,xtest)

每次被称为,乐趣应该使用XTrain.要适合模型,然后返回一些标准testval.计算在XTest.使用该拟合模型。

X可以是列向量或矩阵。行X对应观察;列对应于变量或功能。每一排val包含申请结果乐趣一个测试集。如果testval.是非标量值,横梁使用线性索引将其转换为行向量并存储在一行中val

vals = crossval(乐趣,x,y,...)当数据存储在单独的变量中时使用Xy,......所有变量(列向量,矩阵或数组)必须具有相同数量的行。乐趣用训练子集调用Xy,......,后跟测试子集Xy, ... , 如下:

testvals = fun(xtrain,ytrain,...,xtest,ytest,......)

MSE = Crossval('MSE',X,Y,'Predfun',Predfun)回报MSE,一个标量包含一个10倍的交叉验证估计的函数的平均误差预先X可以是列向量,矩阵或预测器数组。y是响应值的列向量。Xy必须具有相同数量的行。

预先是函数句柄调用训练子集X,训练子集y,以及测试子集X如下:

Yfit = Predfun(Xtrain,Ytrain,XTest)

每次被称为,预先应该使用XTrain.ytrain.适合回归模型,然后在列向量中返回拟合值YFIT.。每一排YFIT.包含相应行的预测值XTest.横梁计算之间的平方误差YFIT.和相应的响应测试集,并返回所有测试集中的整体均值。

MCR = Crossval('MCR',X,Y,'Predfun',Predfun)回报MCR.,一个标量包含10倍交叉验证估计的错误分类率(错误分类样本的比例)的功能预先。矩阵X包含预测值值和向量y包含类标签。预先应该使用XTrain.ytrain.适合分类模型并返回YFIT.作为预测的类标签XTest.横梁计算之间的错误分类次数YFIT.和相应的响应测试集,并返回所有测试集的整体错误分类率。

val = crossval(标准,x1,x2,...,y,'predfun',predfun), 在哪里标准'妈妈'或者'MCR',返回具有预测值值的平均平均错误(用于回归模型)或错误分类率(用于分类模型)的交叉验证估计X1X2,......以及分别,响应值或类标签yX1X2, ... 和y必须具有相同数量的行。预先是一个函数句柄调用训练子集X1X2,......,训练子集y,以及测试子集X1X2, ..., 如下:

YFIT = Predfun(X1Train,X2Train,...,Ytrain,X1Test,X2Test,......)

YFIT.应该是包含拟合值的列向量。

vals = crossval(...,'名称',价值指定下表中的一个或多个可选参数名称/值对。指定名称在单引号内。

名称 价值
坚持

标量指定比例或观察数量P.用于阻止交叉验证。什么时候0.<P.<1, 大约P * N.随机选择测试集的观察。什么时候P.是一个整数,P.随机选择测试集的观察。

kfold.

正整数大于1,指定折叠数量K.为了K.- 折扣交叉验证。

忽略

指定休假交叉验证。价值必须是1

mcreps.

一个正整数,指定验证的Monte-Carlo重复的数量。如果是第一个输入横梁'妈妈'或者'MCR'横梁返回所有Monte-Carlo重复的平均平均误差或错误分类率的平均值。除此以外,横梁连接价值val来自第一维的所有Monte-Carlo重复。

划分

一个东西CCVPartition.类,指定交叉验证类型和分区。

分层

柱矢量团体指定分层的组。培训和测试集都具有大致相同的类比例团体s,空字符向量,空字符串,<缺失>价值观<未定义>价值团体被视为缺少数据值,忽略相应的数据行。

选项

一个指定是否并行运行的结构,并指定随机流或流。创造选项结构与实例化。选项字段:

  • 使用指α.- 调成真的并行计算。默认为错误的

    您需要并行计算工具箱™进行并行计算。

  • Userumstreams.- 调成真的以可重复的方式并行计算。默认为错误的。计算可重复的,设置溪流允许子流的类型:'mlfg6331_64'或者'MRG32K3A'

  • 溪流- 一种randstream.由一个这样的物体组成的对象或单元阵列。如果您未指定溪流横梁使用默认流。

只有一个kfold.坚持忽略, 或者划分可以指定,和划分无法指定分层。如果两者划分mcreps.指定了,第一个Monte-Carlo重复使用分区信息CVPartition.对象,和重新开始调用方法以为每个剩余重复生成新分区。如果未指定交叉验证类型,则默认值为10倍交叉验证。

笔记

使用与分类算法的交叉验证时,优选分层。否则,某些测试集可能不包括来自所有类的观察。

例子

例1

使用10倍交叉验证计算回归的均值平衡误差:

加载('渔业');Y = MEAS(:,1);x = [尺寸(尺寸(y,1),1),meas(:,2:4)];Regf = @(xtrain,ytrain,xtest)(xtest * forgent(ytrain,xtrain));CVMSE = Crossval('MSE',X,Y,'Predfun',Regf)CVMSE = 0.1015

例2.

使用分层10倍交叉验证计算错误分类率:

加载('渔业');y =物种;x = meas;Cp = CVPartition(Y,'K',10);%分层交叉验证classf = @(xtrain,ytrain,xtest)(分类(xtest,xtrain,... ytrain));cvmcr =横跨('mcr',x,y,'predfun',classf,'partition',cp)cvmcr = 0.0200

例3.

使用分层10倍交叉验证计算混淆矩阵:

加载('渔业');y =物种;x = meas;订单=独特(Y);Group标签CP = CVPartition的%顺序(Y,'K',10);%分层交叉验证f = @(xtr,ytr,xte,yte)confusionmat(yte,...分类(xte,xtr,YTR),'订单',订单);CFMAT = Crossval(f,x,y,'分区',cp);CFMAT = REPAPE(SUM(CFMAT),3,3)CFMAT = 50 0 0 0 48 2 0 1 49

CFMAT.是10个测试集的10个混淆矩阵的总和。

参考

[1] Hastie,T.,R. Tibshirani和J. Friedman。统计学习的要素。纽约:斯普林斯,2001年。

扩展能力

也可以看看

话题

在R2008A介绍