主要内容

使用并行计算实施交叉验证

简单平行交叉验证

在此示例中,使用杂交计算回归模型的于点误差的交叉验证估计。并行运行计算。

mypool = parpool()使用“本地”配置文件...连接到2位工人。mypool =带有属性的池:actactedfiles:{0x1 cell} numworkers:2 idletimeout:30 cluster:[1x1 Parallel.Cluster.Cluster.local] requestSuequequequequequequequequequequequequequeue:[1x1 Parallel.RequeStequeue] spmenabled:1
opts = statset('useparallel',true);负载('Fisheriris');y = meas(:,1);x = [hons(size(y,1),1),mes(:,2:4)];regf =@(xtrain,ytrain,xtest)(xtest*recress(ytrain,xtrain));cvmse = crossVal('MSE',x,y,'prepfun',regf,'options',opts)cvmse = 0.1028

这个简单的示例不是并行计算的好候选者:

%在串行中计算多长时间?tic; cvmse = crossVal('mse',x,y,'predfun',regf); toc经过的时间为0.073438秒。%平行计算多长时间?tic; cvmse = crossVal('mse',x,y,'predfun',regf,...'options',opts); toc过去的时间为0.289585秒。

可重复的平行交叉验证

跑步杂交以可重复的方式并行,设置选项并适当地重置随机流(请参阅运行可重现的并行计算)。

mypool = parpool()使用“本地”配置文件...连接到2位工人。mypool =带有属性的池:actactedfiles:{0x1 cell}数字工人:2 idletimeout:30 cluster:[1x1 Parallel.Cluster.local] requestSuequequequequequequequequequeue:[1x1 Parallel.RequeStqueSqueue] spmenabled:1 s = randstream('mlfgg63331_64''mlfgg63331_64'');opts = statset('useparallel',true,...'streams',s,'useubstreams',true);负载('Fisheriris');y = meas(:,1);x = [hons(size(y,1),1),mes(:,2:4)];regf =@(xtrain,ytrain,xtest)(xtest*recress(ytrain,xtrain));CVMSE = CrossVal('MSE',X,Y,'Predfun',regf,'options',opts)cvmse = 0.1020

重置流:

重置(S)CVMSE = CrossVal('MSE',X,Y,'Predfun',regf,'options',opts)cvmse = 0.1020